USING "arcade_cabinet_minigame_common.sch" USING "arcade_games_help_text.sch" USING "arcade_games_help_text_flow.sch" USING "degenatron_games_movie.sch" USING "net_arcade_cabinet.sch" //----------------------- // CONSTANTS //----------------------- // Overscan Constants CONST_FLOAT cfGAME_OVERSCAN_MIN_X 300.0 CONST_FLOAT cfGAME_OVERSCAN_MAX_X 1620.0 CONST_FLOAT cfGAME_OVERSCAN_MIN_Y 50.0 CONST_FLOAT cfGAME_OVERSCAN_MAX_Y 1030.0 CONST_FLOAT cfGAME_OVERSCAN_WIDTH 1320.0 CONST_FLOAT cfGAME_OVERSCAN_HEIGHT 980.0 CONST_FLOAT cfGAME_HUD_MINIMAP_X 600.0 CONST_FLOAT cfGAME_HUD_MINIMAP_Y 780.0 CONST_FLOAT cfGAME_HUD_MINIMAP_WIDTH 320.0 CONST_FLOAT cfGAME_HUD_MINIMAP_HEIGHT 240.0 CONST_FLOAT cfGAME_SCREEN_WIDTH 1264.0 CONST_FLOAT cfGAME_SCREEN_HEIGHT 930.0 CONST_FLOAT cfLEFT_SCREEN_LIMIT 250.0 CONST_FLOAT cfRIGHT_SCREEN_LIMIT 1605.0 CONST_FLOAT cfCMHDZ_DEFAULT_ANIM_FRAME_TIME 33.0 //30 FPS CONST_FLOAT cfCMHDZ_SLOW_ANIM_FRAME_TIME 165.0 //15 FPS CONST_FLOAT cfCMHDZ_PSA_SCREEN_WIDTH 1260.0 CONST_FLOAT cfCMHDZ_PSA_SCREEN_HEIGHT 920.0 CONST_FLOAT cfCMHDZ_MIN_EDITOR_X_COORD -800.0 CONST_FLOAT cfCMHDZ_MAX_EDITOR_X_COORD 25000.0 CONST_FLOAT cfCMHDZ_MIN_EDITOR_Y_COORD -600.0 CONST_FLOAT cfCMHDZ_MAX_EDITOR_Y_COORD 2500.0 // Sprite Size Constants CONST_FLOAT cfCMHDZ_ENEMY_SPRITE_WIDTH 164.0 CONST_FLOAT cfCMHDZ_ENEMY_SPRITE_HEIGHT 236.0 CONST_FLOAT cfCMHDZ_ENEMY_THROWING_SPRITE_WIDTH 164.0 CONST_FLOAT cfCMHDZ_ENEMY_THROWING_SPRITE_HEIGHT 236.0 CONST_FLOAT cfCMHDZ_ENEMY_DEAD_SPRITE_WIDTH 164.0 CONST_FLOAT cfCMHDZ_ENEMY_DEAD_SPRITE_HEIGHT 236.0 CONST_FLOAT cfCMHDZ_ENEMY_FOREGROUND_SPRITE_WIDTH 376.0 CONST_FLOAT cfCMHDZ_ENEMY_FOREGROUND_SPRITE_HEIGHT 536.0 CONST_FLOAT cfCMHDZ_ENEMY_FOREGROUND_DEAD_SPRITE_WIDTH 452.0 CONST_FLOAT cfCMHDZ_ENEMY_FOREGROUND_DEAD_SPRITE_HEIGHT 540.0 CONST_FLOAT cfCMHDZ_ENEMY_FOREGROUND_HERD_SPRITE_WIDTH 960.0 CONST_FLOAT cfCMHDZ_ENEMY_FOREGROUND_HERD_SPRITE_HEIGHT 720.0 CONST_FLOAT cfCMHDZ_ENEMY_CART_SPRITE_WIDTH 536.0 CONST_FLOAT cfCMHDZ_ENEMY_CART_SPRITE_HEIGHT 404.0 // BG Constants CONST_FLOAT cfCMHDZ_BG_HORIZON_Y_COORD 370.0 CONST_FLOAT cfCMHDZ_BG_CITY_SKYLINE_SPRITE_WIDTH 276.0 CONST_FLOAT cfCMHDZ_BG_CITY_SKYLINE_SPRITE_HEIGHT 180.0 CONST_FLOAT cfCMHDZ_BG_CITY_TALL_BUILDING_SPRITE_WIDTH 196.0 CONST_FLOAT cfCMHDZ_BG_CITY_TALL_BUILDING_SPRITE_HEIGHT 280.0 CONST_FLOAT cfCMHDZ_BG_CITY_SMALL_BUILDING_SPRITE_WIDTH 328.0 CONST_FLOAT cfCMHDZ_BG_CITY_SMALL_BUILDING_SPRITE_HEIGHT 280.0 CONST_FLOAT cfCMHDZ_BG_CITY_FENCE_SPRITE_WIDTH 276.0 CONST_FLOAT cfCMHDZ_BG_CITY_FENCE_SPRITE_HEIGHT 92.0 CONST_FLOAT cfCMHDZ_BG_CITY_BUILDING_SPACING 340.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD_X 723.750 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD_Y 193.750 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD_GAP 100.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD1_WIDTH 188.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD1_HEIGHT 56.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD2_WIDTH 96.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD2_HEIGHT 32.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD3_WIDTH 112.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD3_HEIGHT 60.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD4_WIDTH 304.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD4_HEIGHT 60.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD5_WIDTH 252.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD5_HEIGHT 20.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD6_WIDTH 140.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD6_HEIGHT 44.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD7_WIDTH 128.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CLOUD7_HEIGHT 44.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_FENCE_SPRITE_WIDTH 276.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_FENCE_SPRITE_HEIGHT 112.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_ROCKS_SPRITE_WIDTH 40.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_ROCKS_SPRITE_HEIGHT 40.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_TREES_SPRITE_WIDTH 276.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_TREES_SPRITE_HEIGHT 156.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_TREES_Y 290.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_VAN_SPRITE_WIDTH 184.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_VAN_SPRITE_HEIGHT 144.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_VAN_SPACING 256.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CARS_SPRITE_WIDTH 424.0 CONST_FLOAT cfCMHDZ_BG_SCRAPYARD_CARS_SPRITE_HEIGHT 128.0 CONST_FLOAT cfCMHDZ_BG_THEMEPARK_SKYLINE_SPRITE_WIDTH 1232.0 CONST_FLOAT cfCMHDZ_BG_THEMEPARK_SKYLINE_SPRITE_HEIGHT 212.0 CONST_FLOAT cfCMHDZ_BG_THEMEPARK_TREES_SPRITE_WIDTH 276.0 CONST_FLOAT cfCMHDZ_BG_THEMEPARK_TREES_SPRITE_HEIGHT 156.0 CONST_FLOAT cfCMHDZ_BG_THEMEPARK_TREE_1_SPRITE_WIDTH 236.0 CONST_FLOAT cfCMHDZ_BG_THEMEPARK_TREE_1_SPRITE_HEIGHT 392.0 CONST_FLOAT cfCMHDZ_BG_THEMEPARK_TREE_2_SPRITE_WIDTH 200.0 CONST_FLOAT cfCMHDZ_BG_THEMEPARK_TREE_2_SPRITE_HEIGHT 238.0 CONST_FLOAT cfCMHDZ_MOUNTAIN_1_SPRITE_WIDTH 1300.0 CONST_FLOAT cfCMHDZ_MOUNTAIN_1_SPRITE_HEIGHT 112.0 CONST_FLOAT cfCMHDZ_MOUNTAIN_1_SPRITE_X 788.125 CONST_FLOAT cfCMHDZ_MOUNTAIN_1_SPRITE_Y 315.0 CONST_FLOAT cfCMHDZ_MOUNTAIN_2_SPRITE_WIDTH 272.0 CONST_FLOAT cfCMHDZ_MOUNTAIN_2_SPRITE_HEIGHT 112.0 // Asset Size CONST_FLOAT cfCMHDZ_CITY_BUILDING_SPRITE_WIDTH 468.0 CONST_FLOAT cfCMHDZ_CITY_BUILDING_SPRITE_HEIGHT 444.0 CONST_FLOAT cfCMHDZ_SCRAPYARD_MD_VAN_SPRITE_WIDTH 408.0 CONST_FLOAT cfCMHDZ_SCRAPYARD_MD_VAN_SPRITE_HEIGHT 320.0 CONST_FLOAT cfCMHDZ_SCRAPYARD_MD_CAR_SPRITE_WIDTH 500.0 CONST_FLOAT cfCMHDZ_SCRAPYARD_MD_CAR_SPRITE_HEIGHT 212.0 CONST_FLOAT cfCMHDZ_ASYLUM_MD_BED_SPRITE_WIDTH 340.0 CONST_FLOAT cfCMHDZ_ASYLUM_MD_BED_SPRITE_HEIGHT 164.0 CONST_FLOAT cfCMHDZ_ASYLUM_MD_WHEELCHAIR_SPRITE_WIDTH 156.0 CONST_FLOAT cfCMHDZ_ASYLUM_MD_WHEELCHAIR_SPRITE_HEIGHT 148.0 CONST_FLOAT cfCMHDZ_ASYLUM_MD_MATTRESS_SPRITE_WIDTH 452.0 CONST_FLOAT cfCMHDZ_ASYLUM_MD_MATTRESS_SPRITE_HEIGHT 220.0 CONST_FLOAT cfCMHDZ_ASYLUM_LIGHT_SPRITE_WIDTH 236.0 CONST_FLOAT cfCMHDZ_ASYLUM_LIGHT_SPRITE_HEIGHT 68.0 CONST_FLOAT cfCMHDZ_ASYLUM_RADIATOR_SPRITE_WIDTH 160.0 CONST_FLOAT cfCMHDZ_ASYLUM_RADIATOR_SPRITE_HEIGHT 92.0 CONST_FLOAT cfCMHDZ_ASYLUM_DOOR_SPRITE_WIDTH 150.0 CONST_FLOAT cfCMHDZ_ASYLUM_DOOR_SPRITE_HEIGHT 204.0 CONST_FLOAT cfCMHDZ_ASYLUM_GRAF_1_SPRITE_WIDTH 100.0 CONST_FLOAT cfCMHDZ_ASYLUM_GRAF_1_SPRITE_HEIGHT 112.0 CONST_FLOAT cfCMHDZ_ASYLUM_GRAF_2_SPRITE_WIDTH 184.0 CONST_FLOAT cfCMHDZ_ASYLUM_GRAF_2_SPRITE_HEIGHT 92.0 CONST_FLOAT cfCMHDZ_ASYLUM_GRAF_3_SPRITE_WIDTH 148.0 CONST_FLOAT cfCMHDZ_ASYLUM_GRAF_3_SPRITE_HEIGHT 100.0 CONST_FLOAT cfCMHDZ_THEMEPARK_BUILDING_1_SPRITE_WIDTH 408.0 CONST_FLOAT cfCMHDZ_THEMEPARK_BUILDING_1_SPRITE_HEIGHT 400.0 CONST_FLOAT cfCMHDZ_THEMEPARK_BUILDING_3_SPRITE_WIDTH 596.0 CONST_FLOAT cfCMHDZ_THEMEPARK_BUILDING_3_SPRITE_HEIGHT 452.0 CONST_FLOAT cfCMHDZ_THEMEPARK_CLOWNBOARD_1_SPRITE_WIDTH 276.0 CONST_FLOAT cfCMHDZ_THEMEPARK_CLOWNBOARD_1_SPRITE_HEIGHT 344.0 CONST_FLOAT cfCMHDZ_THEMEPARK_CLOWNBOARD_2_SPRITE_WIDTH 436.0 CONST_FLOAT cfCMHDZ_THEMEPARK_CLOWNBOARD_2_SPRITE_HEIGHT 464.0 CONST_FLOAT cfCMHDZ_ROCK_TOP_SPRITE_WIDTH 284.0 CONST_FLOAT cfCMHDZ_ROCK_TOP_SPRITE_HEIGHT 100.0 CONST_FLOAT cfCMHDZ_WOODENSTRUCTURE_SPRITE_WIDTH 312.0 CONST_FLOAT cfCMHDZ_WOODENSTRUCTURE_SPRITE_HEIGHT 304.0 CONST_FLOAT cfCMHDZ_THEMEPARK_MINECART_TRACK_SPRITE_WIDTH 284.0 CONST_FLOAT cfCMHDZ_THEMEPARK_MINECART_TRACK_SPRITE_HEIGHT 36.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_DOOR_01_SPRITE_WIDTH 140.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_DOOR_01_SPRITE_HEIGHT 210.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_DOOR_02_SPRITE_WIDTH 140.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_DOOR_02_SPRITE_HEIGHT 210.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_WINDOW_SPRITE_WIDTH 200.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_WINDOW_SPRITE_HEIGHT 200.0 CONST_FLOAT cfCMHDZ_BACKGROUND_TOMBS_SPRITE_WIDTH 540.0 CONST_FLOAT cfCMHDZ_BACKGROUND_TOMBS_SPRITE_HEIGHT 84.0 CONST_FLOAT cfCMHDZ_CACTUS_1_SPRITE_WIDTH 168.0 CONST_FLOAT cfCMHDZ_CACTUS_1_SPRITE_HEIGHT 288.0 CONST_FLOAT cfCMHDZ_CACTUS_2_SPRITE_WIDTH 168.0 CONST_FLOAT cfCMHDZ_CACTUS_2_SPRITE_HEIGHT 408.0 CONST_FLOAT cfCMHDZ_CACTUS_3_SPRITE_WIDTH 120.0 CONST_FLOAT cfCMHDZ_CACTUS_3_SPRITE_HEIGHT 540.0 CONST_FLOAT cfCMHDZ_CACTUS_9_SPRITE_WIDTH 112.0 CONST_FLOAT cfCMHDZ_CACTUS_9_SPRITE_HEIGHT 236.0 CONST_FLOAT cfCMHDZ_SCRAPYARD_PROP_FENCE_SPRITE_WIDTH 276.0 CONST_FLOAT cfCMHDZ_SCRAPYARD_PROP_FENCE_SPRITE_HEIGHT 112.0 CONST_FLOAT cfCMHDZ_SCRAPYARD_BG_CARS_SPRITE_WIDTH 428.0 CONST_FLOAT cfCMHDZ_SCRAPYARD_BG_CARS_SPRITE_HEIGHT 128.0 CONST_FLOAT cfCMHDZ_BUILDING_1_SPRITE_WIDTH 564.0 CONST_FLOAT cfCMHDZ_BUILDING_1_SPRITE_HEIGHT 452.0 CONST_FLOAT cfCMHDZ_BUILDING_2_SPRITE_WIDTH 412.0 CONST_FLOAT cfCMHDZ_BUILDING_2_SPRITE_HEIGHT 400.0 CONST_FLOAT cfCMHDZ_FENCE_SPRITE_WIDTH 376.0 CONST_FLOAT cfCMHDZ_FENCE_SPRITE_HEIGHT 196.0 //CONST_FLOAT cfCMHDZ_FENCE_SMALL_SPRITE_WIDTH 92.0 //CONST_FLOAT cfCMHDZ_FENCE_SMALL_SPRITE_HEIGHT 24.0 CONST_FLOAT cfCMHDZ_ROCKS_SPRITE_WIDTH 36.0 CONST_FLOAT cfCMHDZ_ROCKS_SPRITE_HEIGHT 36.0 CONST_FLOAT cfCMHDZ_FOREST_ROCKS_SPRITE_WIDTH 40.0 CONST_FLOAT cfCMHDZ_FOREST_ROCKS_SPRITE_HEIGHT 40.0 CONST_FLOAT cfCMHDZ_FOREST_TREE_1_SPRITE_WIDTH 472.0 CONST_FLOAT cfCMHDZ_FOREST_TREE_1_SPRITE_HEIGHT 784.0 CONST_FLOAT cfCMHDZ_FOREST_TREE_2_SPRITE_WIDTH 400.0 CONST_FLOAT cfCMHDZ_FOREST_TREE_2_SPRITE_HEIGHT 656.0 CONST_FLOAT cfCMHDZ_FOREST_TREE_3_SPRITE_WIDTH 236.0 CONST_FLOAT cfCMHDZ_FOREST_TREE_3_SPRITE_HEIGHT 392.0 CONST_FLOAT cfCMHDZ_FOREST_TREE_4_SPRITE_WIDTH 200.0 CONST_FLOAT cfCMHDZ_FOREST_TREE_4_SPRITE_HEIGHT 238.0 CONST_FLOAT cfCMHDZ_FOREST_GRASS_SPRITE_WIDTH 288.0 CONST_FLOAT cfCMHDZ_FOREST_GRASS_SPRITE_HEIGHT 204.0 CONST_FLOAT cfCMHDZ_FOREST_BUSH_SM_SPRITE_WIDTH 120.0 CONST_FLOAT cfCMHDZ_FOREST_BUSH_SM_SPRITE_HEIGHT 80.0 CONST_FLOAT cfCMHDZ_FOREST_BUSH_LG_SPRITE_WIDTH 212.0 CONST_FLOAT cfCMHDZ_FOREST_BUSH_LG_SPRITE_HEIGHT 140.0 CONST_FLOAT cfCMHDZ_ROCK_SMALL_SPRITE_WIDTH 164.0 CONST_FLOAT cfCMHDZ_ROCK_SMALL_SPRITE_HEIGHT 92.0 CONST_FLOAT cfCMHDZ_ROCK_LARGE_SPRITE_WIDTH 288.0 CONST_FLOAT cfCMHDZ_ROCK_LARGE_SPRITE_HEIGHT 160.0 CONST_FLOAT cfCMHDZ_FOREGROUND_TRASH_SPRITE_WIDTH 680.0 CONST_FLOAT cfCMHDZ_FOREGROUND_TRASH_SPRITE_HEIGHT 240.0 CONST_FLOAT cfCMHDZ_BARRIER_SPRITE_WIDTH 336.0 CONST_FLOAT cfCMHDZ_BARRIER_SPRITE_HEIGHT 208.0 CONST_FLOAT cfCMHDZ_BARRELS_SPRITE_WIDTH 236.0 CONST_FLOAT cfCMHDZ_BARRELS_SPRITE_HEIGHT 184.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_HANGING_BODYBAG_1_SPRITE_WIDTH 208.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_HANGING_BODYBAG_1_SPRITE_HEIGHT 440.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_HANGING_BODYBAG_2_SPRITE_WIDTH 104.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_HANGING_BODYBAG_2_SPRITE_HEIGHT 504.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_HANGING_BODYBAG_3_SPRITE_WIDTH 200.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_HANGING_BODYBAG_3_SPRITE_HEIGHT 504.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_BODYBAG_1_SPRITE_WIDTH 328.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_BODYBAG_1_SPRITE_HEIGHT 144.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_BODYBAG_2_SPRITE_WIDTH 328.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_BODYBAG_2_SPRITE_HEIGHT 100.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_HANGING_BODYBAG_6_SPRITE_WIDTH 140.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_HANGING_BODYBAG_6_SPRITE_HEIGHT 140.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_MEATGRINDER_SPRITE_WIDTH 504.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PROP_MEATGRINDER_SPRITE_HEIGHT 476.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PIG_SPRITE_WIDTH 188.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_PIG_SPRITE_HEIGHT 456.0 CONST_FLOAT cfCMHDZ_WATER_TOWER_SPRITE_WIDTH 360.0 CONST_FLOAT cfCMHDZ_WATER_TOWER_SPRITE_HEIGHT 376.0 //CONST_FLOAT cfCMHDZ_TNT_CRATE_SPRITE_WIDTH 192.0 //CONST_FLOAT cfCMHDZ_TNT_CRATE_SPRITE_HEIGHT 124.0 CONST_FLOAT cfCMHDZ_TNT_BARREL_1_SPRITE_WIDTH 140.0 CONST_FLOAT cfCMHDZ_TNT_BARREL_1_SPRITE_HEIGHT 176.0 CONST_FLOAT cfCMHDZ_TNT_BARREL_2_SPRITE_WIDTH 176.0 CONST_FLOAT cfCMHDZ_TNT_BARREL_2_SPRITE_HEIGHT 140.0 CONST_FLOAT cfCMHDZ_COFFIN_ENEMY_SPRITE_WIDTH 200.0 CONST_FLOAT cfCMHDZ_COFFIN_ENEMY_SPRITE_HEIGHT 248.0 CONST_FLOAT cfCMHDZ_TRASHBAG_BIG_SPRITE_WIDTH 132.0 CONST_FLOAT cfCMHDZ_TRASHBAG_BIG_SPRITE_HEIGHT 140.0 CONST_FLOAT cfCMHDZ_TRASHBAG_SMALL_SPRITE_WIDTH 76.0 CONST_FLOAT cfCMHDZ_TRASHBAG_SMALL_SPRITE_HEIGHT 80.0 CONST_FLOAT cfCMHDZ_TRASHCAN_BIG_SPRITE_WIDTH 132.0 CONST_FLOAT cfCMHDZ_TRASHCAN_BIG_SPRITE_HEIGHT 168.0 CONST_FLOAT cfCMHDZ_TRASHCAN_SMALL_SPRITE_WIDTH 76.0 CONST_FLOAT cfCMHDZ_TRASHCAN_SMALL_SPRITE_HEIGHT 96.0 CONST_FLOAT cfCMHDZ_SPRITE_BULLET_1_WIDTH 30.0 CONST_FLOAT cfCMHDZ_SPRITE_BULLET_1_HEIGHT 8.0 CONST_FLOAT cfCMHDZ_SPRITE_IMPACT_WIDTH 96.0 CONST_FLOAT cfCMHDZ_SPRITE_IMPACT_HEIGHT 96.0 CONST_FLOAT cfCMHDZ_SPRITE_EXPLOSION_WIDTH 408.0 CONST_FLOAT cfCMHDZ_SPRITE_EXPLOSION_HEIGHT 268.0 CONST_FLOAT cfCMHDZ_SPRITE_GANG_SHOT_WIDTH 128.0 CONST_FLOAT cfCMHDZ_SPRITE_GANG_SHOT_HEIGHT 128.0 CONST_FLOAT cfCMHDZ_SPRITE_DAMAGE_WIDTH 504.0 CONST_FLOAT cfCMHDZ_SPRITE_DAMAGE_HEIGHT 460.0 CONST_FLOAT cfCMHDZ_SPRITE_BEAR_DAMAGE_WIDTH 392.0 CONST_FLOAT cfCMHDZ_SPRITE_BEAR_DAMAGE_HEIGHT 612.0 CONST_FLOAT cfCMHDZ_SPRITE_GANG_THROWN_EXPLOSION_SMALL_WIDTH 412.0 CONST_FLOAT cfCMHDZ_SPRITE_GANG_THROWN_EXPLOSION_SMALL_HEIGHT 344.0 CONST_FLOAT cfCMHDZ_SPRITE_GANG_THROWN_EXPLOSION_LARGE_WIDTH 572.0 CONST_FLOAT cfCMHDZ_SPRITE_GANG_THROWN_EXPLOSION_LARGE_HEIGHT 504.0 CONST_FLOAT cfCMHDZ_SPRITE_LOOT_CRATE_EXPLOSION_WIDTH 356.0 CONST_FLOAT cfCMHDZ_SPRITE_LOOT_CRATE_EXPLOSION_HEIGHT 228.0 CONST_FLOAT cfCMHDZ_SPRITE_FEATHERS_WIDTH 204.0 CONST_FLOAT cfCMHDZ_SPRITE_FEATHERS_HEIGHT 116.0 CONST_INT ciCMHDZ_DYNAMITE_SMALL_WIDTH 76 CONST_INT ciCMHDZ_DYNAMITE_SMALL_HEIGHT 76 CONST_INT ciCMHDZ_DYNAMITE_MEDIUM_WIDTH 128 CONST_INT ciCMHDZ_DYNAMITE_MEDIUM_HEIGHT 128 CONST_INT ciCMHDZ_DYNAMITE_LARGE_WIDTH 284 CONST_INT ciCMHDZ_DYNAMITE_LARGE_HEIGHT 276 CONST_INT ciCMHDZ_MOLOTOV_SMALL_WIDTH 100 CONST_INT ciCMHDZ_MOLOTOV_SMALL_HEIGHT 60 CONST_INT ciCMHDZ_MOLOTOV_MEDIUM_WIDTH 164 CONST_INT ciCMHDZ_MOLOTOV_MEDIUM_HEIGHT 96 CONST_INT ciCMHDZ_MOLOTOV_LARGE_WIDTH 364 CONST_INT ciCMHDZ_MOLOTOV_LARGE_HEIGHT 208 CONST_INT ciCMHDZ_BRICK_SMALL_WIDTH 88 CONST_INT ciCMHDZ_BRICK_SMALL_HEIGHT 92 CONST_INT ciCMHDZ_BRICK_MEDIUM_WIDTH 128 CONST_INT ciCMHDZ_BRICK_MEDIUM_HEIGHT 116 CONST_INT ciCMHDZ_BRICK_LARGE_WIDTH 280 CONST_INT ciCMHDZ_BRICK_LARGE_HEIGHT 296 CONST_INT ciCMHDZ_NAILBOMB_SMALL_WIDTH 84 CONST_INT ciCMHDZ_NAILBOMB_SMALL_HEIGHT 76 CONST_INT ciCMHDZ_NAILBOMB_MEDIUM_WIDTH 148 CONST_INT ciCMHDZ_NAILBOMB_MEDIUM_HEIGHT 156 CONST_INT ciCMHDZ_NAILBOMB_LARGE_WIDTH 272 CONST_INT ciCMHDZ_NAILBOMB_LARGE_HEIGHT 244 CONST_FLOAT cfCMHDZ_SPRITE_MARKER_WIDTH 104.0 CONST_FLOAT cfCMHDZ_SPRITE_MARKER_HEIGHT 104.0 //CONST_FLOAT cfCMHDZ_SPEECH_SPRITE_WIDTH 116.0 //CONST_FLOAT cfCMHDZ_SPEECH_SPRITE_HEIGHT 96.0 CONST_FLOAT cfCMHDZ_ITEM_HEALTH_WIDTH 56.0 CONST_FLOAT cfCMHDZ_ITEM_HEALTH_HEIGHT 80.0 CONST_FLOAT cfCMHDZ_ITEM_SHIELD_WIDTH 56.0 CONST_FLOAT cfCMHDZ_ITEM_SHIELD_HEIGHT 80.0 CONST_FLOAT cfCMHDZ_ITEM_BUFF_WIDTH 56.0 CONST_FLOAT cfCMHDZ_ITEM_BUFF_HEIGHT 80.0 CONST_FLOAT cfCMHDZ_PICKUP_THROWABLE_WIDTH 100.0 CONST_FLOAT cfCMHDZ_PICKUP_THROWABLE_HEIGHT 64.0 CONST_FLOAT cfCMHDZ_PICKUP_COFFIN_OFFSET_X 21.375 CONST_FLOAT cfCMHDZ_PICKUP_COFFIN_OFFSET_Y 104.0 CONST_FLOAT cfCMHDZ_BCAKGROUND_TILE_WIDTH 276.0 CONST_FLOAT cfCMHDZ_LEVEL1_CLOUD_X 754.000 CONST_FLOAT cfCMHDZ_LEVEL1_CLOUD_Y 152.500 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD_X 723.750 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD_Y 193.750 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD_GAP 100.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD_X 723.750 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD_Y 193.750 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD_GAP 100.0 CONST_FLOAT cfCMHDZ_LEVEL1_CLOUD_WIDTH 1232.0 CONST_FLOAT cfCMHDZ_LEVEL1_CLOUD_HEIGHT 136.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD1_WIDTH 188.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD1_HEIGHT 56.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD2_WIDTH 96.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD2_HEIGHT 32.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD3_WIDTH 112.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD3_HEIGHT 60.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD4_WIDTH 304.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD4_HEIGHT 60.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD5_WIDTH 252.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD5_HEIGHT 20.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD6_WIDTH 140.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD6_HEIGHT 44.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD7_WIDTH 128.0 CONST_FLOAT cfCMHDZ_LEVEL2_CLOUD7_HEIGHT 44.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD1_WIDTH 188.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD1_HEIGHT 56.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD2_WIDTH 96.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD2_HEIGHT 32.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD3_WIDTH 112.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD3_HEIGHT 60.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD4_WIDTH 304.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD4_HEIGHT 60.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD5_WIDTH 252.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD5_HEIGHT 20.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD6_WIDTH 140.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD6_HEIGHT 44.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD7_WIDTH 128.0 CONST_FLOAT cfCMHDZ_LEVEL3_CLOUD7_HEIGHT 44.0 CONST_FLOAT cfCMHDZ_LEVEL3_BACKGROUND_TREES_WIDTH 276.0 CONST_FLOAT cfCMHDZ_LEVEL3_BACKGROUND_TREES_HEIGHT 156.0 CONST_FLOAT cfCMHDZ_LEVEL3_BACKGROUND_TREES_X 276.0 CONST_FLOAT cfCMHDZ_LEVEL3_BACKGROUND_TREES_Y 290.0 CONST_FLOAT cfCMHDZ_LEVEL4_BACKGROUND_SURFACE_WIDTH 276.0 CONST_FLOAT cfCMHDZ_LEVEL4_BACKGROUND_SURFACE_HEIGHT 100.0 CONST_FLOAT cfCMHDZ_LEVEL4_BACKGROUND_SURFACE_X 276.0 CONST_FLOAT cfCMHDZ_LEVEL4_BACKGROUND_SURFACE_Y 263.125 CONST_FLOAT cfCMHDZ_LEVEL4_BACKGROUND_ROCKS_WIDTH 276.0 CONST_FLOAT cfCMHDZ_LEVEL4_BACKGROUND_ROCKS_HEIGHT 120.0 CONST_FLOAT cfCMHDZ_LEVEL4_BACKGROUND_ROCKS_X 276.000 CONST_FLOAT cfCMHDZ_LEVEL4_BACKGROUND_ROCKS_Y 306.375 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_LIGHTS_WIDTH 636.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_LIGHTS_HEIGHT 68.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_LIGHT_X 1604.0 CONST_FLOAT cfCMHDZ_SLAUGHTERHOUSE_LIGHT_Y 100.0 CONST_FLOAT cfCMHDZ_BG_ENEMY_1_X_OFFSET -20.0 CONST_FLOAT cfCMHDZ_BG_ENEMY_1_Y_OFFSET -30.0 CONST_FLOAT cfCMHDZ_FG_ENEMY_1_X_OFFSET 18.0 CONST_FLOAT cfCMHDZ_FG_ENEMY_1_Y_OFFSET 58.0 // Frontend Constants CONST_FLOAT cfCMHDZ_HUD_MIN_X_POS 390.0 CONST_FLOAT cfCMHDZ_SPRITE_POSTER_MENU_WIDTH 276.0 CONST_FLOAT cfCMHDZ_SPRITE_POSTER_MENU_HEIGHT 376.0 //CONST_FLOAT cfCMHDZ_SPRITE_POSTER_SELECTION_WIDTH 500.0 //CONST_FLOAT cfCMHDZ_SPRITE_POSTER_SELECTION_HEIGHT 600.0 CONST_FLOAT cfCMHDZ_SPRITE_STAR_ICON_WIDTH 44.0 CONST_FLOAT cfCMHDZ_SPRITE_STAR_ICON_HEIGHT 48.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_HP_WIDTH 216.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_HP_HEIGHT 40.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_AMMO_WIDTH 64.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_AMMO_HEIGHT 64.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PISTOL_AMMO_SINGLE_WIDTH 24.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PISTOL_AMMO_SINGLE_HEIGHT 86.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_RIFLE_AMMO_SINGLE_WIDTH 28.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_RIFLE_AMMO_SINGLE_HEIGHT 96.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_SHOTGUN_AMMO_SINGLE_WIDTH 28.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_SHOTGUN_AMMO_SINGLE_HEIGHT 80.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PISTOL_AMMO_CLIP_WIDTH 96.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PISTOL_AMMO_CLIP_HEIGHT 96.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_SHOTGUN_AMMO_CLIP_WIDTH 96.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_SHOTGUN_AMMO_CLIP_HEIGHT 96.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_RIFLE_AMMO_CLIP_WIDTH 96.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_RIFLE_AMMO_CLIP_HEIGHT 96.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_NAILBOMB_AMMO_CLIP_WIDTH 52.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_NAILBOMB_AMMO_CLIP_HEIGHT 80.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_BRICK_AMMO_CLIP_WIDTH 96.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_BRICK_AMMO_CLIP_HEIGHT 96.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_MOLOTOV_AMMO_CLIP_WIDTH 64.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_MOLOTOV_AMMO_CLIP_HEIGHT 100.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_DYNAMITE_AMMO_CLIP_WIDTH 96.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_DYNAMITE_AMMO_CLIP_HEIGHT 96.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_AMMO_QTY_WIDTH 36.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_AMMO_QTY_HEIGHT 60.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_DOLLAR_WIDTH 32.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_DOLLAR_HEIGHT 36.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_MONEY_QTY_WIDTH 32.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_MONEY_QTY_HEIGHT 36.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_COWBOY_TITLE_WIDTH 412.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_COWBOY_TITLE_HEIGHT 640.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_COWBOY_DEAD_WIDTH 516.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_COWBOY_DEAD_HEIGHT 880.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_DEAD_SCREEN_TEXT_WIDTH 280.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_DEAD_SCREEN_TEXT_HEIGHT 228.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_RESULT_TEXT_WIDTH 400.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_RESULT_TEXT_HEIGHT 104.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_LOGO_WIDTH 536.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_LOGO_HEIGHT 276.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_START_WIDTH 252.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_START_HEIGHT 36.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_LEADERBOARDS_WIDTH 320.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_LEADERBOARDS_HEIGHT 36.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_REWIND_WIDTH 200.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_REWIND_HEIGHT 52.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_EJECT_WIDTH 200.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_EJECT_HEIGHT 52.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PIXTRO_LOGO_WIDTH 196.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PIXTRO_LOGO_HEIGHT 44.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_RELOAD_PROMPT_X 948.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_RELOAD_PROMPT_Y 540.375 CONST_FLOAT cfCMHDZ_SPRITE_HUD_RELOAD_PROMPT_WIDTH 576.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_RELOAD_PROMPT_HEIGHT 204.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_NO_AMMO_PROMPT_X 960.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_NO_AMMO_PROMPT_Y 540.375 CONST_FLOAT cfCMHDZ_SPRITE_HUD_NO_AMMO_PROMPT_WIDTH 308.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_NO_AMMO_PROMPT_HEIGHT 296.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PROGRESS_BAR_X 1538.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PROGRESS_BAR_Y 610.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PROGRESS_BAR_WIDTH 8.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PROGRESS_BAR_HEIGHT 600.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PROGRESS_MARKER_X 1538.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PROGRESS_MARKER_Y 910.0 // this is the base position CONST_FLOAT cfCMHDZ_SPRITE_HUD_PROGRESS_MARKER_WIDTH 32.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PROGRESS_MARKER_HEIGHT 42.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PROJECTILE_AMMO_X 424.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PROJECTILE_AMMO_Y 300.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PROJECTILE_AMMO_WIDTH 60.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_PROJECTILE_AMMO_HEIGHT 60.0 CONST_FLOAT cfCMHDZ_SPRITE_FINAL_SCENE_POSTER_X 1212.000 CONST_FLOAT cfCMHDZ_SPRITE_FINAL_SCENE_POSTER_Y 540.0 CONST_FLOAT cfCMHDZ_SPRITE_FINAL_SCENE_POSTER_WIDTH 687.0 CONST_FLOAT cfCMHDZ_SPRITE_FINAL_SCENE_POSTER_HEIGHT 698.0 CONST_FLOAT cfCMHDZ_SPRITE_FINAL_SCENE_TEXT_X 652.000 CONST_FLOAT cfCMHDZ_SPRITE_FINAL_SCENE_TEXT_Y 200.0 CONST_FLOAT cfCMHDZ_SPRITE_FINAL_SCENE_TEXT_WIDTH 660.0 CONST_FLOAT cfCMHDZ_SPRITE_FINAL_SCENE_TEXT_HEIGHT 360.000 CONST_FLOAT cfCMHDZ_SPRITE_HUD_HP_INDICATOR_X 400.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_HP_INDICATOR_Y 100.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_HP_INDICATOR_W 96.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_HP_INDICATOR_H 96.0 CONST_FLOAT cfCMHDZ_HP_X_POS 500.0 CONST_FLOAT cfCMHDZ_HP_Y_POS 130.0 CONST_FLOAT cfCMHDZ_NAILGUN_TEMP_BORDER_X_POS 447.375 CONST_FLOAT cfCMHDZ_NAILGUN_TEMP_BORDER_Y_POS 174.750 CONST_FLOAT cfCMHDZ_NAILGUN_TEMP_BORDER_WIDTH 108.0 CONST_FLOAT cfCMHDZ_NAILGUN_TEMP_BORDER_HEIGHT 40.0 CONST_FLOAT cfCMHDZ_AMMO_X_POS 420.0 CONST_FLOAT cfCMHDZ_AMMO_Y_POS 180.0 CONST_FLOAT cfCMHDZ_AMMO_QTY_1_X_POS 560.0// 475.0 CONST_FLOAT cfCMHDZ_AMMO_QTY_1_Y_POS 218.0//180.0 CONST_FLOAT cfCMHDZ_AMMO_QTY_2_X_POS 584.625 //515.0 CONST_FLOAT cfCMHDZ_AMMO_QTY_2_Y_POS 174.875 // 180.0 CONST_FLOAT cfCMHDZ_PROJECTILE_AMMO_QTY_1_X_POS 484.0// 475.0 CONST_FLOAT cfCMHDZ_PROJECTILE_AMMO_QTY_1_Y_POS 302.875//180.0 CONST_FLOAT cfCMHDZ_PROJECTILE_AMMO_QTY_2_X_POS 508.625 //515.0 CONST_FLOAT cfCMHDZ_PROJECTILE_AMMO_QTY_2_Y_POS 302.875 // 180.0 CONST_FLOAT cfCMHDZ_SINGLE_PISTOL_AMMO_0_X 535.0 CONST_FLOAT cfCMHDZ_SINGLE_PISTOL_AMMO_0_Y 216.0 CONST_FLOAT cfCMHDZ_SINGLE_PISTOL_AMMO_1_X 511.0 CONST_FLOAT cfCMHDZ_SINGLE_PISTOL_AMMO_2_X 487.0 CONST_FLOAT cfCMHDZ_SINGLE_PISTOL_AMMO_3_X 463.0 CONST_FLOAT cfCMHDZ_SINGLE_PISTOL_AMMO_4_X 439.0 CONST_FLOAT cfCMHDZ_SINGLE_PISTOL_AMMO_5_X 415.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_TIME_X 1550.0 CONST_FLOAT cfCMHDZ_SPRITE_HUD_TIME_Y 100.0 TWEAK_FLOAT cfCMHDZ_SPRITE_HUD_TIME_TEXT_X 420.0 TWEAK_FLOAT cfCMHDZ_SPRITE_HUD_TIME_TEXT_Y 30.0 CONST_INT ciCMHDZ_WAIT_FOR_DEAD_TIME 1500 //-- In-Game scores CONST_FLOAT cfCMHDZ_SCORE_GAP_DOLLAR_FIRST_DIGIT_X 105.5 CONST_FLOAT cfCMHDZ_SCORE_GAP_DOLLAR_TO_DOLLAR_X 282.5 CONST_FLOAT cfCMHDZ_MY_HISCORE_DOLLAR_X_SIZE 24.0 CONST_FLOAT cfCMHDZ_MY_HISCORE_DOLLAR_Y_SIZE 40.0 CONST_FLOAT cfCMHDZ_MY_HISCORE_X_DIGIT_SIZE 24.0 CONST_FLOAT cfCMHDZ_MY_HISCORE_Y_DIGIT_SIZE 40.0 CONST_FLOAT cfCMHDZ_SCORE_WIN_X_SIZE 52.0 CONST_FLOAT cfCMHDZ_SCORE_WIN_Y_SIZE 32.0 CONST_FLOAT cfCMHDZ_SCORE_WIN_RED_X_POS 864.0 CONST_FLOAT cfCMHDZ_SCORE_WIN_RED_Y_POS 130.0 CONST_FLOAT cfCMHDZ_SCORE_WIN_BLUE_X_POS 1430.0 CONST_FLOAT cfCMHDZ_SCORE_WIN_BLUE_Y_POS 130.0 CONST_FLOAT cfCMHDZ_MY_SCORE_DOLLAR_X_POS 634.5 CONST_FLOAT cfCMHDZ_MY_SCORE_DOLLAR_Y_POS 130.0 CONST_FLOAT cfCMHDZ_MY_SCORE_X_POS 740.0 CONST_FLOAT cfCMHDZ_MY_SCORE_Y_POS 130.0 CONST_FLOAT cfCMHDZ_RED_SCORE_DOLLAR_X_POS 634.5 CONST_FLOAT cfCMHDZ_RED_SCORE_DOLLAR_Y_POS 130.0 CONST_FLOAT cfCMHDZ_RED_SCORE_X_POS 740.0 CONST_FLOAT cfCMHDZ_RED_SCORE_Y_POS 130.0 CONST_FLOAT cfCMHDZ_MY_HISCORE_DOLLAR_X_POS 917.0 CONST_FLOAT cfCMHDZ_MY_HISCORE_DOLLAR_Y_POS 130.0 CONST_FLOAT cfCMHDZ_MY_HISCORE_X_POS 1022.5 CONST_FLOAT cfCMHDZ_MY_HISCORE_Y_POS 130.0 CONST_FLOAT cfCMHDZ_BLUE_SCORE_DOLLAR_X_POS 1199.5 CONST_FLOAT cfCMHDZ_BLUE_SCORE_DOLLAR_Y_POS 130.0 CONST_FLOAT cfCMHDZ_BLUE_SCORE_X_POS 1305.0 CONST_FLOAT cfCMHDZ_BLUE_SCORE_Y_POS 130.0 //-- Level select scores CONST_FLOAT cfCMHDZ_LEVEL_SCORE_SCALE 0.75 //-- Solo play hi-scores on wanted poster positions TWEAK_FLOAT cfCMHDZ_SOLO_LEVEL1_SCORE_X_POS 562.0 CONST_FLOAT cfCMHDZ_SOLO_LEVEL1_SCORE_Y_POS 560.0 TWEAK_FLOAT cfCMHDZ_SOLO_LEVEL2_SCORE_X_POS 946.0 TWEAK_FLOAT cfCMHDZ_SOLO_LEVEL3_SCORE_X_POS 1329.0 TWEAK_FLOAT cfCMHDZ_SOLO_LEVEL4_SCORE_X_POS 754.0 CONST_FLOAT cfCMHDZ_SOLO_LEVEL4_SCORE_Y_POS 964.0 TWEAK_FLOAT cfCMHDZ_SOLO_LEVEL5_SCORE_X_POS 1140.0 TWEAK_FLOAT cfCMHDZ_SOLO_LEVEL1_STAR_X_POS 486.0 TWEAK_FLOAT cfCMHDZ_SOLO_LEVEL1_STAR_Y_POS 552.0 TWEAK_FLOAT cfCMHDZ_SOLO_LEVEL2_STAR_X_POS 870.0 TWEAK_FLOAT cfCMHDZ_SOLO_LEVEL3_STAR_X_POS 1255.0 TWEAK_FLOAT cfCMHDZ_SOLO_LEVEL4_STAR_X_POS 679.0 TWEAK_FLOAT cfCMHDZ_SOLO_LEVEL4_STAR_Y_POS 962.0 TWEAK_FLOAT cfCMHDZ_SOLO_LEVEL5_STAR_X_POS 1063.0 TWEAK_FLOAT cfCMHDZ_SOLO_RESULTS_STAR_X_POS 890.0 TWEAK_FLOAT cfCMHDZ_SOLO_RESULTS_STAR_Y_POS 700.0 TWEAK_FLOAT cfCMHDZ_SOLO_GAME_RESULTS_STAR_X_POS 472.0 TWEAK_FLOAT cfCMHDZ_SOLO_GAME_RESULTS_STAR_Y_POS 956.0 /////////////////////////////////// /// Multiplayer constants /// /////////////////////////////////// //CONST_FLOAT cfCMHDZ_SOLO_LEVEL1_SCORE_X_POS 462.875 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL1_SCORE_Y_POS 551.250 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL1_SCORE_X_POS 475.875 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL1_SCORE_Y_POS 551.25 ////CONST_FLOAT cfCMHDZ_RED_LEVEL1_WIN_X_POS 469.750 ////CONST_FLOAT cfCMHDZ_RED_LEVEL1_WIN_Y_POS 533.250 // //CONST_FLOAT cfCMHDZ_SOLO_LEVEL1_SCORE_X_POS 462.875 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL1_SCORE_Y_POS 551.250 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL1_SCORE_X_POS 675.75 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL1_SCORE_Y_POS 551.25 ////CONST_FLOAT cfCMHDZ_BLUE_LEVEL1_WIN_X_POS 671.0 ////CONST_FLOAT cfCMHDZ_BLUE_LEVEL1_WIN_Y_POS 533.250 // //CONST_FLOAT cfCMHDZ_SOLO_LEVEL2_SCORE_X_POS 846.625 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL2_SCORE_Y_POS 551.250 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL2_SCORE_X_POS 860.375 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL2_SCORE_Y_POS 551.25 ////CONST_FLOAT cfCMHDZ_RED_LEVEL2_WIN_X_POS 854.125 // //CONST_FLOAT cfCMHDZ_SOLO_LEVEL2_SCORE_X_POS 1062.375 ////CONST_FLOAT cfCMHDZ_BLUE_LEVEL2_WIN_X_POS 1057.75 // //CONST_FLOAT cfCMHDZ_SOLO_LEVEL3_SCORE_X_POS 1231.87 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL3_SCORE_Y_POS 551.250 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL3_SCORE_X_POS 1245.62 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL3_SCORE_Y_POS 551.25 ////CONST_FLOAT cfCMHDZ_RED_LEVEL3_WIN_X_POS 1238.625 // //CONST_FLOAT cfCMHDZ_SOLO_LEVEL3_SCORE_X_POS 1446.875 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL3_SCORE_Y_POS 551.25 ////CONST_FLOAT cfCMHDZ_BLUE_LEVEL3_WIN_X_POS 1442.0 // //CONST_FLOAT cfCMHDZ_SOLO_LEVEL4_SCORE_X_POS 655.25 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL4_SCORE_Y_POS 957.0 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL4_SCORE_X_POS 669.0 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL4_SCORE_Y_POS 957.0 ////CONST_FLOAT cfCMHDZ_RED_LEVEL4_WIN_X_POS 663.625 ////CONST_FLOAT cfCMHDZ_RED_LEVEL4_WIN_Y_POS 938.625 // //CONST_FLOAT cfCMHDZ_SOLO_LEVEL4_SCORE_X_POS 868.5 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL4_SCORE_Y_POS 957.0 ////CONST_FLOAT cfCMHDZ_BLUE_LEVEL4_WIN_X_POS 863.625 // //CONST_FLOAT cfCMHDZ_SOLO_LEVEL5_SCORE_X_POS 1039.625 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL5_SCORE_Y_POS 957.0 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL5_SCORE_X_POS 1053.375 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL5_SCORE_Y_POS 957.0 ////CONST_FLOAT cfCMHDZ_RED_LEVEL5_WIN_X_POS 1046.5 // //CONST_FLOAT cfCMHDZ_SOLO_LEVEL5_SCORE_X_POS 1252.625 //CONST_FLOAT cfCMHDZ_SOLO_LEVEL5_SCORE_Y_POS 957.0 //CONST_FLOAT cfCMHDZ_BLUE_LEVEL5_WIN_X_POS 1248.0 CONST_FLOAT cfCMHDZ_LEVEL_RED_SCORE_DOLLAR_X_POS 486.375 CONST_FLOAT cfCMHDZ_LEVEL_RED_SCORE_DOLLAR_Y_POS 130.0 CONST_FLOAT cfCMHDZ_LEVEL_RED_HI_SCORE_X_POS 592.125 CONST_FLOAT cfCMHDZ_LEVEL_RED_HI_SCORE_Y_POS 130.0 CONST_FLOAT cfCMHDZ_LEVEL_BLUE_SCORE_DOLLAR_X_POS 1247.625 CONST_FLOAT cfCMHDZ_LEVEL_BLUE_SCORE_DOLLAR_Y_POS 130.0 CONST_FLOAT cfCMHDZ_LEVEL_BLUE_HI_SCORE_X_POS 1353.625 CONST_FLOAT cfCMHDZ_LEVEL_BLUE_HI_SCORE_Y_POS 130.0 //CONST_FLOAT cfCMHDZ_LEVEL_SCORE_WIN_RED_X_POS 717.375 //CONST_FLOAT cfCMHDZ_LEVEL_SCORE_WIN_RED_Y_POS 130.0 //CONST_FLOAT cfCMHDZ_LEVEL_SCORE_WIN_BLUE_X_POS 1481.375 //CONST_FLOAT cfCMHDZ_LEVEL_SCORE_WIN_BLUE_Y_POS 130.0 //-- Results Screen - Level Complete TWEAK_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_SCORE_POS_X 876.00 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_SCORE_POS_Y 577.125 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_SCORE_SIZE_X 172.0 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_SCORE_SIZE_Y 44.0 TWEAK_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_SCORE_VAL_POS_X 1156.0 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_SCORE_VAL_POS_Y 574.25 TWEAK_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_ACCURACY_POS_X 876.0 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_ACCURACY_POS_Y 637.125 TWEAK_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_ACCURACY_VAL_POS_X 1156.0 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_ACCURACY_VAL_POS_Y 636.625 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_ACCURACY_SIZE_X 256.0 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_ACCURACY_SIZE_Y 40.0 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_ACCURACY_PERCENT_SIZE_X 28.0 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_COMPLETE_ACCURACY_PERCENT_SIZE_Y 36.0 //-- Results Screen - Game Complete TWEAK_FLOAT cfCMHDZ_RESULTS_SCREEN_GAME_COMPLETE_SCORE_POS_X 458.25 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_GAME_COMPLETE_SCORE_POS_Y 825.5 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_GAME_COMPLETE_SCORE_DOLLAR_POS_X 719.625 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_GAME_COMPLETE_SCORE_DOLLAR_POS_Y 624.75 TWEAK_FLOAT cfCMHDZ_RESULTS_SCREEN_GAME_COMPLETE_SCORE_VAL_POS_X 673.25 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_GAME_COMPLETE_SCORE_VAL_POS_Y 665.375 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_GAME_COMPLETE_ACCURACY_POS_X 458.25 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_GAME_COMPLETE_ACCURACY_POS_Y 890.375 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_GAME_COMPLETE_ACCURACY_VAL_POS_X 672.000 CONST_FLOAT cfCMHDZ_RESULTS_SCREEN_GAME_COMPLETE_ACCURACY_VAL_POS_Y 896.000 CONST_FLOAT cfCMHDZ_HEADSHOT_BACKGROUND_MIN_Y 0.0 CONST_FLOAT cfCMHDZ_HEADSHOT_BACKGROUND_MAX_Y 53.0 CONST_FLOAT cfCMHDZ_HEADSHOT_MIDGROUND_MIN_Y 0.0 CONST_FLOAT cfCMHDZ_HEADSHOT_MIDGROUND_MAX_Y 74.0 CONST_FLOAT cfCMHDZ_HEADSHOT_FOREGROUND_MIN_Y 0.0 CONST_FLOAT cfCMHDZ_HEADSHOT_FOREGROUND_MAX_Y 148.0 CONST_FLOAT cfCMHDZ_DAMAGE_1_X_POS 1200.0 CONST_FLOAT cfCMHDZ_DAMAGE_1_Y_POS 900.0 CONST_FLOAT cfCMHDZ_DAMAGE_2_X_POS 500.0 CONST_FLOAT cfCMHDZ_DAMAGE_2_Y_POS 400.0 CONST_FLOAT cfCMHDZ_DAMAGE_3_X_POS 900.0 CONST_FLOAT cfCMHDZ_DAMAGE_3_Y_POS 600.0 CONST_FLOAT cfCMHDZ_DAMAGE_4_X_POS 1400.0 CONST_FLOAT cfCMHDZ_DAMAGE_4_Y_POS 500.0 CONST_FLOAT cfCMHDZ_DAMAGE_5_X_POS 900.0 CONST_FLOAT cfCMHDZ_DAMAGE_5_Y_POS 300.0 CONST_FLOAT cfCMHDZ_DAMAGE_BEAR_X_POS 913.75 CONST_FLOAT cfCMHDZ_DAMAGE_BEAR_Y_POS 658.25 CONST_FLOAT cfCMHDZ_TOWN_LEVEL_RIGHTMOST_ENTITY_X 1343.0 CONST_FLOAT cfCMHDZ_FOREST_LEVEL_RIGHTMOST_ENTITY_X 1415.75 CONST_FLOAT cfCMHDZ_MINE_LEVEL_RIGHTMOST_ENTITY_X 1420.0 CONST_FLOAT cfCMHDZ_GRAVEYARD_LEVEL_RIGHTMOST_ENTITY_X 1535.250 CONST_FLOAT cfIAP_CONTROLLER_AXIS_THRESHOLD_MOD 1.0 CONST_INT ciCMHDZ_ENEMY_TIME_TO_SHOOT 2000 CONST_INT ciCMHDZ_PLAYER_CRITICAL_DAMAGE_NO_AMMO_TIME 1000 CONST_INT ciCMHDZ_ITEM_SHIELD_TIME 12000 CONST_INT ciCMHDZ_HIDE_RETICULE_TIME 10000 CONST_INT ciCMHDZ_ITEM_BUFF_TIME 10000 CONST_INT ciCMHDZ_ITEM_MOLOTOV_AMMO_COUNT 3 CONST_INT ciCMHDZ_ITEM_NAILBOMB_AMMO_COUNT 6 CONST_INT ciCMHDZ_ITEM_DYNAMITE_AMMO_COUNT 5 CONST_INT ciCMHDZ_ITEM_BRICK_AMMO_COUNT 100 CONST_INT ciCMHDZ_MAX_ANIM_FRAMES 2 CONST_INT ciCMHDZ_MAX_THROWING_FRAMES 4 CONST_INT ciCMHDZ_MAX_CART_ANIM_FRAMES 4 CONST_INT ciCMHDZ_EXPLOSION_MAX_ANIM_FRAMES 3 CONST_INT ciCMHDZ_ENEMY_SHOT_MAX_ANIM_FRAMES 6 CONST_INT ciCMHDZ_PLAYER_SHOT_MAX_ANIM_FRAMES 2 CONST_INT ciCMHDZ_MAX_ENEMY_THROWN_DYNAMITE_ANIM_FRAMES 6 CONST_INT ciCMHDZ_MAX_ENEMY_THROWN_EXPLOSION_ANIM_FRAMES 3 CONST_INT ciCMHDZ_MAX_LOOT_CRATE_FX_ANIM_FRAMES 3 CONST_INT ciCMHDZ_BLOOD_SPLAT_MAX_ANIM_FRAMES 8 CONST_INT ciCMHDZ_SCREEN_SLASH_MAX_ANIM_FRAMES 8 CONST_INT ciCMHDZ_BEARSY_CHAINSAW_BLOOD_MAX_ANIM_FRAMES 4 CONST_INT ciCMHDZ_BEARSY_BLEED_MAX_ANIM_FRAMES 5 CONST_INT ciCMHDZ_SPARKS_MAX_ANIM_FRAMES 5 CONST_INT ciCMHDZ_MAX_PROJECTILES 4 CONST_INT ciCMHDZ_MAX_PLAYER_THROWN_PROJECTILES 1 CONST_INT ciCMHDZ_MAX_ENEMY_PROJECTILES 1 CONST_INT ciCMHDZ_MAX_ENEMY_SHOT_AT_ONCE 8 CONST_INT ciCMHDZ_MAX_COVER 60 CONST_INT ciCMHDZ_MAX_SUITABLE_HIDE_BEHIND_COVER 16 CONST_INT ciCMHDZ_MAX_FX 6 CONST_INT ciCMHDZ_MAX_MENU_OPTIONS 9 CONST_INT ciCMHDZ_MAX_PLAYERS 1 CONST_INT ciCMHDZ_MAX_BACKGROUND_TILES 7 CONST_INT ciCMHDZ_MAX_BACKGROUND_ELEMS 50 CONST_INT ciCMHDZ_MAX_ENEMIES 60 CONST_INT ciCMHDZ_MAX_ITEMS 12 CONST_INT ciCMHDZ_MAX_SCREENS 11 CONST_FLOAT cfCMHDZ_SCREEN_LENGTH 927.5 CONST_INT MAX_PLAYER_HELD_WEAPONS 2 CONST_INT ciCMHDZ_PLAYER_START_AMMO 100 CONST_INT ciCMHDZ_PLAYER_WEAPON_REVOLVER 0 CONST_INT ciCMHDZ_MAX_SCORE_DIGITS 6 CONST_INT ciCMHDZ_LANE_BACKGROUND 0 CONST_INT ciCMHDZ_LANE_MIDDLE 1 CONST_INT ciCMHDZ_LANE_FOREGROUND 2 CONST_INT ciCMHDZ_LANE_POPUP_RHS 3 CONST_INT ciCMHDZ_LANE_POPUP_LHS 4 CONST_INT ciCMHDZ_MAX_LANES 5 CONST_FLOAT cfCMHDZ_DEFAULT_PIXEL_UPDATE 4.0 TWEAK_INT ciBASE_FPS 30 // Game States CONST_INT CMHDZ_GAME_STATE_INIT 0 CONST_INT CMHDZ_GAME_STATE_RUNNING 1 CONST_INT CMHDZ_GAME_STATE_LEAVE 2 CONST_INT CMHDZ_GAME_STATE_END 3 CONST_FLOAT CMHDZ_PX_HUD_THIN_CHAR_WIDTH 16.0 CONST_FLOAT CMHDZ_PX_HUD_CHAR_WIDTH 24.0 CONST_FLOAT CMHDZ_PX_HUD_CHAR_HEIGHT 40.0 CONST_INT CMHDZ_HUD_MAX_NUM_LENGTH 16 CONST_INT ciCMHDZ_DIRECTOR_SOUND_COOLDOWN 3000 //CONST_INT ciCMHDZ_ENEMY_SOUND_COOLDOWN 2000 // Command Lines #IF IS_DEBUG_BUILD CONST_INT CMHDZ_CMDLINE_NO_INTRO 0 CONST_INT CMHDZ_CMDLINE_QUICK_LEVEL1 0 CONST_INT CMHDZ_CMDLINE_UNLOCK_ALL_LEVELS 0 CONST_INT CMHDZ_CMDLINE_NO_DEATH 0 CONST_INT CMHDZ_CMDLINE_RTN_TO_MENU_IN_GAME 0 CONST_INT CMHDZ_CMDLINE_FORCE_OUTRO 0 CONST_INT CMHDZ_CMDLINE_ON_SCREEN_DEBUG 0 CONST_INT CMHDZ_CMDLINE_EDITOR_NEW 0 CONST_INT CMHDZ_CMDLINE_BOOT_INTO_EDITOR 0 // Editor Constants CONST_INT CMHDZ_EDITOR_MODE_MAX_TYPES 5 CONST_INT CMHDZ_EDITOR_MODE_ITEM 0 CONST_INT CMHDZ_EDITOR_MODE_ENEMY 1 CONST_INT CMHDZ_EDITOR_MODE_COVER 2 CONST_INT CMHDZ_EDITOR_MODE_LEVEL 3 CONST_INT CMHDZ_EDITOR_MODE_BOSS 4 CONST_INT CMHDZ_EDITOR_MODE_COVER_NEW_UNIT 1 CONST_INT CMHDZ_EDITOR_MODE_COVER_INDEX 2 CONST_INT CMHDZ_EDITOR_MODE_COVER_LEVEL 3 CONST_INT CMHDZ_EDITOR_MODE_COVER_TYPE 4 CONST_INT CMHDZ_EDITOR_MODE_COVER_LANE 5 CONST_INT CMHDZ_EDITOR_MODE_COVER_SCREEN 6 CONST_INT CMHDZ_EDITOR_MODE_COVER_INITIAL_X 7 CONST_INT CMHDZ_EDITOR_MODE_COVER_INITIAL_Y 8 CONST_INT CMHDZ_EDITOR_MODE_COVER_IS_FAR_BG 9 CONST_INT CMHDZ_EDITOR_MODE_COVER_REMOVE_OFF_SCREEN 10 CONST_INT CMHDZ_EDITOR_MODE_COVER_EXPORT 11 CONST_INT CMHDZ_EDITOR_MODE_COVER_EXPORT_ALL 12 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_NEW_UNIT 1 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_INDEX 2 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_LEVEL 3 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_TYPE 4 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_LANE 5 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_POSITION 6 //CONST_INT CMHDZ_EDITOR_MODE_ENEMY_SCREEN 7 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_INITIAL_X 7 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_INITIAL_Y 8 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_STOP_POS 9 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_WAITSCROLL 10 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_REVERSE 11 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_IS_POP_UP 12 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_EXPORT 13 CONST_INT CMHDZ_EDITOR_MODE_ENEMY_EXPORT_ALL 14 CONST_INT CMHDZ_EDITOR_MODE_ITEM_NEW_UNIT 1 CONST_INT CMHDZ_EDITOR_MODE_ITEM_INDEX 2 CONST_INT CMHDZ_EDITOR_MODE_ITEM_LEVEL 3 CONST_INT CMHDZ_EDITOR_MODE_ITEM_TYPE 4 CONST_INT CMHDZ_EDITOR_MODE_ITEM_LANE 5 CONST_INT CMHDZ_EDITOR_MODE_ITEM_SCREEN 6 CONST_INT CMHDZ_EDITOR_MODE_ITEM_INITIAL_X 7 CONST_INT CMHDZ_EDITOR_MODE_ITEM_INITIAL_Y 8 CONST_INT CMHDZ_EDITOR_MODE_ITEM_RENDERWARP 9 CONST_INT CMHDZ_EDITOR_MODE_ITEM_FORCESCALE 10 CONST_INT CMHDZ_EDITOR_MODE_ITEM_EXPORT 11 CONST_INT CMHDZ_EDITOR_MODE_ITEM_EXPORT_ALL 12 //CONST_INT CMHDZ_EDITOR_MODE_HOSTAGE_NEW_UNIT 1 //CONST_INT CMHDZ_EDITOR_MODE_HOSTAGE_INDEX 2 //CONST_INT CMHDZ_EDITOR_MODE_HOSTAGE_TYPE 3 //CONST_INT CMHDZ_EDITOR_MODE_HOSTAGE_LANE 4 //CONST_INT CMHDZ_EDITOR_MODE_HOSTAGE_INITIAL_X 5 //CONST_INT CMHDZ_EDITOR_MODE_HOSTAGE_INITIAL_Y 6 //CONST_INT CMHDZ_EDITOR_MODE_HOSTAGE_REVERSE 7 //CONST_INT CMHDZ_EDITOR_MODE_HOSTAGE_STOP_POS 8 CONST_INT CMHDZ_EDITOR_MODE_LEVEL_INDEX 1 CONST_INT CMHDZ_EDITOR_MODE_LEVEL_PROGRESS_SET 2 CONST_INT CMHDZ_EDITOR_MODE_LEVEL_SCREEN 3 //CONST_INT CMHDZ_EDITOR_MODE_LEVEL_STOP_PROP 4 CONST_INT CMHDZ_EDITOR_MODE_LEVEL_PLAY 4 CONST_INT CMHDZ_EDITOR_MODE_LEVEL_RESET 5 CONST_INT CMHDZ_EDITOR_MODE_EXPORT_LEVEL 6 CONST_INT CMHDZ_EDITOR_MODE_SCREEN_NUM 1 #ENDIF //----------------------- // ENUMS //----------------------- ENUM CMHDZ_ARCADE_CLIENT_STATE CMHDZ_ARCADE_CLIENT_STATE_INIT = 0, CMHDZ_ARCADE_CLIENT_STATE_REQUESTING_ASSETS, CMHDZ_ARCADE_CLIENT_STATE_FIB, CMHDZ_ARCADE_CLIENT_STATE_INTRO, CMHDZ_ARCADE_CLIENT_STATE_TITLE_SCREEN, CMHDZ_ARCADE_CLIENT_STATE_TITLE_FADEOUT, CMHDZ_ARCADE_CLIENT_STATE_LEVEL_SELECTION_MENU, CMHDZ_ARCADE_CLIENT_STATE_INIT_LEVEL, CMHDZ_ARCADE_CLIENT_STATE_PLAYING, CMHDZ_ARCADE_CLIENT_STATE_EDITOR_ACTIVE, CMHDZ_ARCADE_CLIENT_STATE_RESULT_SCREEN, CMHDZ_ARCADE_CLIENT_STATE_GAME_OVER, CMHDZ_ARCADE_CLIENT_STATE_OUTRO_MOVIE, CMHDZ_ARCADE_CLIENT_STATE_VIEW_LEADERBOARD, CMHDZ_ARCADE_CLIENT_STATE_EDIT_LEADERBOARD, CMHDZ_ARCADE_CLIENT_STATE_CLEANUP, NUM_CMHDZ_ARCADE_CLIENT_STATE ENDENUM ENUM CMHDZ_ARCADE_CLIENT_SUBSTATE CMHDZ_ARCADE_CLIENT_SUBSTATE_INIT, CMHDZ_ARCADE_CLIENT_SUBSTATE_ACTIVE, CMHDZ_ARCADE_CLIENT_SUBSTATE_CLEANUP, NUM_CMHDZ_ARCADE_CLIENT_SUBSTATE ENDENUM ENUM CMHDZ_ASSET_TYPES CMHDZ_ASSET_INVALID = -1, CMHDZ_ASSET_CACTUS_1 = 0, CMHDZ_ASSET_CACTUS_2, CMHDZ_ASSET_CACTUS_3, CMHDZ_ASSET_BARRIER, CMHDZ_ASSET_TRASHBAG_BIG, CMHDZ_ASSET_TRASHBAG_SMALL, CMHDZ_ASSET_TRASHCAN_BIG_1, CMHDZ_ASSET_TRASHCAN_BIG_2, CMHDZ_ASSET_TRASHCAN_SMALL_1, CMHDZ_ASSET_TRASHCAN_SMALL_2, CMHDZ_ASSET_BUSH_1, CMHDZ_ASSET_BUSH_2, CMHDZ_ASSET_ROCK_SMALL, CMHDZ_ASSET_ROCK_LARGE, CMHDZ_ASSET_GRASS, CMHDZ_ASSET_CITY_BUILDING_1, CMHDZ_ASSET_CITY_BUILDING_2, CMHDZ_ASSET_CITY_BUILDING_3, CMHDZ_ASSET_SCRAPYARD_MD_VAN_1, CMHDZ_ASSET_SCRAPYARD_MD_VAN_2, CMHDZ_ASSET_SCRAPYARD_MD_VAN_3, CMHDZ_ASSET_SCRAPYARD_MD_VAN_4, CMHDZ_ASSET_SCRAPYARD_MD_CAR_1, CMHDZ_ASSET_SCRAPYARD_MD_CAR_2, CMHDZ_ASSET_SCRAPYARD_MD_CAR_3, CMHDZ_ASSET_SCRAPYARD_MD_CAR_4, CMHDZ_ASSET_THEMEPARK_BUILDING_1, CMHDZ_ASSET_THEMEPARK_BUILDING_2, CMHDZ_ASSET_THEMEPARK_BUILDING_3, CMHDZ_ASSET_THEMEPARK_BUILDING_4, CMHDZ_ASSET_THEMEPARK_CLOWNBOARD_1, CMHDZ_ASSET_THEMEPARK_CLOWNBOARD_2, CMHDZ_ASSET_THEMEPARK_TREE_1, CMHDZ_ASSET_THEMEPARK_TREE_2, CMHDZ_ASSET_THEMEPARK_TREE_3, CMHDZ_ASSET_THEMEPARK_TREE_4, CMHDZ_ASSET_ASYLUM_BG_DOOR, CMHDZ_ASSET_ASYLUM_BG_RADIATOR, CMHDZ_ASSET_ASYLUM_GRAFFITI_1, CMHDZ_ASSET_ASYLUM_GRAFFITI_2, CMHDZ_ASSET_ASYLUM_GRAFFITI_3, CMHDZ_ASSET_ASYLUM_MD_BED, CMHDZ_ASSET_ASYLUM_MD_WHEELCHAIR, CMHDZ_ASSET_ASYLUM_MD_MATTRESS, CMHDZ_ASSET_ASYLUM_LIGHT_1, CMHDZ_ASSET_ASYLUM_LIGHT_2, CMHDZ_ASSET_FENCE, CMHDZ_ASSET_CACTUS_9, CMHDZ_ASSET_SCRAPYARD_PROP_FENCE, CMHDZ_ASSET_FOREGROUND_TRASH, CMHDZ_ASSET_BARRELS, CMHDZ_ASSET_MEATGRINDER_1, CMHDZ_ASSET_MEATGRINDER_2, CMHDZ_ASSET_BODYBAG_1, CMHDZ_ASSET_BODYBAG_2, CMHDZ_ASSET_BODYBAG_3, CMHDZ_ASSET_BODYBAG_FLOOR_1, CMHDZ_ASSET_BODYBAG_FLOOR_2, CMHDZ_ASSET_BODYBAG_FLOOR_3, CMHDZ_ASSET_BODYBAG_FLOOR_4, CMHDZ_ASSET_PIG, CMHDZ_ASSET_PIG_BATCH, CMHDZ_ASSET_MEATHOOK, CMHDZ_ASSET_DOOR_1, CMHDZ_ASSET_DOOR_2, CMHDZ_ASSET_WINDOW, CMHDZ_ASSET_OVERHEAD_LIGHT, CMHDZ_ASSET_WATER_TOWER, // CMHDZ_ASSET_SPECIAL_TNT_CRATE, CMHDZ_ASSET_SPECIAL_TNT_BARREL_1, CMHDZ_ASSET_SPECIAL_TNT_BARREL_2, NUM_CMHDZ_ASSET_TYPES ENDENUM ENUM CMHDZ_AUDIO_EFFECT CMHDZ_AUDIO_EFFECT_GET_READY, CMHDZ_AUDIO_EFFECT_DRAW, CMHDZ_AUDIO_EFFECT_SELECT_STAGE, CMHDZ_AUDIO_EFFECT_SCREEN_LOCKED, CMHDZ_AUDIO_EFFECT_MENU_BACK, CMHDZ_AUDIO_EFFECT_MENU_CONTINUE, CMHDZ_AUDIO_EFFECT_Shoot_Option, CMHDZ_AUDIO_EFFECT_Logo_Appear, CMHDZ_AUDIO_EFFECT_Score_Letter_Change, CMHDZ_AUDIO_EFFECT_Score_Letter_Select, CMHDZ_AUDIO_EFFECT_Score_Entered, CMHDZ_AUDIO_EFFECT_MUSIC_TRANSITION, CMHDZ_AUDIO_EFFECT_LEVEL_BACKGROUND_LOOP, CMHDZ_AUDIO_EFFECT_SWAP_WEAPON, CMHDZ_AUDIO_EFFECT_RELOAD, CMHDZ_AUDIO_EFFECT_BULLET_HIT_BODY, CMHDZ_AUDIO_EFFECT_BULLET_HIT_PLAYER, CMHDZ_AUDIO_EFFECT_BULLET_HIT_METAL, CMHDZ_AUDIO_EFFECT_BULLET_HIT_BUSHES, CMHDZ_AUDIO_EFFECT_BULLET_HIT_ROCK, CMHDZ_AUDIO_EFFECT_BULLET_HIT_MISS, CMHDZ_AUDIO_EFFECT_BULLET_HIT_OPTION, CMHDZ_AUDIO_EFFECT_BULLET_HIT_START, CMHDZ_AUDIO_EFFECT_BULLET_HIT_GENERIC, CMHDZ_AUDIO_EFFECT_BULLET_HIT_HEADSHOT, CMHDZ_AUDIO_EFFECT_BULLET_HIT_BEARSY, CMHDZ_AUDIO_EFFECT_BULLET_HIT_BEARSY_DEFLECT, CMHDZ_AUDIO_EFFECT_REVOLVER_FIRE, CMHDZ_AUDIO_EFFECT_REVOLVER_EMPTY, CMHDZ_AUDIO_EFFECT_RIFLE_FIRE, CMHDZ_AUDIO_EFFECT_RIFLE_EMPTY, CMHDZ_AUDIO_EFFECT_SHOTGUN_FIRE, CMHDZ_AUDIO_EFFECT_SHOTGUN_EMPTY, CMHDZ_AUDIO_EFFECT_NAILGUN_FIRE, CMHDZ_AUDIO_EFFECT_Melee_Bat_Metal_Hit, CMHDZ_AUDIO_EFFECT_Melee_Bat_Metal_Swing, CMHDZ_AUDIO_EFFECT_Melee_Bat_Wood_Hit, CMHDZ_AUDIO_EFFECT_Melee_Bat_Wood_Swing, CMHDZ_AUDIO_EFFECT_Melee_Crowbar_Hit, CMHDZ_AUDIO_EFFECT_Melee_Crowbar_Swing, CMHDZ_AUDIO_EFFECT_Melee_Machete_Hit, CMHDZ_AUDIO_EFFECT_Melee_Machete_Swing, CMHDZ_AUDIO_EFFECT_REVOLVER_RELOAD_FIRST, CMHDZ_AUDIO_EFFECT_REVOLVER_RELOAD_SINGLE, CMHDZ_AUDIO_EFFECT_REVOLVER_RELOAD_LAST, CMHDZ_AUDIO_EFFECT_RIFLE_RELOAD_SINGLE, CMHDZ_AUDIO_EFFECT_RIFLE_RELOAD_LAST, CMHDZ_AUDIO_EFFECT_SHOTGUN_RELOAD_SINGLE, CMHDZ_AUDIO_EFFECT_NAILGUN_RELOAD_SINGLE, CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_DEAD, CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_VERY_LOW, CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_LOW, CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_MEDIUM, CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_HIGH, // Figurative sfx for Enemy filtering. CMHDZ_AUDIO_EFFECT_ENEMY_DEAD, CMHDZ_AUDIO_EFFECT_ENEMY_INJURED, CMHDZ_AUDIO_EFFECT_ENEMY_GLOAT, CMHDZ_AUDIO_EFFECT_ENEMY_ATTACK, CMHDZ_AUDIO_EFFECT_ENEMY_PAIN, CMHDZ_AUDIO_EFFECT_ENEMY_ON_FIRE, CMHDZ_AUDIO_EFFECT_ENEMY_A_DEAD, CMHDZ_AUDIO_EFFECT_ENEMY_A_INJURED, CMHDZ_AUDIO_EFFECT_ENEMY_A_GLOAT, CMHDZ_AUDIO_EFFECT_ENEMY_A_ATTACK, CMHDZ_AUDIO_EFFECT_ENEMY_A_PAIN, CMHDZ_AUDIO_EFFECT_ENEMY_A_ON_FIRE, CMHDZ_AUDIO_EFFECT_ENEMY_B_DEAD, CMHDZ_AUDIO_EFFECT_ENEMY_B_INJURED, CMHDZ_AUDIO_EFFECT_ENEMY_B_GLOAT, CMHDZ_AUDIO_EFFECT_ENEMY_B_ATTACK, CMHDZ_AUDIO_EFFECT_ENEMY_B_PAIN, CMHDZ_AUDIO_EFFECT_ENEMY_B_ON_FIRE, CMHDZ_AUDIO_EFFECT_ENEMY_C_DEAD, CMHDZ_AUDIO_EFFECT_ENEMY_C_INJURED, CMHDZ_AUDIO_EFFECT_ENEMY_C_GLOAT, CMHDZ_AUDIO_EFFECT_ENEMY_C_ATTACK, CMHDZ_AUDIO_EFFECT_ENEMY_C_PAIN, CMHDZ_AUDIO_EFFECT_ENEMY_C_ON_FIRE, CMHDZ_AUDIO_EFFECT_ENEMY_D_DEAD, CMHDZ_AUDIO_EFFECT_ENEMY_D_INJURED, CMHDZ_AUDIO_EFFECT_ENEMY_D_GLOAT, CMHDZ_AUDIO_EFFECT_ENEMY_D_ATTACK, CMHDZ_AUDIO_EFFECT_ENEMY_D_PAIN, CMHDZ_AUDIO_EFFECT_ENEMY_D_ON_FIRE, CMHDZ_AUDIO_EFFECT_ENEMY_E_DEAD, CMHDZ_AUDIO_EFFECT_ENEMY_E_GLOAT, CMHDZ_AUDIO_EFFECT_ENEMY_E_ATTACK, CMHDZ_AUDIO_EFFECT_ENEMY_E_PAIN, CMHDZ_AUDIO_EFFECT_ENEMY_E_INJURED, CMHDZ_AUDIO_EFFECT_ENEMY_E_ON_FIRE, CMHDZ_AUDIO_EFFECT_ENEMY_RIFLE_AIM, CMHDZ_AUDIO_EFFECT_ENEMY_RIFLE_FIRE, CMHDZ_AUDIO_EFFECT_ENEMY_SHOTGUN_AIM, CMHDZ_AUDIO_EFFECT_ENEMY_SHOTGUN_FIRE, CMHDZ_AUDIO_EFFECT_ENEMY_REVOLVER_AIM, CMHDZ_AUDIO_EFFECT_ENEMY_REVOLVER_FIRE, CMHDZ_AUDIO_EFFECT_ENEMY_CRIT_WARNING, CMHDZ_AUDIO_EFFECT_ENEMY_THROW_DYNAMITE, CMHDZ_AUDIO_EFFECT_RESULTS_SCORE_UPDATE, CMHDZ_AUDIO_EFFECT_EXP_GENERIC, CMHDZ_AUDIO_EFFECT_EXP_DYNAMITE, CMHDZ_AUDIO_EFFECT_PLAYER_BRICK_THROW, CMHDZ_AUDIO_EFFECT_PLAYER_BRICK_HIT, CMHDZ_AUDIO_EFFECT_PLAYER_NAILBOMB_THROW, CMHDZ_AUDIO_EFFECT_PLAYER_NAILBOMB_HIT, CMHDZ_AUDIO_EFFECT_PLAYER_MOLOTOV_THROW, CMHDZ_AUDIO_EFFECT_PLAYER_MOLOTOV_HIT, CMHDZ_AUDIO_EFFECT_BUNNYGIRL_APPEAR, CMHDZ_AUDIO_EFFECT_BUNNYGIRL_PAIN, CMHDZ_AUDIO_EFFECT_BUNNYGIRL_DEATH, CMHDZ_AUDIO_EFFECT_BUNNYGIRL_MISSED, CMHDZ_AUDIO_EFFECT_MONKEY_APPEAR, CMHDZ_AUDIO_EFFECT_MONKEY_PAIN, CMHDZ_AUDIO_EFFECT_MONKEY_DEATH, CMHDZ_AUDIO_EFFECT_MONKEY_MISSED, CMHDZ_AUDIO_EFFECT_RAT_APPEAR, CMHDZ_AUDIO_EFFECT_RAT_DEATH, CMHDZ_AUDIO_EFFECT_RAT_IDLE_LOOP, CMHDZ_AUDIO_EFFECT_BEARSY_APPEAR, CMHDZ_AUDIO_EFFECT_BEARSY_ATTACK, CMHDZ_AUDIO_EFFECT_BEARSY_PAIN, CMHDZ_AUDIO_EFFECT_BEARSY_HIDE, CMHDZ_AUDIO_EFFECT_BEARSY_REVEAL, CMHDZ_AUDIO_EFFECT_BEARSY_DIE, CMHDZ_AUDIO_EFFECT_BEARSY_IDLE_LOOP, CMHDZ_AUDIO_EFFECT_BEARSY_CHAINSAW_LOOP, CMHDZ_AUDIO_EFFECT_BEARSY_CHAINSAW_ATTACK, CMHDZ_AUDIO_EFFECT_BEARSY_MEAT_THROW, CMHDZ_AUDIO_EFFECT_BEARSY_MEAT_IMPACT, CMHDZ_AUDIO_EFFECT_PICKUP_HEALTH, CMHDZ_AUDIO_EFFECT_PICKUP_BUFF, CMHDZ_AUDIO_EFFECT_PICKUP_SHIELD, CMHDZ_AUDIO_EFFECT_PICKUP_CASH, CMHDZ_AUDIO_EFFECT_PICKUP_TAPE, CMHDZ_AUDIO_EFFECT_PLAYER_RELOAD, CMHDZ_AUDIO_EFFECT_PLAYER_SHOOT_HEADSHOT, CMHDZ_AUDIO_EFFECT_PLAYER_SHOOT_ANIMAL, // CMHDZ_AUDIO_EFFECT_PLAYER_AWARD_STV, // CMHDZ_AUDIO_EFFECT_PLAYER_AWARD_TTK, // CMHDZ_AUDIO_EFFECT_PLAYER_AWARD_FOD, CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_BAD, CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_AVERAGE, CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_GOOD, CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_AMAZING, CMHDZ_AUDIO_EFFECT_PLAYER_COMPLETE_LEVEL, CMHDZ_AUDIO_EFFECT_PLAYER_DEATH, CMHDZ_AUDIO_EFFECT_PLAYER_RESULTS_DEAD, CMHDZ_AUDIO_EFFECT_PLAYER_FINISH_GAME, CMHDZ_AUDIO_EFFECT_REWIND_START, CMHDZ_AUDIO_EFFECT_REWIND_LOOP, CMHDZ_AUDIO_EFFECT_REWIND_STOP, CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Asylum, CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Junkyard, CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Slaughterhouse, CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Slums, CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Theme_Park, CMHDZ_AUDIO_EFFECT_DIRECTOR_Get_Ready, CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Start, CMHDZ_AUDIO_EFFECT_DIRECTOR_Complete_Level, CMHDZ_AUDIO_EFFECT_DIRECTOR_Quit, CMHDZ_AUDIO_EFFECT_DIRECTOR_Restart_Level, CMHDZ_AUDIO_EFFECT_DIRECTOR_First_Enemy_Appear, CMHDZ_AUDIO_EFFECT_DIRECTOR_Enemy_Kill, CMHDZ_AUDIO_EFFECT_DIRECTOR_Enemy_Kill_Headshot, CMHDZ_AUDIO_EFFECT_DIRECTOR_Enemy_Kill_Nailgun, CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak, CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak_Long, CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak_Extreme, CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Damage, CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Near_Death, CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Death, CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Inactive, CMHDZ_AUDIO_EFFECT_DIRECTOR_Reload, CMHDZ_AUDIO_EFFECT_DIRECTOR_Weapon_AR, CMHDZ_AUDIO_EFFECT_DIRECTOR_Weapon_MV, CMHDZ_AUDIO_EFFECT_DIRECTOR_Weapon_NB, CMHDZ_AUDIO_EFFECT_DIRECTOR_Weapon_SG, CMHDZ_AUDIO_EFFECT_DIRECTOR_Weapon_Rnd, CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Cash, CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Damage, CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Health, CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Invulnerable, CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Rnd_Neg, CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Rnd_Pos, CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Run_Out, CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Tape, CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_FOD, CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_STV, CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_MSMD, CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_TTK, CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_TD, CMHDZ_AUDIO_EFFECT_DIRECTOR_Score_Ok, CMHDZ_AUDIO_EFFECT_DIRECTOR_Score_Good, CMHDZ_AUDIO_EFFECT_DIRECTOR_Monkey_Kill, CMHDZ_AUDIO_EFFECT_DIRECTOR_Bunny_Kill, CMHDZ_AUDIO_EFFECT_DIRECTOR_Critter_Kill, CMHDZ_AUDIO_EFFECT_DIRECTOR_Props_Destroyed, CMHDZ_AUDIO_EFFECT_MAX ENDENUM ENUM CMHDZ_AUDIO_SCENE CMHDZ_AUDIO_SCENE_MENUS, CMHDZ_AUDIO_SCENE_GAMEPLAY, CMHDZ_AUDIO_SCENE_POWERUP_ACTIVE #IF IS_DEBUG_BUILD ,CMHDZ_AUDIO_SCENE_FORCE_MACHINE #ENDIF ENDENUM ENUM CMHDZ_CHALLENGES CMHDZ_CHALLENGE_FACES_OF_DEATH_PLATINUM = 0, CMHDZ_CHALLENGE_TRAINED_TO_KILL, CMHDZ_CHALLENGE_STRAIGHT_TO_VIDEO, CMHDZ_CHALLENGE_FACES_OF_DEATH_BRONZE, CMHDZ_CHALLENGE_FACES_OF_DEATH_SILVER, CMHDZ_CHALLENGE_FACES_OF_DEATH_GOLD, CMHDZ_CHALLENGE_MONKEY_C_MONKEY_DIE, CMHDZ_CHALLENGE_THE_DIRECTOR ENDENUM ENUM CMHDZ_COVER_DATA_BITS CMHDZ_COVER_DATA_BITS_NONE = 0, CMHDZ_COVER_DATA_BITS_SPAWNED_PICKUP = BIT0, CMHDZ_COVER_DATA_BITS_IS_SPECIAL_COVER = BIT1, CMHDZ_COVER_DATA_BITS_IS_ANIMATED = BIT2, CMHDZ_COVER_DATA_BITS_IS_FAR_BG = BIT3, CMHDZ_COVER_DATA_BITS_REMOVE_OFF_SCREEN = BIT4 ENDENUM ENUM CMHDZ_DAMAGE_PLAYER_TYPES CMHDZ_DAMAGE_PLAYER_TYPE_BULLET, CMHDZ_DAMAGE_PLAYER_TYPE_DYNAMITE, CMHDZ_DAMAGE_PLAYER_TYPE_SLASH ENDENUM ENUM CMHDZ_ENEMY_DATA_BITS CMHDZ_ENEMY_DATA_BITS_NONE = 0, CMHDZ_ENEMY_DATA_BITS_REVERSE = BIT0, CMHDZ_ENEMY_DATA_BITS_IS_POPUP = BIT1, CMHDZ_ENEMY_DATA_BITS_PLAYED_AIM_AUDIO = BIT2, CMHDZ_ENEMY_DATA_BITS_PLAYED_WARN_AUDIO = BIT3, CMHDZ_ENEMY_DATA_BITS_WAIT_UNTIL_LEVEL_STATIONARY = BIT4, CMHDZ_ENEMY_DATA_BITS_SHOT_AT_LEAST_ONCE = BIT5, CMHDZ_ENEMY_DATA_BITS_THROWN_PROJECTILE = BIT6, CMHDZ_ENEMY_DATA_BITS_APPEARED_ON_SCREEN = BIT7, CMHDZ_ENEMY_DATA_BITS_WILL_INFLICT_MELEE_DAMAGE = BIT8, CMHDZ_ENEMY_DATA_BITS_IS_BONUS = BIT9 ENDENUM ENUM CMHDZ_ENEMY_STATE CMHDZ_ENEMY_STATE_WAITING = 0, CMHDZ_ENEMY_STATE_ACTIVE, CMHDZ_ENEMY_STATE_ATTACKING, CMHDZ_ENEMY_STATE_STUNNED, CMHDZ_ENEMY_STATE_DYING, CMHDZ_ENEMY_STATE_DYING_HEADSHOT, CMHDZ_ENEMY_STATE_DYING_BURNING, CMHDZ_ENEMY_STATE_INACTIVE ENDENUM ENUM CMHDZ_ENEMY_TYPES CMHDZ_ENEMY_INVALID = -1, CMHDZ_ENEMY_1 = 0, CMHDZ_ENEMY_2, CMHDZ_ENEMY_3, CMHDZ_ENEMY_4, CMHDZ_ENEMY_5, CMHDZ_FOREGROUND_ENEMY_T1_1, CMHDZ_FOREGROUND_ENEMY_T1_2, CMHDZ_FOREGROUND_ENEMY_T2_1, CMHDZ_FOREGROUND_ENEMY_T2_2, CMHDZ_FOREGROUND_ENEMY_T3_1, CMHDZ_FOREGROUND_ENEMY_T3_2, CMHDZ_FOREGROUND_ENEMY_T4_1, CMHDZ_FOREGROUND_ENEMY_T4_2, CMHDZ_FOREGROUND_ENEMY_T5_1, CMHDZ_FOREGROUND_ENEMY_T5_2, CMHDZ_THROWING_ENEMY_1, CMHDZ_THROWING_ENEMY_2, CMHDZ_THROWING_ENEMY_3, CMHDZ_THROWING_ENEMY_4, CMHDZ_THROWING_ENEMY_5, CMHDZ_RARE_ENEMY_MONKEY, CMHDZ_RARE_ENEMY_BUNNY, CMHDZ_RARE_ENEMY_RAT, NUM_CMHDZ_ENEMY_TYPES ENDENUM //ENUM CMHDZ_BOSS_DATA_BITS //ENDENUM ENUM CMHDZ_BOSS_STATE CMHDZ_BOSS_STATE_INACTIVE = 0, CMHDZ_BOSS_STATE_WAITING, CMHDZ_BOSS_STATE_WALKING, CMHDZ_BOSS_STATE_WALKING_INV, CMHDZ_BOSS_STATE_THROWING, CMHDZ_BOSS_STATE_BACKUP, CMHDZ_BOSS_STATE_FOREGROUND_POP_UP, CMHDZ_BOSS_STATE_FOREGROUND_POP_DOWN, CMHDZ_BOSS_STATE_FOREGROUND_PAIN, CMHDZ_BOSS_STATE_FOREGROUND_IDLE, CMHDZ_BOSS_STATE_BLOCKING, CMHDZ_BOSS_STATE_ATTACK_READY, CMHDZ_BOSS_STATE_ATTACKING, CMHDZ_BOSS_STATE_ATTACKING_COUNTER, CMHDZ_BOSS_STATE_STUNNED_BACKGROUND, CMHDZ_BOSS_STATE_STUNNED_FOREGROUND, CMHDZ_BOSS_STATE_PAIN, CMHDZ_BOSS_STATE_DYING, CMHDZ_BOSS_STATE_FINAL, CMHDZ_BOSS_STATE_SPAWN_HELPERS_1, CMHDZ_BOSS_STATE_SPAWN_HELPERS_2, CMHDZ_BOSS_STATE_WAIT_FOR_ALL_ENEMIES_DEAD ENDENUM ENUM CMHDZ_BOSS_DATA_BITS CMHDZ_BOSS_DATA_BITS_NONE = 0, CMHDZ_BOSS_DATA_BITS_SPAWNED_ENEMIES_1 = BIT0, CMHDZ_BOSS_DATA_BITS_SPAWNED_ENEMIES_2 = BIT1, CMHDZ_BOSS_DATA_BITS_REVERSE = BIT2, CMHDZ_BOSS_DATA_BITS_ANIM_FINISHED_ONCE = BIT3, CMHDZ_BOSS_DATA_BITS_TAKING_DAMAGE = BIT4 ENDENUM ENUM CMHDZ_FX_TYPE CMHDZ_FX_EXPLOSION, CMHDZ_FX_ENEMY_SHOT, CMHDZ_FX_IMPACT, CMHDZ_FX_ENEMY_TNT_EXP, CMHDZ_FX_BLOOD_SPLAT, CMHDZ_FX_BEARSY_FOREGROUND_ATTACKING_BLOOD, CMHDZ_FX_BEARSY_FOREGROUND_PAIN_BLOOD, CMHDZ_FX_BEARSY_FOREGROUND_SPARKS, CMHDZ_FX_SLASH_EFFECT, CMHDZ_FX_OUCH, CMHDZ_FX_LOOT_CRATE ENDENUM ENUM CMHDZ_HELP_TEXT_BITS CMHDZ_HELP_TEXT_BIT_SHOOT_AIM = 0, CMHDZ_HELP_TEXT_BIT_RELOAD, CMHDZ_HELP_TEXT_BIT_HEADSHOT, CMHDZ_HELP_TEXT_BIT_THROW, CMHDZ_HELP_TEXT_BIT_MICROAIM, CMHDZ_HELP_TEXT_BIT_PAINKILLERS, CMHDZ_HELP_TEXT_BIT_BUFF, CMHDZ_HELP_TEXT_BIT_PILLS, CMHDZ_HELP_TEXT_BIT_CASH, CMHDZ_HELP_TEXT_BIT_VIDEO, CMHDZ_HELP_TEXT_BIT_AT_LEAST_ONE_HEADSHOT, CMHDZ_HELP_TEXT_BIT_FOD_GOLD, CMHDZ_HELP_TEXT_BIT_FOD_SILVER, CMHDZ_HELP_TEXT_BIT_FOD_BRONZE, CMHDZ_HELP_TEXT_BIT_TRAINED_TO_KILL, CMHDZ_HELP_TEXT_BIT_DIRECTOR, CMHDZ_HELP_TEXT_BIT_STRAIGHT_TO_VIDEO, CMHDZ_HELP_TEXT_BIT_MONKEY, CMHDZ_HELP_TEXT_BIT_RIFLE, CMHDZ_HELP_TEXT_BIT_SHOTGUN, CMHDZ_HELP_TEXT_BIT_NAIL, CMHDZ_HELP_TEXT_BIT_MOLOTOV, CMHDZ_HELP_TEXT_BIT_NAILBOMB, CMHDZ_HELP_TEXT_BIT_BEARSY, CMHDZ_HELP_TEXT_BIT_DYNAMITE ENDENUM ENUM CMHDZ_HUD_CHAR CMHDZ_HUD_CHAR_INVALID = 0, CMHDZ_HUD_CHAR_SPACE = 1, CMHDZ_HUD_CHAR_0 = 2, CMHDZ_HUD_CHAR_1 = 3, CMHDZ_HUD_CHAR_2 = 4, CMHDZ_HUD_CHAR_3 = 5, CMHDZ_HUD_CHAR_4 = 6, CMHDZ_HUD_CHAR_5 = 7, CMHDZ_HUD_CHAR_6 = 8, CMHDZ_HUD_CHAR_7 = 9, CMHDZ_HUD_CHAR_8 = 10, CMHDZ_HUD_CHAR_9 = 11, CMHDZ_HUD_CHAR_A = 12, CMHDZ_HUD_CHAR_B = 13, CMHDZ_HUD_CHAR_C = 14, CMHDZ_HUD_CHAR_D = 15, CMHDZ_HUD_CHAR_E = 16, CMHDZ_HUD_CHAR_F = 17, CMHDZ_HUD_CHAR_G = 18, CMHDZ_HUD_CHAR_H = 19, CMHDZ_HUD_CHAR_I = 20, CMHDZ_HUD_CHAR_J = 21, CMHDZ_HUD_CHAR_K = 22, CMHDZ_HUD_CHAR_L = 23, CMHDZ_HUD_CHAR_M = 24, CMHDZ_HUD_CHAR_N = 25, CMHDZ_HUD_CHAR_O = 26, CMHDZ_HUD_CHAR_P = 27, CMHDZ_HUD_CHAR_Q = 28, CMHDZ_HUD_CHAR_R = 29, CMHDZ_HUD_CHAR_S = 30, CMHDZ_HUD_CHAR_T = 31, CMHDZ_HUD_CHAR_U = 32, CMHDZ_HUD_CHAR_V = 33, CMHDZ_HUD_CHAR_W = 34, CMHDZ_HUD_CHAR_X = 35, CMHDZ_HUD_CHAR_Y = 36, CMHDZ_HUD_CHAR_Z = 37, CMHDZ_HUD_CHAR_APOSTROPHE = 38, CMHDZ_HUD_CHAR_BACKSLASH = 39, CMHDZ_HUD_CHAR_CLOSEBRACKET = 40, CMHDZ_HUD_CHAR_COLON = 41, CMHDZ_HUD_CHAR_COMMA = 42, CMHDZ_HUD_CHAR_DOLLAR = 43, CMHDZ_HUD_CHAR_EXCLAMATION = 44, CMHDZ_HUD_CHAR_FULL_STOP = 45, CMHDZ_HUD_CHAR_MINUS = 46, CMHDZ_HUD_CHAR_OPEN_BRACKET = 47, CMHDZ_HUD_CHAR_PLUS = 48, CMHDZ_HUD_CHAR_QUESTION = 49, CMHDZ_HUD_CHAR_SEMI_COLON = 50, CMHDZ_HUD_CHAR_SPEECH = 51, CMHDZ_HUD_CHAR_STAR = 52, CMHDZ_HUD_CHAR_PERCENT = 53, NUM_CMHDZ_HUD_CHAR ENDENUM ENUM CMHDZ_HUD_TEXTPIVOT CMHDZ_HUD_TEXTPIVOT_LEFT, CMHDZ_HUD_TEXTPIVOT_CENTER, CMHDZ_HUD_TEXTPIVOT_RIGHT, CMHDZ_HUD_TEXTPIVOT_USE_STORED ENDENUM ENUM CMHDZ_ITEM_DATA_BITS CMHDZ_ITEM_DATA_BITS_NONE = 0, CMHDZ_ITEM_DATA_BITS_SPAWNED = BIT0, CMHDZ_ITEM_DATA_BITS_RENDERING = BIT1, CMHDZ_ITEM_DATA_BITS_SHOT = BIT2 ENDENUM ENUM CMHDZ_ITEM_TYPES CMHDZ_ITEM_NONE = -1, CMHDZ_ITEM_HEALTH = 0, CMHDZ_ITEM_SHIELD, CMHDZ_ITEM_BUFF, CMHDZ_ITEM_VIDEOTAPE, CMHDZ_ITEM_NAIL_GUN_AMMO, CMHDZ_ITEM_RIFLE_AMMO, CMHDZ_ITEM_SHOTGUN_AMMO, CMHDZ_ITEM_MOLOTOV, CMHDZ_ITEM_NAILBOMB, CMHDZ_ITEM_BRICK, CMHDZ_ITEM_DYNAMITE, CMHDZ_ITEM_CASH, NUM_CMHDZ_ITEM_TYPES ENDENUM // Bits for one shot Director dialogue ENUM CMHDZ_DIRECTOR_BITS CMHDZ_DIRECTOR_BITS_Level_Start_TRIGGER, CMHDZ_DIRECTOR_BITS_Level_Start_PLAYED, CMHDZ_DIRECTOR_BITS_First_Enemy_Appear_PLAYED, CMHDZ_DIRECTOR_BITS_Enemy_Kill_PLAYED, // CMHDZ_DIRECTOR_BITS_Enemy_Kill_Headshot_PLAYED, CMHDZ_DIRECTOR_BITS_Enemy_Kill_Nailgun_PLAYED, CMHDZ_DIRECTOR_BITS_Kill_Streak_PLAYED, CMHDZ_DIRECTOR_BITS_Kill_Streak_Long_PLAYED, CMHDZ_DIRECTOR_BITS_Kill_Streak_Extreme_PLAYED, CMHDZ_DIRECTOR_BITS_Player_Damage_Played, CMHDZ_DIRECTOR_BITS_Player_Near_Death_Played, CMHDZ_DIRECTOR_BITS_Props_Destroyed_Played ENDENUM ENUM CMHDZ_LEVEL_SCREEN CMHDZ_FADING_IN = 0, CMHDZ_PLAY, CMHDZ_WAIT_FOR_DEAD, CMHDZ_FADING_OUT ENDENUM ENUM CMHDZ_LEVELS CMHDZ_LEVEL_CITY = 0, CMHDZ_LEVEL_SCRAPYARD, CMHDZ_LEVEL_ASYLUM, CMHDZ_LEVEL_PARK, CMHDZ_LEVEL_SLAUGHTERHOUSE, CMHDZ_MAX_LEVELS ENDENUM ENUM CMHDZ_LEVELS_BITSET CMHDZ_LEVELS_BIT_STOPPED = 0, CMHDZ_LEVELS_BIT_TOWN_LARGE_BUILDING_PASSED_BY1, CMHDZ_LEVELS_BIT_REPLAYING_LEVEL, CMHDZ_LEVELS_BIT_USED_SPECIAL_WEAPON, CMHDZ_LEVELS_BIT_DONE_RESULTS_SCREEN_AUDIO, CMHDZ_LEVELS_BIT_ADDED_ON_ACCURACY_BONUS, CMHDZ_LEVELS_BIT_PLAYED_DEATH_SCREEN_AUDIO, CMHDZ_LEVELS_BIT_PLAYED_RESULTS_SCORE_AUDIO, CMHDZ_LEVELS_BIT_PLAYED_ACCURACY_SCORE_AUDIO, CMHDZ_LEVELS_BIT_CHALLENGE_MONKEY_C_MONKEY_DIE_MONKEY_KILL, CMHDZ_LEVELS_BIT_CHALLENGE_MONKEY_C_MONKEY_DIE_BUNNY_KILL ENDENUM ENUM CMHDZ_MENU_OPTIONS CMHDZ_START = 0, CMHDZ_SCORES, CMHDZ_WANTED_1, CMHDZ_WANTED_2, CMHDZ_WANTED_3, CMHDZ_WANTED_4, CMHDZ_WANTED_5, CMHDZ_REWIND, CMHDZ_EJECT ENDENUM ENUM CMHDZ_MUSIC_BITS CMHDZ_MUSIC_BIT_STARTED_INTRO, CMHDZ_MUSIC_BIT_STARTED_TITLE, //CMHDZ_MUSIC_BIT_STARTED_LEVEL, CMHDZ_MUSIC_BIT_STOPPED, CMHDZ_MUSIC_BIT_DEATH ENDENUM ENUM CMHDZ_MUSIC_EVENTS CMHDZ_MUSIC_EVENT_INVALID = -1, CMHDZ_MUSIC_EVENT_INTRO, CMHDZ_MUSIC_EVENT_TITLE, CMHDZ_MUSIC_EVENT_GOSPEL, CMHDZ_MUSIC_EVENT_BUCKLE, CMHDZ_MUSIC_EVENT_HILLBILLY, CMHDZ_MUSIC_EVENT_RUCKUS, CMHDZ_MUSIC_EVENT_BARREL, CMHDZ_MUSIC_EVENT_DEATH, CMHDZ_MUSIC_EVENT_HIT, CMHDZ_MUSIC_EVENT_HIT_ALT, CMHDZ_MUSIC_EVENT_STOP, CMHDZ_MUSIC_EVENT_FINAL_BOSS, CMHDZ_MUSIC_EVENT_FINAL_BOSS_DEFEATED ENDENUM ENUM CMHDZ_PLAYER_BITSET CMHDZ_PLAYER_BIT_INVULNERABILE, CMHDZ_PLAYER_BIT_HIDE_RETICULE, CMHDZ_PLAYER_BIT_INIT_NEW_CHAIN, // CMHDZ_PLAYER_BIT_NAILGUN_OVERHEAT, // CMHDZ_PLAYER_BIT_NAILGUN_STOPPED_SHOOTING, CMHDZ_PLAYER_BIT_RELOADED_FIRST_BULLET, CMHDZ_PLAYER_BIT_QUAD_DAMAGE, CMHDZ_PLAYER_BIT_DYING ENDENUM ENUM CMHDZ_PLAYER_PED_ANIM_STATE CMHDZ_PLAYER_PED_ANIM_IDLE, CMHDZ_PLAYER_PED_ANIM_IDLE_TO_AIM, CMHDZ_PLAYER_PED_ANIM_AIM_IDLE, CMHDZ_PLAYER_PED_ANIM_PLAY_IDLE, CMHDZ_PLAYER_PED_ANIM_AIM_IDLE_TO_LOSE_LIFE, CMHDZ_PLAYER_PED_ANIM_AIM_IDLE_TO_COMPLETE_SCREEN, CMHDZ_PLAYER_PED_ANIM_AIM_IDLE_TO_COMPLETE_GAME ENDENUM ENUM CMHDZ_PLAYER_WEAPON CMHDZ_PLAYER_WEAPON_NONE = -1, CMHDZ_PLAYER_WEAPON_REVOLVER = 0, //CMHDZ_PLAYER_WEAPON_REVOLVER, CMHDZ_PLAYER_WEAPON_RIFLE, CMHDZ_PLAYER_WEAPON_SHOTGUN, CMHDZ_PLAYER_WEAPON_NAILGUN, CMHDZ_PLAYER_WEAPON_MAX ENDENUM ENUM CMHDZ_PLAYER_WEAPON_TYPE CMHDZ_PLAYER_WEAPON_TYPE_DEFAULT = 0, CMHDZ_PLAYER_WEAPON_TYPE_SPECIAL, CMHDZ_PLAYER_WEAPON_TYPE_MAX ENDENUM ENUM CMHDZ_PROJECTILE_TYPES CMHDZ_PROJECTILE_NONE, CMHDZ_PROJECTILE_DYNAMITE, CMHDZ_PROJECTILE_MOLOTOV, CMHDZ_PROJECTILE_BRICK, CMHDZ_PROJECTILE_NAILBOMB, // Bearsy projectiles CMHDZ_PROJECTILE_BONE, CMHDZ_PROJECTILE_JOWL, CMHDZ_PROJECTILE_LEG, CMHDZ_PROJECTILE_TROTTER, NUM_CMHDZ_PROJECTILE_TYPES ENDENUM ENUM CMHDZ_PROJECTILE_STATE CMHDZ_PROJECTILE_STATE_INACTIVE, CMHDZ_PROJECTILE_STATE_AIRBORNE, CMHDZ_PROJECTILE_STATE_IMPACT ENDENUM ENUM CMHDZ_REPLAY_BITS CMHDZ_REPLAY_BITS_NONE = 0, CMHDZ_REPLAY_BITS_WAS_PLAYBACK_ON = BIT0, CMHDZ_REPLAY_BITS_WAS_RECORDING_ON = BIT1, CMHDZ_REPLAY_BITS_IS_NEW_FRAME = BIT2, CMHDZ_REPLAY_BITS_IS_RECORD_FRAME = BIT3, CMHDZ_REPLAY_BITS_IS_PLAYBACK = BIT4, CMHDZ_REPLAY_BITS_IS_RECORDING = BIT5 ENDENUM ENUM CMHDZ_RESULT_SCREEN_STATE CMHDZ_RESULT_SCREEN_STATE_INIT, CMHDZ_RESULT_SCREEN_STATE_DEAD_SCREEN, CMHDZ_RESULT_SCREEN_STATE_START_REWIND, CMHDZ_RESULT_SCREEN_STATE_REWIND, CMHDZ_RESULT_SCREEN_STATE_COMPLETE, CMHDZ_RESULT_SCREEN_STATE_GOTO_LEADERBOARD, NUM_CMHDZ_RESULT_SCREEN_STATE ENDENUM ENUM CMHDZ_RETICLE_BITS CMHDZ_RETICLE_BITS_NONE = 0, CMHDZ_RETICLE_BITS_IS_SHOOTING = BIT0, CMHDZ_RETICLE_BITS_HIT_TARGET = BIT1, CMHDZ_RETICLE_BITS_DESTROYED_TARGET = BIT2, CMHDZ_RETICLE_BITS_NO_AMMO = BIT3 ENDENUM ENUM CMHDZ_SCORE_TYPE CMHDZ_SCORE_TYPE_ENEMY, CMHDZ_SCORE_TYPE_ENEMY_HEADSHOT, CMHDZ_SCORE_TYPE_SCENERY, CMHDZ_SCORE_TYPE_ENEMY_EXPLOSION, CMHDZ_SCORE_TYPE_ANIMAL, CMHDZ_SCORE_TYPE_TAPE, CMHDZ_SCORE_TYPE_CASH, CMHDZ_SCORE_TYPE_BEARSY, CMHDZ_SCORE_TYPE_BEARSY_KILL ENDENUM ENUM CMHDZ_SCORE_INTEGER_TYPE CMHDZ_SCORE_INTEGER_TYPE_HI_SCORE, CMHDZ_SCORE_INTEGER_TYPE_MY_SCORE, CMHDZ_SCORE_INTEGER_TYPE_RED_SCORE, CMHDZ_SCORE_INTEGER_TYPE_BLUE_SCORE ENDENUM // The order of this enum is important: // The 1st 255 entries are enemy sprites and other things which will be shown by the replay system ENUM CMHDZ_SPRITE CMHDZ_SPRITE_NONE, CMHDZ_SPRITE_GANG_01_ATTACKING, CMHDZ_SPRITE_GANG_01_DEAD, CMHDZ_SPRITE_GANG_01_RUNNING_01, CMHDZ_SPRITE_GANG_01_RUNNING_02, CMHDZ_SPRITE_GANG_01_THROWING_01, CMHDZ_SPRITE_GANG_01_THROWING_02, CMHDZ_SPRITE_GANG_01_THROWING_03, CMHDZ_SPRITE_GANG_01_THROWING_04, CMHDZ_SPRITE_GANG_01_THROWING_05, CMHDZ_SPRITE_GANG_01_HEADSHOT_01, CMHDZ_SPRITE_GANG_01_HEADSHOT_02, CMHDZ_SPRITE_GANG_01_HEADSHOT_03, CMHDZ_SPRITE_GANG_01_HEADSHOT_04, CMHDZ_SPRITE_GANG_01_HEADSHOT_05, CMHDZ_SPRITE_GANG_01_HEADSHOT_06, CMHDZ_SPRITE_GANG_01_HEADSHOT_07, CMHDZ_SPRITE_GANG_01_HEADSHOT_08, CMHDZ_SPRITE_GANG_01_HEADSHOT_09, CMHDZ_SPRITE_GANG_02_ATTACKING, CMHDZ_SPRITE_GANG_02_DEAD, CMHDZ_SPRITE_GANG_02_RUNNING_01, CMHDZ_SPRITE_GANG_02_RUNNING_02, CMHDZ_SPRITE_GANG_02_THROWING_01, CMHDZ_SPRITE_GANG_02_THROWING_02, CMHDZ_SPRITE_GANG_02_THROWING_03, CMHDZ_SPRITE_GANG_02_THROWING_04, CMHDZ_SPRITE_GANG_02_THROWING_05, CMHDZ_SPRITE_GANG_02_THROWING_07, CMHDZ_SPRITE_GANG_02_THROWING_08, CMHDZ_SPRITE_GANG_02_THROWING_09, CMHDZ_SPRITE_GANG_02_HEADSHOT_01, CMHDZ_SPRITE_GANG_02_HEADSHOT_02, CMHDZ_SPRITE_GANG_02_HEADSHOT_03, CMHDZ_SPRITE_GANG_02_HEADSHOT_04, CMHDZ_SPRITE_GANG_02_HEADSHOT_05, CMHDZ_SPRITE_GANG_02_HEADSHOT_06, CMHDZ_SPRITE_GANG_02_HEADSHOT_07, CMHDZ_SPRITE_GANG_02_HEADSHOT_08, CMHDZ_SPRITE_GANG_02_HEADSHOT_09, CMHDZ_SPRITE_GANG_03_ATTACKING, CMHDZ_SPRITE_GANG_03_DEAD, CMHDZ_SPRITE_GANG_03_RUNNING_01, CMHDZ_SPRITE_GANG_03_RUNNING_02, CMHDZ_SPRITE_GANG_03_THROWING_01, CMHDZ_SPRITE_GANG_03_THROWING_02, CMHDZ_SPRITE_GANG_03_THROWING_03, CMHDZ_SPRITE_GANG_03_THROWING_04, CMHDZ_SPRITE_GANG_03_THROWING_05, CMHDZ_SPRITE_GANG_03_HEADSHOT_01, CMHDZ_SPRITE_GANG_03_HEADSHOT_02, CMHDZ_SPRITE_GANG_03_HEADSHOT_03, CMHDZ_SPRITE_GANG_03_HEADSHOT_04, CMHDZ_SPRITE_GANG_03_HEADSHOT_05, CMHDZ_SPRITE_GANG_03_HEADSHOT_06, CMHDZ_SPRITE_GANG_03_HEADSHOT_07, CMHDZ_SPRITE_GANG_03_HEADSHOT_08, CMHDZ_SPRITE_GANG_03_HEADSHOT_09, CMHDZ_SPRITE_GANG_04_ATTACKING, CMHDZ_SPRITE_GANG_04_DEAD, CMHDZ_SPRITE_GANG_04_RUNNING_01, CMHDZ_SPRITE_GANG_04_RUNNING_02, CMHDZ_SPRITE_GANG_04_THROWING_01, CMHDZ_SPRITE_GANG_04_THROWING_02, CMHDZ_SPRITE_GANG_04_THROWING_03, CMHDZ_SPRITE_GANG_04_THROWING_04, CMHDZ_SPRITE_GANG_04_THROWING_05, CMHDZ_SPRITE_GANG_04_HEADSHOT_01, CMHDZ_SPRITE_GANG_04_HEADSHOT_02, CMHDZ_SPRITE_GANG_04_HEADSHOT_03, CMHDZ_SPRITE_GANG_04_HEADSHOT_04, CMHDZ_SPRITE_GANG_04_HEADSHOT_05, CMHDZ_SPRITE_GANG_04_HEADSHOT_06, CMHDZ_SPRITE_GANG_04_HEADSHOT_07, CMHDZ_SPRITE_GANG_04_HEADSHOT_08, CMHDZ_SPRITE_GANG_04_HEADSHOT_09, CMHDZ_SPRITE_GANG_05_ATTACKING, CMHDZ_SPRITE_GANG_05_DEAD, CMHDZ_SPRITE_GANG_05_RUNNING_01, CMHDZ_SPRITE_GANG_05_RUNNING_02, CMHDZ_SPRITE_GANG_05_THROWING_01, CMHDZ_SPRITE_GANG_05_THROWING_02, CMHDZ_SPRITE_GANG_05_THROWING_03, CMHDZ_SPRITE_GANG_05_THROWING_04, CMHDZ_SPRITE_GANG_05_THROWING_05, CMHDZ_SPRITE_GANG_05_HEADSHOT_01, CMHDZ_SPRITE_GANG_05_HEADSHOT_02, CMHDZ_SPRITE_GANG_05_HEADSHOT_03, CMHDZ_SPRITE_GANG_05_HEADSHOT_04, CMHDZ_SPRITE_GANG_05_HEADSHOT_05, CMHDZ_SPRITE_GANG_05_HEADSHOT_06, CMHDZ_SPRITE_GANG_05_HEADSHOT_07, CMHDZ_SPRITE_GANG_05_HEADSHOT_08, CMHDZ_SPRITE_GANG_05_HEADSHOT_09, CMHDZ_SPRITE_GANG_RARE_BUNNY_RUNNING_01, CMHDZ_SPRITE_GANG_RARE_BUNNY_RUNNING_02, CMHDZ_SPRITE_GANG_RARE_BUNNY_DEAD, CMHDZ_SPRITE_GANG_RARE_MONKEY_RUNNING_01, CMHDZ_SPRITE_GANG_RARE_MONKEY_RUNNING_02, CMHDZ_SPRITE_GANG_RARE_MONKEY_DEAD, CMHDZ_SPRITE_GANG_RARE_RAT_RUNNING_01, CMHDZ_SPRITE_GANG_RARE_RAT_RUNNING_02, CMHDZ_SPRITE_GANG_BURNING_01, CMHDZ_SPRITE_GANG_BURNING_02, CMHDZ_SPRITE_FOREGROUND_ENEMY_01_A, CMHDZ_SPRITE_FOREGROUND_ENEMY_01_A_ATTACK, CMHDZ_SPRITE_FOREGROUND_ENEMY_01_B, CMHDZ_SPRITE_FOREGROUND_ENEMY_01_DEAD, CMHDZ_SPRITE_FOREGROUND_ENEMY_01_HEADSHOT, CMHDZ_SPRITE_FOREGROUND_ENEMY_02_A, CMHDZ_SPRITE_FOREGROUND_ENEMY_02_A_ATTACK, CMHDZ_SPRITE_FOREGROUND_ENEMY_02_B, CMHDZ_SPRITE_FOREGROUND_ENEMY_02_DEAD, CMHDZ_SPRITE_FOREGROUND_ENEMY_02_HEADSHOT, CMHDZ_SPRITE_FOREGROUND_ENEMY_03_A, CMHDZ_SPRITE_FOREGROUND_ENEMY_03_B, CMHDZ_SPRITE_FOREGROUND_ENEMY_03_DEAD, CMHDZ_SPRITE_FOREGROUND_ENEMY_03_HEADSHOT, CMHDZ_SPRITE_FOREGROUND_ENEMY_04_A, CMHDZ_SPRITE_FOREGROUND_ENEMY_04_A_ATTACK, CMHDZ_SPRITE_FOREGROUND_ENEMY_04_B, CMHDZ_SPRITE_FOREGROUND_ENEMY_04_A_DEAD, CMHDZ_SPRITE_FOREGROUND_ENEMY_04_B_DEAD, CMHDZ_SPRITE_FOREGROUND_ENEMY_04_A_HEADSHOT, CMHDZ_SPRITE_FOREGROUND_ENEMY_04_B_HEADSHOT, CMHDZ_SPRITE_FOREGROUND_ENEMY_05_A, CMHDZ_SPRITE_FOREGROUND_ENEMY_05_B_ATTACK, CMHDZ_SPRITE_FOREGROUND_ENEMY_05_B, CMHDZ_SPRITE_FOREGROUND_ENEMY_05_A_DEAD, CMHDZ_SPRITE_FOREGROUND_ENEMY_05_B_DEAD, CMHDZ_SPRITE_FOREGROUND_ENEMY_05_A_HEADSHOT, CMHDZ_SPRITE_FOREGROUND_ENEMY_05_B_HEADSHOT, CMHDZ_SPRITE_FOREGROUND_ENEMY_BURNING_01, CMHDZ_SPRITE_FOREGROUND_ENEMY_BURNING_02, CMHDZ_SPRITE_FOREGROUND_ENEMY_BURNING_03, CMHDZ_SPRITE_FOREGROUND_ENEMY_BURNING_04, CMHDZ_SPRITE_FG_ENEMY_GUNFIRE, CMHDZ_SPRITE_THROWING_DYNAMITE_LARGE_01, CMHDZ_SPRITE_THROWING_DYNAMITE_LARGE_02, CMHDZ_SPRITE_THROWING_DYNAMITE_MEDIUM_01, CMHDZ_SPRITE_THROWING_DYNAMITE_MEDIUM_02, CMHDZ_SPRITE_THROWING_DYNAMITE_SMALL_01, CMHDZ_SPRITE_THROWING_DYNAMITE_SMALL_02, CMHDZ_SPRITE_THROWING_MOLOTOV_LARGE, CMHDZ_SPRITE_THROWING_MOLOTOV_MEDIUM, CMHDZ_SPRITE_THROWING_MOLOTOV_SMALL, CMHDZ_SPRITE_THROWING_NAILBOMB_LARGE, CMHDZ_SPRITE_THROWING_NAILBOMB_MEDIUM, CMHDZ_SPRITE_THROWING_NAILBOMB_SMALL, CMHDZ_SPRITE_THROWING_BRICK_LARGE, CMHDZ_SPRITE_THROWING_BRICK_MEDIUM, CMHDZ_SPRITE_THROWING_BRICK_SMALL, CMHDZ_SPRITE_BEARSY_BONE_HIT_01, CMHDZ_SPRITE_BEARSY_BONE_HIT_02, CMHDZ_SPRITE_BEARSY_BONE_LARGE_01, CMHDZ_SPRITE_BEARSY_BONE_LARGE_02, CMHDZ_SPRITE_BEARSY_BONE_MED_01, CMHDZ_SPRITE_BEARSY_BONE_MED_02, CMHDZ_SPRITE_BEARSY_BONE_SMALL_01, CMHDZ_SPRITE_BEARSY_BONE_SMALL_02, CMHDZ_SPRITE_BEARSY_JOWL_HIT_01, CMHDZ_SPRITE_BEARSY_JOWL_HIT_02, CMHDZ_SPRITE_BEARSY_JOWL_LARGE_01, CMHDZ_SPRITE_BEARSY_JOWL_LARGE_02, CMHDZ_SPRITE_BEARSY_JOWL_MED_01, CMHDZ_SPRITE_BEARSY_JOWL_MED_02, CMHDZ_SPRITE_BEARSY_JOWL_SMALL_01, CMHDZ_SPRITE_BEARSY_JOWL_SMALL_02, CMHDZ_SPRITE_BEARSY_LEG_HIT_01, CMHDZ_SPRITE_BEARSY_LEG_HIT_02, CMHDZ_SPRITE_BEARSY_LEG_LARGE_01, CMHDZ_SPRITE_BEARSY_LEG_LARGE_02, CMHDZ_SPRITE_BEARSY_LEG_MED_01, CMHDZ_SPRITE_BEARSY_LEG_MED_02, CMHDZ_SPRITE_BEARSY_LEG_SMALL_01, CMHDZ_SPRITE_BEARSY_LEG_SMALL_02, CMHDZ_SPRITE_BEARSY_TROTTER_HIT_01, CMHDZ_SPRITE_BEARSY_TROTTER_HIT_02, CMHDZ_SPRITE_BEARSY_TROTTER_LARGE_01, CMHDZ_SPRITE_BEARSY_TROTTER_LARGE_02, CMHDZ_SPRITE_BEARSY_TROTTER_MED_01, CMHDZ_SPRITE_BEARSY_TROTTER_MED_02, CMHDZ_SPRITE_BEARSY_TROTTER_SMALL_01, CMHDZ_SPRITE_BEARSY_TROTTER_SMALL_02, CMHDZ_SPRITE_THROWN_WEAPON_EXP_01, CMHDZ_SPRITE_THROWN_WEAPON_EXP_02, CMHDZ_SPRITE_TRASHBAG_BIG, CMHDZ_SPRITE_TRASHBAG_SMALL, CMHDZ_SPRITE_TRASHCAN_BIG_01, CMHDZ_SPRITE_TRASHCAN_BIG_02, CMHDZ_SPRITE_TRASHCAN_SMALL_01, CMHDZ_SPRITE_TRASHCAN_SMALL_02, CMHDZ_SPRITE_OUCH1, CMHDZ_SPRITE_FENCE, CMHDZ_SPRITE_CITY_BUILDING_06, CMHDZ_SPRITE_CITY_BUILDING_07, CMHDZ_SPRITE_CITY_BUILDING_08, CMHDZ_SPRITE_SCRAPYARD_PROP_MD_VAN_01, CMHDZ_SPRITE_SCRAPYARD_PROP_MD_VAN_02, CMHDZ_SPRITE_SCRAPYARD_PROP_MD_VAN_03, CMHDZ_SPRITE_SCRAPYARD_PROP_MD_VAN_04, CMHDZ_SPRITE_SCRAPYARD_PROP_MD_CAR_01, CMHDZ_SPRITE_SCRAPYARD_PROP_MD_CAR_02, CMHDZ_SPRITE_SCRAPYARD_PROP_MD_CAR_03, CMHDZ_SPRITE_SCRAPYARD_PROP_MD_CAR_04, CMHDZ_SPRITE_THEMEPARK_BUILDING_1, CMHDZ_SPRITE_THEMEPARK_BUILDING_2, CMHDZ_SPRITE_THEMEPARK_BUILDING_3, CMHDZ_SPRITE_THEMEPARK_BUILDING_4, CMHDZ_SPRITE_THEMEPARK_CLOWNBOARD_1, CMHDZ_SPRITE_THEMEPARK_CLOWNBOARD_2, CMHDZ_SPRITE_ASYLUM_PROP_MD_BED, CMHDZ_SPRITE_ASYLUM_PROP_MD_WHEELCHAIR, CMHDZ_SPRITE_ASYLUM_PROP_MD_MATTRESS, CMHDZ_SPRITE_ASYLUM_PROP_LIGHT_STATE_1, CMHDZ_SPRITE_ASYLUM_PROP_LIGHT_STATE_2, CMHDZ_SPRITE_ASYLUM_RADIATOR_PROP, CMHDZ_SPRITE_ASYLUM_RADIATOR_DOOR, CMHDZ_SPRITE_ASYLUM_GRAFFITI_1, CMHDZ_SPRITE_ASYLUM_GRAFFITI_2, CMHDZ_SPRITE_ASYLUM_GRAFFITI_3, CMHDZ_SPRITE_ROCKS, CMHDZ_SPRITE_WATER_TANK, CMHDZ_SPRITE_FLOOR_GRASS, CMHDZ_SPRITE_LEVEL_03_FOREST_ROCKS, CMHDZ_SPRITE_TREE_01, CMHDZ_SPRITE_TREE_02, CMHDZ_SPRITE_BARREL_HORIZONTAL, CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_ASSETS_10, CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_CAVE_TILE, CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_CAVE_TILE_02, CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_MINECART, CMHDZ_SPRITE_THEMEPARK_MINECART_WHEEL_01, CMHDZ_SPRITE_THEMEPARK_MINECART_WHEEL_02, CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_ROCK, CMHDZ_SPRITE_PROP_BARRELS, CMHDZ_SPRITE_PROP_FOREGROUND_TRASH, CMHDZ_SPRITE_PROP_BARRIER, CMHDZ_SPRITE_WOODENSTRUCTURE, CMHDZ_SPRITE_SLAUGHTERHOUSE_PROP_DOOR_01, CMHDZ_SPRITE_SLAUGHTERHOUSE_PROP_DOOR_02, CMHDZ_SPRITE_SLAUGHTERHOUSE_PROP_WINDOW, CMHDZ_SPRITE_SLAUGHTERHOUSE_PROP_MEATGRINDER_01, CMHDZ_SPRITE_SLAUGHTERHOUSE_PROP_MEATGRINDER_02, CMHDZ_SPRITE_SLAUGHTERHOUSE_PIG_01, CMHDZ_SPRITE_SLAUGHTERHOUSE_PIG_02, CMHDZ_SPRITE_SLAUGHTERHOUSE_BODYBAG_01, CMHDZ_SPRITE_SLAUGHTERHOUSE_BODYBAG_02, CMHDZ_SPRITE_SLAUGHTERHOUSE_BODYBAG_03, CMHDZ_SPRITE_SLAUGHTERHOUSE_FLOOR_BODYBAG_01, CMHDZ_SPRITE_SLAUGHTERHOUSE_FLOOR_BODYBAG_02, CMHDZ_SPRITE_SLAUGHTERHOUSE_FLOOR_BODYBAG_03, CMHDZ_SPRITE_SLAUGHTERHOUSE_FLOOR_BODYBAG_04, CMHDZ_SPRITE_SLAUGHTERHOUSE_PIG_BATCH, CMHDZ_SPRITE_SLAUGHTERHOUSE_MEATHOOK, CMHDZ_SPRITE_SLAUGHTERHOUSE_PROP_LIGHT, CMHDZ_SPRITE_CACTUS_1, CMHDZ_SPRITE_CACTUS_2, CMHDZ_SPRITE_CACTUS_3, CMHDZ_SPRITE_PROP_BUSH_LARGE, CMHDZ_SPRITE_PROP_BUSH_SMALL, CMHDZ_SPRITE_PROP_CACTUS_07, CMHDZ_SPRITE_SCRAPYARD_PROP_FENCE, CMHDZ_SPRITE_SCRAPYARD_PROP_BG_CARS, CMHDZ_SPRITE_PROP_ROCK_LARGE, CMHDZ_SPRITE_PROP_ROCK_SMALL, CMHDZ_SPRITE_ITEM_HEALTH, CMHDZ_SPRITE_ITEM_SHIELD, CMHDZ_SPRITE_ITEM_BUFF, CMHDZ_SPRITE_ITEM_ALCOHOL, CMHDZ_SPRITE_ITEM_GOLD_BARS, CMHDZ_SPRITE_ITEM_QUAD_DAMAGE, CMHDZ_SPRITE_ITEM_VIDEOTAPE, //CMHDZ_SPRITE_ITEM_REVOLVER_AMMO, CMHDZ_SPRITE_ITEM_MACHINE_GUN_AMMO, CMHDZ_SPRITE_ITEM_RIFLE_AMMO, CMHDZ_SPRITE_ITEM_SHOTGUN_AMMO, CMHDZ_SPRITE_ITEM_MOLOTOV_AMMO, CMHDZ_SPRITE_ITEM_NAILBOMB_AMMO, CMHDZ_SPRITE_ITEM_CASH, CMHDZ_SPRITE_GORE_BACKGROUND_1, CMHDZ_SPRITE_GORE_BACKGROUND_2, CMHDZ_SPRITE_GORE_BACKGROUND_3, CMHDZ_SPRITE_GORE_BACKGROUND_4, CMHDZ_SPRITE_GORE_BACKGROUND_5, CMHDZ_SPRITE_GORE_BACKGROUND_6, CMHDZ_SPRITE_GORE_BACKGROUND_7, CMHDZ_SPRITE_GORE_BACKGROUND_8, //CMHDZ_SPRITE_GORE_BACKGROUND_9, CMHDZ_SPRITE_GORE_BACKGROUND_10, CMHDZ_SPRITE_GORE_BACKGROUND_11, CMHDZ_SPRITE_GORE_BACKGROUND_12, CMHDZ_SPRITE_GORE_BACKGROUND_13, CMHDZ_SPRITE_BEARSY_WALK_FRAME_01, CMHDZ_SPRITE_BEARSY_WALK_FRAME_02, CMHDZ_SPRITE_BEARSY_WALK_FRAME_03, CMHDZ_SPRITE_BEARSY_WALK_FRAME_04, CMHDZ_SPRITE_BEARSY_WALK_FRAME_05, CMHDZ_SPRITE_BEARSY_WALK_FRAME_IDLE, CMHDZ_SPRITE_BEARSY_THROWING_01, CMHDZ_SPRITE_BEARSY_THROWING_02, CMHDZ_SPRITE_BEARSY_THROWING_03, CMHDZ_SPRITE_BEARSY_BACK_PAIN, CMHDZ_SPRITE_BEARSY_FORE_PAIN_1, CMHDZ_SPRITE_BEARSY_FORE_PAIN_2, CMHDZ_SPRITE_BEARSY_FORE_PAIN_3, CMHDZ_SPRITE_BEARSY_FORE_PAIN_4, CMHDZ_SPRITE_BEARSY_FORE_PAIN_5, CMHDZ_SPRITE_BEARSY_FORE_PAIN_6, CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_01, CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_02, CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_03, CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_04, CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_05, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_01, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_02, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_03, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_04, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_05, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_01, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_02, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_03, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_04, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_01, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_02, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_03, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_04, CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_05, CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_01, CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_02, CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_03, CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_04, CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_05, CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_06, CMHDZ_SPRITE_SCREEN_DAMAGE_RIP, CMHDZ_SPRITE_SCREEN_DAMAGE_BLOOD_SPLATTER, CMHDZ_SPRITE_BEARSY_BACKGROUND_STAGGERED, CMHDZ_SPRITE_BEARSY_FOREGROUND_STAGGERED, CMHDZ_SPRITE_BEARSY_DEATH_01, CMHDZ_SPRITE_BEARSY_DEATH_02, CMHDZ_SPRITE_BEARSY_DEATH_PAIN_01, CMHDZ_SPRITE_BEARSY_DEATH_PAIN_02, CMHDZ_SPRITE_BEARSY_DEATH_PAIN_03, CMHDZ_SPRITE_BEARSY_DEATH_PAIN_04, CMHDZ_SPRITE_BEARSY_DEATH_PAIN_05, CMHDZ_SPRITE_POWER_UP_LINE_01, CMHDZ_SPRITE_POWER_UP_LINE_02, CMHDZ_SPRITE_POWER_UP_LINE_03, CMHDZ_SPRITE_POWER_UP_LINE_04, CMHDZ_SPRITE_POWER_UP_LINE_05, NUM_CMHDZ_SPRITE ENDENUM ENUM CMHDZ_TEXDICT CMHDZ_TEXDICT_INVALID = -1, CMHDZ_TEXDICT_BASE, CMHDZ_TEXDICT_TITLE, CMHDZ_TEXDICT_HUD, CMHDZ_TEXDICT_FACADE, CMHDZ_TEXDICT_LVLSELECT, CMHDZ_TEXDICT_LVLCOMP, CMHDZ_TEXDICT_LVL1, CMHDZ_TEXDICT_LVL2, CMHDZ_TEXDICT_LVL3, CMHDZ_TEXDICT_LVL4, CMHDZ_TEXDICT_LVL5, CMHDZ_TEXDICT_FG_ENEMY_A, CMHDZ_TEXDICT_FG_ENEMY_B, CMHDZ_TEXDICT_FG_ENEMY_C, CMHDZ_TEXDICT_FG_ENEMY_D, //CMHDZ_TEXDICT_FG_ENEMY_D, CMHDZ_TEXDICT_FG_ENEMY_E, CMHDZ_TEXDICT_FG_ENEMY_E_2, CMHDZ_TEXDICT_ENEMY_BURNING, CMHDZ_TEXDICT_COMMON_PROPS, CMHDZ_TEXDICT_RESULTS, CMHDZ_TEXDICT_DEAD, CMHDZ_TEXDICT_CH_GANG_A, CMHDZ_TEXDICT_CH_GANG_B, CMHDZ_TEXDICT_CH_GANG_C, CMHDZ_TEXDICT_CH_GANG_D, CMHDZ_TEXDICT_CH_GANG_E, CMHDZ_TEXDICT_CH_GANG_RARE, CMHDZ_TEXDICT_CH_CITY, CMHDZ_TEXDICT_CH_SCRAPYARD, CMHDZ_TEXDICT_CH_ASYLUM, CMHDZ_TEXDICT_CH_THEMEPARK, CMHDZ_TEXDICT_CH_SLAUGHTERHOUSE, CMHDZ_TEXDICT_CH_VHSFONT, CMHDZ_TEXDICT_CH_TITLES, CMHDZ_TEXDICT_CH_DAMAGE, CMHDZ_TEXDICT_CH_RESULTS, CMHDZ_TEXDICT_BACKGROUND_GORE, CMHDZ_TEXDICT_BEARSY, CMHDZ_TEXDICT_BEARSY_THROWING, CMHDZ_TEXDICT_BEARSY_FOREGROUND, CMHDZ_TEXDICT_BEARSY_FOREGROUND_ATTACK, CMHDZ_TEXDICT_BEARSY_BONE, CMHDZ_TEXDICT_BEARSY_JOWL, CMHDZ_TEXDICT_BEARSY_LEG, CMHDZ_TEXDICT_BEARSY_TROTTER, CMHDZ_TEXDICT_BEARSY_EFFECTS, CMHDZ_TEXDICT_BEARSY_DEATH, CMHDZ_TEXDICT_RETICLE_TYPES, NUM_CMHDZ_TEXTDICT ENDENUM #IF IS_DEBUG_BUILD //---------------------------------- // NOT GENERATED ENUM FUNCTIONS //---------------------------------- FUNC STRING CMHDZ_EDITOR_MODE_TO_STRING(INT iType) SWITCH (iType) CASE CMHDZ_EDITOR_MODE_ENEMY RETURN "Enemy" BREAK CASE CMHDZ_EDITOR_MODE_COVER RETURN "Cover" BREAK // CASE CMHDZ_EDITOR_MODE_HOSTAGE // RETURN "Hostage" // BREAK CASE CMHDZ_EDITOR_MODE_ITEM RETURN "Item" BREAK CASE CMHDZ_EDITOR_MODE_LEVEL RETURN "Level" BREAK CASE CMHDZ_EDITOR_MODE_BOSS RETURN "Boss" BREAK ENDSWITCH RETURN "NONE" ENDFUNC FUNC STRING CMHDZ_LANE_TO_STRING(INT iLane) SWITCH (iLane) CASE ciCMHDZ_LANE_BACKGROUND RETURN "ciCMHDZ_LANE_BACKGROUND" CASE ciCMHDZ_LANE_FOREGROUND RETURN "ciCMHDZ_LANE_FOREGROUND" CASE ciCMHDZ_LANE_MIDDLE RETURN "ciCMHDZ_LANE_MIDDLE" CASE ciCMHDZ_LANE_POPUP_LHS RETURN "ciCMHDZ_LANE_POPUP_LHS" CASE ciCMHDZ_LANE_POPUP_RHS RETURN "ciCMHDZ_LANE_POPUP_RHS" ENDSWITCH RETURN "ciCMHDZ_LANE_MIDDLE" ENDFUNC FUNC STRING CMHDZ_GET_SERVER_STATE_AS_STRING(INT iState) SWITCH iState CASE CMHDZ_GAME_STATE_INIT RETURN "GAME_STATE_INIT" CASE CMHDZ_GAME_STATE_RUNNING RETURN "GAME_STATE_RUNNING" CASE CMHDZ_GAME_STATE_LEAVE RETURN "GAME_STATE_LEAVE" CASE CMHDZ_GAME_STATE_END RETURN "GAME_STATE_END" ENDSWITCH RETURN "UNKNOWN" ENDFUNC FUNC STRING CMHDZ_SCREEN_TO_STRING(INT iLane) SWITCH (iLane) CASE 0 CASE 1 RETURN "1" CASE 2 RETURN "2" CASE 3 RETURN "3" CASE 4 RETURN "4" CASE 5 RETURN "5" CASE 6 RETURN "6" CASE 7 RETURN "7" CASE 8 RETURN "8" CASE 9 RETURN "9" CASE 10 RETURN "10" CASE 11 RETURN "11" CASE 12 RETURN "12" CASE 13 RETURN "13" CASE 14 RETURN "14" CASE 15 RETURN "15" CASE 16 RETURN "16" CASE 17 RETURN "17" ENDSWITCH RETURN "UNKNOWN" ENDFUNC //---------------------------------- // AUTOGENERATED ENUM FUNCTIONS //---------------------------------- FUNC STRING CMHDZ_ARCADE_CLIENT_STATE_TO_STRING(CMHDZ_ARCADE_CLIENT_STATE eType) SWITCH (eType) CASE CMHDZ_ARCADE_CLIENT_STATE_INIT RETURN "CMHDZ_ARCADE_CLIENT_STATE_INIT" CASE CMHDZ_ARCADE_CLIENT_STATE_REQUESTING_ASSETS RETURN "CMHDZ_ARCADE_CLIENT_STATE_REQUESTING_ASSETS" CASE CMHDZ_ARCADE_CLIENT_STATE_FIB RETURN "CMHDZ_ARCADE_CLIENT_STATE_FIB" CASE CMHDZ_ARCADE_CLIENT_STATE_INTRO RETURN "CMHDZ_ARCADE_CLIENT_STATE_INTRO" CASE CMHDZ_ARCADE_CLIENT_STATE_TITLE_SCREEN RETURN "CMHDZ_ARCADE_CLIENT_STATE_TITLE_SCREEN" CASE CMHDZ_ARCADE_CLIENT_STATE_LEVEL_SELECTION_MENU RETURN "CMHDZ_ARCADE_CLIENT_STATE_LEVEL_SELECTION_MENU" CASE CMHDZ_ARCADE_CLIENT_STATE_INIT_LEVEL RETURN "CMHDZ_ARCADE_CLIENT_STATE_INIT_LEVEL" CASE CMHDZ_ARCADE_CLIENT_STATE_PLAYING RETURN "CMHDZ_ARCADE_CLIENT_STATE_PLAYING" CASE CMHDZ_ARCADE_CLIENT_STATE_EDITOR_ACTIVE RETURN "CMHDZ_ARCADE_CLIENT_STATE_EDITOR_ACTIVE" CASE CMHDZ_ARCADE_CLIENT_STATE_RESULT_SCREEN RETURN "CMHDZ_ARCADE_CLIENT_STATE_RESULT_SCREEN" CASE CMHDZ_ARCADE_CLIENT_STATE_GAME_OVER RETURN "CMHDZ_ARCADE_CLIENT_STATE_GAME_OVER" CASE CMHDZ_ARCADE_CLIENT_STATE_OUTRO_MOVIE RETURN "CMHDZ_ARCADE_CLIENT_STATE_OUTRO_MOVIE" CASE CMHDZ_ARCADE_CLIENT_STATE_VIEW_LEADERBOARD RETURN "CMHDZ_ARCADE_CLIENT_STATE_VIEW_LEADERBOARD" CASE CMHDZ_ARCADE_CLIENT_STATE_EDIT_LEADERBOARD RETURN "CMHDZ_ARCADE_CLIENT_STATE_EDIT_LEADERBOARD" CASE CMHDZ_ARCADE_CLIENT_STATE_CLEANUP RETURN "CMHDZ_ARCADE_CLIENT_STATE_CLEANUP" CASE NUM_CMHDZ_ARCADE_CLIENT_STATE RETURN "NUM_CMHDZ_ARCADE_CLIENT_STATE" ENDSWITCH RETURN "CMHDZ_ARCADE_CLIENT_STATE_INVALID" ENDFUNC FUNC STRING CMHDZ_ARCADE_CLIENT_SUBSTATE_TO_STRING(CMHDZ_ARCADE_CLIENT_SUBSTATE eType) SWITCH (eType) CASE CMHDZ_ARCADE_CLIENT_SUBSTATE_INIT RETURN "CMHDZ_ARCADE_CLIENT_SUBSTATE_INIT" CASE CMHDZ_ARCADE_CLIENT_SUBSTATE_ACTIVE RETURN "CMHDZ_ARCADE_CLIENT_SUBSTATE_ACTIVE" CASE CMHDZ_ARCADE_CLIENT_SUBSTATE_CLEANUP RETURN "CMHDZ_ARCADE_CLIENT_SUBSTATE_CLEANUP" CASE NUM_CMHDZ_ARCADE_CLIENT_SUBSTATE RETURN "NUM_CMHDZ_ARCADE_CLIENT_SUBSTATE" ENDSWITCH RETURN "CMHDZ_ARCADE_CLIENT_SUBSTATE_INVALID" ENDFUNC FUNC STRING CMHDZ_ASSET_TYPES_TO_STRING(CMHDZ_ASSET_TYPES eType) SWITCH (eType) CASE CMHDZ_ASSET_INVALID RETURN "CMHDZ_ASSET_CMHDZ_ASSET_INVALID" CASE CMHDZ_ASSET_CACTUS_1 RETURN "CMHDZ_ASSET_CACTUS_1" CASE CMHDZ_ASSET_CACTUS_2 RETURN "CMHDZ_ASSET_CACTUS_2" CASE CMHDZ_ASSET_CACTUS_3 RETURN "CMHDZ_ASSET_CACTUS_3" CASE CMHDZ_ASSET_TRASHBAG_BIG RETURN "CMHDZ_ASSET_TRASHBAG_BIG" CASE CMHDZ_ASSET_TRASHBAG_SMALL RETURN "CMHDZ_ASSET_TRASHBAG_SMALL" CASE CMHDZ_ASSET_TRASHCAN_BIG_1 RETURN "CMHDZ_ASSET_TRASHCAN_BIG_1" CASE CMHDZ_ASSET_TRASHCAN_BIG_2 RETURN "CMHDZ_ASSET_TRASHCAN_BIG_2" CASE CMHDZ_ASSET_TRASHCAN_SMALL_1 RETURN "CMHDZ_ASSET_TRASHCAN_SMALL_1" CASE CMHDZ_ASSET_TRASHCAN_SMALL_2 RETURN "CMHDZ_ASSET_TRASHCAN_SMALL_2" CASE CMHDZ_ASSET_BUSH_1 RETURN "CMHDZ_ASSET_BUSH_1" CASE CMHDZ_ASSET_BUSH_2 RETURN "CMHDZ_ASSET_BUSH_2" CASE CMHDZ_ASSET_ROCK_SMALL RETURN "CMHDZ_ASSET_ROCK_SMALL" CASE CMHDZ_ASSET_ROCK_LARGE RETURN "CMHDZ_ASSET_ROCK_LARGE" CASE CMHDZ_ASSET_GRASS RETURN "CMHDZ_ASSET_GRASS" CASE CMHDZ_ASSET_CITY_BUILDING_1 RETURN "CMHDZ_ASSET_CITY_BUILDING_1" CASE CMHDZ_ASSET_CITY_BUILDING_2 RETURN "CMHDZ_ASSET_CITY_BUILDING_2" CASE CMHDZ_ASSET_CITY_BUILDING_3 RETURN "CMHDZ_ASSET_CITY_BUILDING_3" CASE CMHDZ_ASSET_SCRAPYARD_MD_VAN_1 RETURN "CMHDZ_ASSET_SCRAPYARD_MD_VAN_1" CASE CMHDZ_ASSET_SCRAPYARD_MD_VAN_2 RETURN "CMHDZ_ASSET_SCRAPYARD_MD_VAN_2" CASE CMHDZ_ASSET_SCRAPYARD_MD_VAN_3 RETURN "CMHDZ_ASSET_SCRAPYARD_MD_VAN_3" CASE CMHDZ_ASSET_SCRAPYARD_MD_VAN_4 RETURN "CMHDZ_ASSET_SCRAPYARD_MD_VAN_4" CASE CMHDZ_ASSET_SCRAPYARD_MD_CAR_1 RETURN "CMHDZ_ASSET_SCRAPYARD_MD_CAR_1" ENDSWITCH SWITCH (eType) CASE CMHDZ_ASSET_SCRAPYARD_MD_CAR_2 RETURN "CMHDZ_ASSET_SCRAPYARD_MD_CAR_2" CASE CMHDZ_ASSET_SCRAPYARD_MD_CAR_3 RETURN "CMHDZ_ASSET_SCRAPYARD_MD_CAR_3" CASE CMHDZ_ASSET_SCRAPYARD_MD_CAR_4 RETURN "CMHDZ_ASSET_SCRAPYARD_MD_CAR_4" CASE CMHDZ_ASSET_THEMEPARK_BUILDING_1 RETURN "CMHDZ_ASSET_THEMEPARK_BUILDING_1" CASE CMHDZ_ASSET_THEMEPARK_BUILDING_2 RETURN "CMHDZ_ASSET_THEMEPARK_BUILDING_2" CASE CMHDZ_ASSET_THEMEPARK_BUILDING_3 RETURN "CMHDZ_ASSET_THEMEPARK_BUILDING_3" CASE CMHDZ_ASSET_THEMEPARK_BUILDING_4 RETURN "CMHDZ_ASSET_THEMEPARK_BUILDING_4" CASE CMHDZ_ASSET_THEMEPARK_CLOWNBOARD_1 RETURN "CMHDZ_ASSET_THEMEPARK_CLOWNBOARD_1" CASE CMHDZ_ASSET_THEMEPARK_CLOWNBOARD_2 RETURN "CMHDZ_ASSET_THEMEPARK_CLOWNBOARD_2" CASE CMHDZ_ASSET_THEMEPARK_TREE_1 RETURN "CMHDZ_ASSET_THEMEPARK_TREE_1" CASE CMHDZ_ASSET_THEMEPARK_TREE_2 RETURN "CMHDZ_ASSET_THEMEPARK_TREE_2" CASE CMHDZ_ASSET_THEMEPARK_TREE_3 RETURN "CMHDZ_ASSET_THEMEPARK_TREE_3" CASE CMHDZ_ASSET_THEMEPARK_TREE_4 RETURN "CMHDZ_ASSET_THEMEPARK_TREE_4" CASE CMHDZ_ASSET_ASYLUM_MD_BED RETURN "CMHDZ_ASSET_ASYLUM_MD_BED" CASE CMHDZ_ASSET_ASYLUM_MD_WHEELCHAIR RETURN "CMHDZ_ASSET_ASYLUM_MD_WHEELCHAIR" CASE CMHDZ_ASSET_ASYLUM_MD_MATTRESS RETURN "CMHDZ_ASSET_ASYLUM_MD_MATTRESS" CASE CMHDZ_ASSET_ASYLUM_LIGHT_1 RETURN "CMHDZ_ASSET_ASYLUM_LIGHT_1" CASE CMHDZ_ASSET_ASYLUM_LIGHT_2 RETURN "CMHDZ_ASSET_ASYLUM_LIGHT_2" CASE CMHDZ_ASSET_ASYLUM_BG_RADIATOR RETURN "CMHDZ_ASSET_ASYLUM_BG_RADIATOR" CASE CMHDZ_ASSET_ASYLUM_BG_DOOR RETURN "CMHDZ_ASSET_ASYLUM_BG_DOOR" CASE CMHDZ_ASSET_ASYLUM_GRAFFITI_1 RETURN "CMHDZ_ASSET_ASYLUM_GRAFFITI_1" CASE CMHDZ_ASSET_ASYLUM_GRAFFITI_2 RETURN "CMHDZ_ASSET_ASYLUM_GRAFFITI_2" CASE CMHDZ_ASSET_ASYLUM_GRAFFITI_3 RETURN "CMHDZ_ASSET_ASYLUM_GRAFFITI_3" CASE CMHDZ_ASSET_FENCE RETURN "CMHDZ_ASSET_FENCE" // CASE CMHDZ_ASSET_FENCE_SMALL RETURN "CMHDZ_ASSET_FENCE_SMALL" CASE CMHDZ_ASSET_CACTUS_9 RETURN "CMHDZ_ASSET_CACTUS_9" CASE CMHDZ_ASSET_SCRAPYARD_PROP_FENCE RETURN "CMHDZ_ASSET_SCRAPYARD_PROP_FENCE" //CASE CMHDZ_ASSET_SCRAPYARD_BG_CARS RETURN "CMHDZ_ASSET_SCRAPYARD_BG_CARS" CASE CMHDZ_ASSET_FOREGROUND_TRASH RETURN "CMHDZ_ASSET_FOREGROUND_TRASH" CASE CMHDZ_ASSET_BARRIER RETURN "CMHDZ_ASSET_BARRIER" ENDSWITCH SWITCH (eType) CASE CMHDZ_ASSET_BARRELS RETURN "CMHDZ_ASSET_BARRELS" CASE CMHDZ_ASSET_MEATGRINDER_1 RETURN "CMHDZ_ASSET_MEATGRINDER_1" CASE CMHDZ_ASSET_BODYBAG_1 RETURN "CMHDZ_ASSET_BODYBAG_1" CASE CMHDZ_ASSET_BODYBAG_2 RETURN "CMHDZ_ASSET_BODYBAG_2" CASE CMHDZ_ASSET_BODYBAG_3 RETURN "CMHDZ_ASSET_BODYBAG_3" CASE CMHDZ_ASSET_BODYBAG_FLOOR_1 RETURN "CMHDZ_ASSET_BODYBAG_FLOOR_1" CASE CMHDZ_ASSET_BODYBAG_FLOOR_3 RETURN "CMHDZ_ASSET_BODYBAG_FLOOR_3" CASE CMHDZ_ASSET_PIG RETURN "CMHDZ_ASSET_PIG" CASE CMHDZ_ASSET_PIG_BATCH RETURN "CMHDZ_ASSET_PIG_BATCH" CASE CMHDZ_ASSET_WATER_TOWER RETURN "CMHDZ_ASSET_WATER_TOWER" // CASE CMHDZ_ASSET_SPECIAL_TNT_CRATE RETURN "CMHDZ_ASSET_SPECIAL_TNT_CRATE" CASE CMHDZ_ASSET_SPECIAL_TNT_BARREL_1 RETURN "CMHDZ_ASSET_SPECIAL_TNT_BARREL_1" CASE CMHDZ_ASSET_SPECIAL_TNT_BARREL_2 RETURN "CMHDZ_ASSET_SPECIAL_TNT_BARREL_2" CASE CMHDZ_ASSET_MEATHOOK RETURN "CMHDZ_ASSET_MEATHOOK" CASE CMHDZ_ASSET_DOOR_1 RETURN "CMHDZ_ASSET_DOOR_1" CASE CMHDZ_ASSET_DOOR_2 RETURN "CMHDZ_ASSET_DOOR_2" CASE CMHDZ_ASSET_WINDOW RETURN "CMHDZ_ASSET_WINDOW" CASE CMHDZ_ASSET_OVERHEAD_LIGHT RETURN "CMHDZ_ASSET_OVERHEAD_LIGHT" CASE NUM_CMHDZ_ASSET_TYPES RETURN "CMHDZ_ASSET_MAX_ASSETS" ENDSWITCH RETURN "TYPES_INVALID" ENDFUNC FUNC STRING CMHDZ_AUDIO_EFFECT_TO_STRING(CMHDZ_AUDIO_EFFECT eType) SWITCH (eType) CASE CMHDZ_AUDIO_EFFECT_GET_READY RETURN "CMHDZ_AUDIO_EFFECT_GET_READY" CASE CMHDZ_AUDIO_EFFECT_DRAW RETURN "CMHDZ_AUDIO_EFFECT_DRAW" CASE CMHDZ_AUDIO_EFFECT_SELECT_STAGE RETURN "CMHDZ_AUDIO_EFFECT_SELECT_STAGE" CASE CMHDZ_AUDIO_EFFECT_SCREEN_LOCKED RETURN "CMHDZ_AUDIO_EFFECT_SCREEN_LOCKED" CASE CMHDZ_AUDIO_EFFECT_MENU_BACK RETURN "CMHDZ_AUDIO_EFFECT_MENU_BACK" CASE CMHDZ_AUDIO_EFFECT_SWAP_WEAPON RETURN "CMHDZ_AUDIO_EFFECT_SWAP_WEAPON" CASE CMHDZ_AUDIO_EFFECT_RELOAD RETURN "CMHDZ_AUDIO_EFFECT_RELOAD" CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_BODY RETURN "CMHDZ_AUDIO_EFFECT_BULLET_HIT_BODY" CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_PLAYER RETURN "CMHDZ_AUDIO_EFFECT_BULLET_HIT_PLAYER" CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_METAL RETURN "CMHDZ_AUDIO_EFFECT_BULLET_HIT_METAL" CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_BUSHES RETURN "CMHDZ_AUDIO_EFFECT_BULLET_HIT_BUSHES" CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_ROCK RETURN "CMHDZ_AUDIO_EFFECT_BULLET_HIT_ROCK" CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_MISS RETURN "CMHDZ_AUDIO_EFFECT_BULLET_HIT_MISS" CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_OPTION RETURN "CMHDZ_AUDIO_EFFECT_BULLET_HIT_OPTION" CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_START RETURN "CMHDZ_AUDIO_EFFECT_BULLET_HIT_START" CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_GENERIC RETURN "CMHDZ_AUDIO_EFFECT_BULLET_HIT_GENERIC" CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_HEADSHOT RETURN "CMHDZ_AUDIO_EFFECT_BULLET_HIT_HEADSHOT" CASE CMHDZ_AUDIO_EFFECT_REVOLVER_FIRE RETURN "CMHDZ_AUDIO_EFFECT_REVOLVER_FIRE" CASE CMHDZ_AUDIO_EFFECT_REVOLVER_EMPTY RETURN "CMHDZ_AUDIO_EFFECT_REVOLVER_EMPTY" CASE CMHDZ_AUDIO_EFFECT_RIFLE_FIRE RETURN "CMHDZ_AUDIO_EFFECT_RIFLE_FIRE" CASE CMHDZ_AUDIO_EFFECT_RIFLE_EMPTY RETURN "CMHDZ_AUDIO_EFFECT_RIFLE_EMPTY" ENDSWITCH SWITCH (eType) CASE CMHDZ_AUDIO_EFFECT_SHOTGUN_FIRE RETURN "CMHDZ_AUDIO_EFFECT_SHOTGUN_FIRE" CASE CMHDZ_AUDIO_EFFECT_SHOTGUN_EMPTY RETURN "CMHDZ_AUDIO_EFFECT_SHOTGUN_EMPTY" CASE CMHDZ_AUDIO_EFFECT_NAILGUN_FIRE RETURN "CMHDZ_AUDIO_EFFECT_NAILGUN_FIRE" CASE CMHDZ_AUDIO_EFFECT_REVOLVER_RELOAD_SINGLE RETURN "CMHDZ_AUDIO_EFFECT_REVOLVER_RELOAD_SINGLE" CASE CMHDZ_AUDIO_EFFECT_RIFLE_RELOAD_SINGLE RETURN "CMHDZ_AUDIO_EFFECT_RIFLE_RELOAD_SINGLE" CASE CMHDZ_AUDIO_EFFECT_SHOTGUN_RELOAD_SINGLE RETURN "CMHDZ_AUDIO_EFFECT_SHOTGUN_RELOAD_SINGLE" CASE CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_DEAD RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_DEAD" CASE CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_VERY_LOW RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_VERY_LOW" CASE CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_LOW RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_LOW" CASE CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_MEDIUM RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_MEDIUM" CASE CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_HIGH RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_HIGH" CASE CMHDZ_AUDIO_EFFECT_ENEMY_A_DEAD RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_A_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_A_INJURED RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_A_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_A_GLOAT RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_A_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_A_ATTACK RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_A_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_A_PAIN RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_A_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_B_DEAD RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_B_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_B_INJURED RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_B_INJURED" CASE CMHDZ_AUDIO_EFFECT_ENEMY_B_GLOAT RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_B_GLOAT" CASE CMHDZ_AUDIO_EFFECT_ENEMY_B_ATTACK RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_B_ATTACK" CASE CMHDZ_AUDIO_EFFECT_ENEMY_B_PAIN RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_B_PAIN" CASE CMHDZ_AUDIO_EFFECT_ENEMY_C_DEAD RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_C_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_C_INJURED RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_C_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_C_GLOAT RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_C_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_C_ATTACK RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_C_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_C_PAIN RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_C_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_D_DEAD RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_D_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_D_INJURED RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_D_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_D_GLOAT RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_D_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_D_ATTACK RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_D_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_D_PAIN RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_D_DEAD" CASE CMHDZ_AUDIO_EFFECT_ENEMY_RIFLE_AIM RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_RIFLE_AIM" CASE CMHDZ_AUDIO_EFFECT_ENEMY_RIFLE_FIRE RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_RIFLE_FIRE" ENDSWITCH SWITCH (eType) CASE CMHDZ_AUDIO_EFFECT_ENEMY_CRIT_WARNING RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_CRIT_WARNING" CASE CMHDZ_AUDIO_EFFECT_ENEMY_THROW_DYNAMITE RETURN "CMHDZ_AUDIO_EFFECT_ENEMY_THROW_DYNAMITE" CASE CMHDZ_AUDIO_EFFECT_RESULTS_SCORE_UPDATE RETURN "CMHDZ_AUDIO_EFFECT_RESULTS_SCORE_UPDATE" CASE CMHDZ_AUDIO_EFFECT_EXP_GENERIC RETURN "CMHDZ_AUDIO_EFFECT_EXP_GENERIC" CASE CMHDZ_AUDIO_EFFECT_EXP_DYNAMITE RETURN "CMHDZ_AUDIO_EFFECT_EXP_DYNAMITE" CASE CMHDZ_AUDIO_EFFECT_BUNNYGIRL_APPEAR RETURN "CMHDZ_AUDIO_EFFECT_BUNNYGIRL_APPEAR" CASE CMHDZ_AUDIO_EFFECT_BUNNYGIRL_PAIN RETURN "CMHDZ_AUDIO_EFFECT_BUNNYGIRL_PAIN" CASE CMHDZ_AUDIO_EFFECT_BUNNYGIRL_DEATH RETURN "CMHDZ_AUDIO_EFFECT_BUNNYGIRL_DEATH" CASE CMHDZ_AUDIO_EFFECT_BUNNYGIRL_MISSED RETURN "CMHDZ_AUDIO_EFFECT_BUNNYGIRL_MISSED" CASE CMHDZ_AUDIO_EFFECT_MONKEY_APPEAR RETURN "CMHDZ_AUDIO_EFFECT_MONKEY_APPEAR" CASE CMHDZ_AUDIO_EFFECT_MONKEY_PAIN RETURN "CMHDZ_AUDIO_EFFECT_MONKEY_PAIN" CASE CMHDZ_AUDIO_EFFECT_MONKEY_DEATH RETURN "CMHDZ_AUDIO_EFFECT_MONKEY_DEATH" CASE CMHDZ_AUDIO_EFFECT_MONKEY_MISSED RETURN "CMHDZ_AUDIO_EFFECT_MONKEY_MISSED" CASE CMHDZ_AUDIO_EFFECT_RAT_APPEAR RETURN "CMHDZ_AUDIO_EFFECT_RAT_APPEAR" CASE CMHDZ_AUDIO_EFFECT_RAT_DEATH RETURN "CMHDZ_AUDIO_EFFECT_RAT_DEATH" CASE CMHDZ_AUDIO_EFFECT_PLAYER_BRICK_THROW RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_BRICK_THROW" CASE CMHDZ_AUDIO_EFFECT_PLAYER_BRICK_HIT RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_BRICK_HIT" CASE CMHDZ_AUDIO_EFFECT_PLAYER_NAILBOMB_THROW RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_NAILBOMB_THROW" CASE CMHDZ_AUDIO_EFFECT_PLAYER_NAILBOMB_HIT RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_NAILBOMB_HIT" CASE CMHDZ_AUDIO_EFFECT_PLAYER_MOLOTOV_THROW RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_MOLOTOV_THROW" CASE CMHDZ_AUDIO_EFFECT_PLAYER_MOLOTOV_HIT RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_MOLOTOV_HIT" ENDSWITCH SWITCH (eType) CASE CMHDZ_AUDIO_EFFECT_PICKUP_HEALTH RETURN "CMHDZ_AUDIO_EFFECT_PICKUP_HEALTH" CASE CMHDZ_AUDIO_EFFECT_PICKUP_BUFF RETURN "CMHDZ_AUDIO_EFFECT_PICKUP_BUFF" CASE CMHDZ_AUDIO_EFFECT_PICKUP_CASH RETURN "CMHDZ_AUDIO_EFFECT_PICKUP_CASH" CASE CMHDZ_AUDIO_EFFECT_PICKUP_TAPE RETURN "CMHDZ_AUDIO_EFFECT_PICKUP_TAPE" CASE CMHDZ_AUDIO_EFFECT_PLAYER_RELOAD RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_RELOAD" CASE CMHDZ_AUDIO_EFFECT_PLAYER_SHOOT_HEADSHOT RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_SHOOT_HEADSHOT" CASE CMHDZ_AUDIO_EFFECT_PLAYER_SHOOT_ANIMAL RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_SHOOT_ANIMAL" CASE CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_BAD RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_BAD" ENDSWITCH SWITCH (eType) CASE CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_AVERAGE RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_AVERAGE" CASE CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_GOOD RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_GOOD" CASE CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_AMAZING RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_AMAZING" CASE CMHDZ_AUDIO_EFFECT_PLAYER_COMPLETE_LEVEL RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_COMPLETE_LEVEL" CASE CMHDZ_AUDIO_EFFECT_PLAYER_DEATH RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_DEATH" CASE CMHDZ_AUDIO_EFFECT_PLAYER_RESULTS_DEAD RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_RESULTS_DEAD" CASE CMHDZ_AUDIO_EFFECT_PLAYER_FINISH_GAME RETURN "CMHDZ_AUDIO_EFFECT_PLAYER_FINISH_GAME" CASE CMHDZ_AUDIO_EFFECT_MAX RETURN "CMHDZ_AUDIO_EFFECT_MAX" ENDSWITCH RETURN "CMHDZ_AUDIO_EFFECT_INVALID" ENDFUNC FUNC STRING CMHDZ_AUDIO_SCENE_TO_STRING(CMHDZ_AUDIO_SCENE eType) SWITCH (eType) CASE CMHDZ_AUDIO_SCENE_MENUS RETURN "CMHDZ_AUDIO_SCENE_MENUS" CASE CMHDZ_AUDIO_SCENE_GAMEPLAY RETURN "CMHDZ_AUDIO_SCENE_GAMEPLAY" CASE CMHDZ_AUDIO_SCENE_POWERUP_ACTIVE RETURN "CMHDZ_AUDIO_SCENE_POWERUP_ACTIVE" ENDSWITCH RETURN "CMHDZ_AUDIO_SCENE_INVALID" ENDFUNC FUNC STRING CMHDZ_CHALLENGES_TO_STRING(CMHDZ_CHALLENGES eType) SWITCH (eType) CASE CMHDZ_CHALLENGE_FACES_OF_DEATH_PLATINUM RETURN "CMHDZ_CHALLENGE_FACES_OF_DEATH_PLATINUM" CASE CMHDZ_CHALLENGE_TRAINED_TO_KILL RETURN "CMHDZ_CHALLENGE_TRAINED_TO_KILL" CASE CMHDZ_CHALLENGE_STRAIGHT_TO_VIDEO RETURN "CMHDZ_CHALLENGE_STRAIGHT_TO_VIDEO" CASE CMHDZ_CHALLENGE_FACES_OF_DEATH_BRONZE RETURN "CMHDZ_CHALLENGE_FACES_OF_DEATH_BRONZE" CASE CMHDZ_CHALLENGE_FACES_OF_DEATH_SILVER RETURN "CMHDZ_CHALLENGE_FACES_OF_DEATH_SILVER" CASE CMHDZ_CHALLENGE_FACES_OF_DEATH_GOLD RETURN "CMHDZ_CHALLENGE_FACES_OF_DEATH_GOLD" ENDSWITCH RETURN "CMHDZ_CHALLENGES_INVALID" ENDFUNC FUNC STRING CMHDZ_COVER_DATA_BITS_TO_STRING(CMHDZ_COVER_DATA_BITS eType) SWITCH (eType) CASE CMHDZ_COVER_DATA_BITS_NONE RETURN "CMHDZ_COVER_DATA_BITS_NONE" CASE CMHDZ_COVER_DATA_BITS_SPAWNED_PICKUP RETURN "CMHDZ_COVER_DATA_BITS_SPAWNED_PICKUP" CASE CMHDZ_COVER_DATA_BITS_IS_SPECIAL_COVER RETURN "CMHDZ_COVER_DATA_BITS_IS_SPECIAL_COVER" CASE CMHDZ_COVER_DATA_BITS_IS_ANIMATED RETURN "CMHDZ_COVER_DATA_BITS_IS_ANIMATED" CASE CMHDZ_COVER_DATA_BITS_IS_FAR_BG RETURN "CMHDZ_COVER_DATA_BITS_IS_FAR_BG" CASE CMHDZ_COVER_DATA_BITS_REMOVE_OFF_SCREEN RETURN "CMHDZ_COVER_DATA_BITS_REMOVE_OFF_SCREEN" ENDSWITCH RETURN "CMHDZ_COVER_DATA_BITS_INVALID" ENDFUNC FUNC STRING CMHDZ_DAMAGE_PLAYER_TYPES_TO_STRING(CMHDZ_DAMAGE_PLAYER_TYPES eType) SWITCH (eType) CASE CMHDZ_DAMAGE_PLAYER_TYPE_BULLET RETURN "CMHDZ_DAMAGE_PLAYER_TYPE_BULLET" CASE CMHDZ_DAMAGE_PLAYER_TYPE_DYNAMITE RETURN "CMHDZ_DAMAGE_PLAYER_TYPE_DYNAMITE" CASE CMHDZ_DAMAGE_PLAYER_TYPE_SLASH RETURN "CMHDZ_DAMAGE_PLAYER_TYPE_SLASH" ENDSWITCH RETURN "CMHDZ_DAMAGE_PLAYER_TYPES_INVALID" ENDFUNC FUNC STRING CMHDZ_ENEMY_DATA_BITS_TO_STRING(CMHDZ_ENEMY_DATA_BITS eType) SWITCH (eType) CASE CMHDZ_ENEMY_DATA_BITS_NONE RETURN "CMHDZ_ENEMY_DATA_BITS_NONE" CASE CMHDZ_ENEMY_DATA_BITS_REVERSE RETURN "CMHDZ_ENEMY_DATA_BITS_REVERSE" CASE CMHDZ_ENEMY_DATA_BITS_IS_POPUP RETURN "CMHDZ_ENEMY_DATA_BITS_IS_POPUP" CASE CMHDZ_ENEMY_DATA_BITS_PLAYED_AIM_AUDIO RETURN "CMHDZ_ENEMY_DATA_BITS_PLAYED_AIM_AUDIO" CASE CMHDZ_ENEMY_DATA_BITS_PLAYED_WARN_AUDIO RETURN "CMHDZ_ENEMY_DATA_BITS_PLAYED_WARN_AUDIO" CASE CMHDZ_ENEMY_DATA_BITS_WAIT_UNTIL_LEVEL_STATIONARY RETURN "CMHDZ_ENEMY_DATA_BITS_WAIT_UNTIL_LEVEL_STATIONARY" CASE CMHDZ_ENEMY_DATA_BITS_SHOT_AT_LEAST_ONCE RETURN "CMHDZ_ENEMY_DATA_BITS_SHOT_AT_LEAST_ONCE" CASE CMHDZ_ENEMY_DATA_BITS_THROWN_PROJECTILE RETURN "CMHDZ_ENEMY_DATA_BITS_THROWN_PROJECTILE" CASE CMHDZ_ENEMY_DATA_BITS_APPEARED_ON_SCREEN RETURN "CMHDZ_ENEMY_DATA_BITS_APPEARED_ON_SCREEN" ENDSWITCH RETURN "CMHDZ_ENEMY_DATA_BITS_INVALID" ENDFUNC FUNC STRING CMHDZ_ENEMY_STATE_TO_STRING(CMHDZ_ENEMY_STATE eType) SWITCH (eType) CASE CMHDZ_ENEMY_STATE_WAITING RETURN "CMHDZ_ENEMY_STATE_WAITING" CASE CMHDZ_ENEMY_STATE_ACTIVE RETURN "CMHDZ_ENEMY_STATE_ACTIVE" CASE CMHDZ_ENEMY_STATE_ATTACKING RETURN "CMHDZ_ENEMY_STATE_ATTACKING" CASE CMHDZ_ENEMY_STATE_DYING RETURN "CMHDZ_ENEMY_STATE_DYING" CASE CMHDZ_ENEMY_STATE_INACTIVE RETURN "CMHDZ_ENEMY_STATE_INACTIVE" ENDSWITCH RETURN "CMHDZ_ENEMY_STATE_INVALID" ENDFUNC FUNC STRING CMHDZ_ENEMY_TYPES_TO_STRING(CMHDZ_ENEMY_TYPES eType) SWITCH (eType) CASE CMHDZ_ENEMY_INVALID RETURN "CMHDZ_ENEMY_INVALID" CASE CMHDZ_ENEMY_1 RETURN "CMHDZ_ENEMY_1" CASE CMHDZ_ENEMY_2 RETURN "CMHDZ_ENEMY_2" CASE CMHDZ_ENEMY_3 RETURN "CMHDZ_ENEMY_3" CASE CMHDZ_ENEMY_4 RETURN "CMHDZ_ENEMY_4" CASE CMHDZ_ENEMY_5 RETURN "CMHDZ_ENEMY_5" CASE CMHDZ_FOREGROUND_ENEMY_T1_1 RETURN "CMHDZ_FOREGROUND_ENEMY_T1_1" CASE CMHDZ_FOREGROUND_ENEMY_T1_2 RETURN "CMHDZ_FOREGROUND_ENEMY_T1_2" CASE CMHDZ_FOREGROUND_ENEMY_T2_1 RETURN "CMHDZ_FOREGROUND_ENEMY_T2_1" CASE CMHDZ_FOREGROUND_ENEMY_T2_2 RETURN "CMHDZ_FOREGROUND_ENEMY_T2_2" CASE CMHDZ_FOREGROUND_ENEMY_T3_1 RETURN "CMHDZ_FOREGROUND_ENEMY_T3_1" CASE CMHDZ_FOREGROUND_ENEMY_T3_2 RETURN "CMHDZ_FOREGROUND_ENEMY_T3_2" CASE CMHDZ_FOREGROUND_ENEMY_T4_1 RETURN "CMHDZ_FOREGROUND_ENEMY_T4_1" CASE CMHDZ_FOREGROUND_ENEMY_T4_2 RETURN "CMHDZ_FOREGROUND_ENEMY_T4_2" CASE CMHDZ_FOREGROUND_ENEMY_T5_1 RETURN "CMHDZ_FOREGROUND_ENEMY_T5_1" CASE CMHDZ_FOREGROUND_ENEMY_T5_2 RETURN "CMHDZ_FOREGROUND_ENEMY_T5_2" CASE CMHDZ_THROWING_ENEMY_1 RETURN "CMHDZ_THROWING_ENEMY_1" CASE CMHDZ_THROWING_ENEMY_2 RETURN "CMHDZ_THROWING_ENEMY_2" CASE CMHDZ_THROWING_ENEMY_3 RETURN "CMHDZ_THROWING_ENEMY_3" CASE CMHDZ_THROWING_ENEMY_4 RETURN "CMHDZ_THROWING_ENEMY_4" CASE CMHDZ_THROWING_ENEMY_5 RETURN "CMHDZ_THROWING_ENEMY_5" CASE CMHDZ_RARE_ENEMY_BUNNY RETURN "CASE CMHDZ_RARE_ENEMY_BUNNY" CASE CMHDZ_RARE_ENEMY_MONKEY RETURN "CASE CMHDZ_RARE_ENEMY_MONKEY" CASE CMHDZ_RARE_ENEMY_RAT RETURN "CASE CMHDZ_RARE_ENEMY_RAT" ENDSWITCH SWITCH (eType) CASE NUM_CMHDZ_ENEMY_TYPES RETURN "NUM_CMHDZ_ENEMY_TYPES" ENDSWITCH RETURN "CMHDZ_ENEMY_TYPES_INVALID" ENDFUNC FUNC STRING CMHDZ_BOSS_DATA_BITS_TO_STRING(CMHDZ_BOSS_DATA_BITS eType) SWITCH (eType) CASE CMHDZ_BOSS_DATA_BITS_NONE RETURN "CMHDZ_BOSS_DATA_BITS_NONE" CASE CMHDZ_BOSS_DATA_BITS_SPAWNED_ENEMIES_1 RETURN "CMHDZ_BOSS_DATA_BITS_SPAWNED_ENEMIES_1" CASE CMHDZ_BOSS_DATA_BITS_SPAWNED_ENEMIES_2 RETURN "CMHDZ_BOSS_DATA_BITS_SPAWNED_ENEMIES_2" ENDSWITCH RETURN "CMHDZ_BOSS_DATA_BITS_INVALID" ENDFUNC FUNC STRING CMHDZ_BOSS_STATE_TO_STRING(CMHDZ_BOSS_STATE state) SWITCH state CASE CMHDZ_BOSS_STATE_WAITING RETURN "CMHDZ_BOSS_STATE_WAITING" CASE CMHDZ_BOSS_STATE_WALKING RETURN "CMHDZ_BOSS_STATE_WALKING" CASE CMHDZ_BOSS_STATE_WALKING_INV RETURN "CMHDZ_BOSS_STATE_WALKING_INV" CASE CMHDZ_BOSS_STATE_THROWING RETURN "CMHDZ_BOSS_STATE_THROWING" CASE CMHDZ_BOSS_STATE_BACKUP RETURN "CMHDZ_BOSS_STATE_BACKUP" CASE CMHDZ_BOSS_STATE_FOREGROUND_POP_UP RETURN "CMHDZ_BOSS_STATE_FOREGROUND_POP_UP" CASE CMHDZ_BOSS_STATE_FOREGROUND_POP_DOWN RETURN "CMHDZ_BOSS_STATE_FOREGROUND_POP_DOWN" CASE CMHDZ_BOSS_STATE_FOREGROUND_PAIN RETURN "CMHDZ_BOSS_STATE_FOREGROUND_PAIN" CASE CMHDZ_BOSS_STATE_FOREGROUND_IDLE RETURN "CMHDZ_BOSS_STATE_FOREGROUND_IDLE" CASE CMHDZ_BOSS_STATE_BLOCKING RETURN "CMHDZ_BOSS_STATE_BLOCKING" CASE CMHDZ_BOSS_STATE_ATTACK_READY RETURN "CMHDZ_BOSS_STATE_ATTACK_READY" CASE CMHDZ_BOSS_STATE_ATTACKING RETURN "CMHDZ_BOSS_STATE_ATTACKING" CASE CMHDZ_BOSS_STATE_ATTACKING_COUNTER RETURN "CMHDZ_BOSS_STATE_ATTACKING_COUNTER" CASE CMHDZ_BOSS_STATE_STUNNED_BACKGROUND RETURN "CMHDZ_BOSS_STATE_STUNNED_BACKGROUND" CASE CMHDZ_BOSS_STATE_STUNNED_FOREGROUND RETURN "CMHDZ_BOSS_STATE_STUNNED_FOREGROUND" CASE CMHDZ_BOSS_STATE_PAIN RETURN "CMHDZ_BOSS_STATE_PAIN" CASE CMHDZ_BOSS_STATE_DYING RETURN "CMHDZ_BOSS_STATE_DYING" CASE CMHDZ_BOSS_STATE_FINAL RETURN "CMHDZ_BOSS_STATE_FINAL" CASE CMHDZ_BOSS_STATE_SPAWN_HELPERS_1 RETURN "CMHDZ_BOSS_STATE_SPAWN_HELPERS_1" CASE CMHDZ_BOSS_STATE_SPAWN_HELPERS_2 RETURN "CMHDZ_BOSS_STATE_SPAWN_HELPERS_2" CASE CMHDZ_BOSS_STATE_WAIT_FOR_ALL_ENEMIES_DEAD RETURN "CMHDZ_BOSS_STATE_WAIT_FOR_ALL_ENEMIES_DEAD" CASE CMHDZ_BOSS_STATE_INACTIVE RETURN "CMHDZ_BOSS_STATE_INACTIVE" ENDSWITCH RETURN "CMHDZ_BOSS_STATE_INACTIVE" ENDFUNC FUNC STRING CMHDZ_BOSS_TYPES_TO_STRING(CMHDZ_ENEMY_TYPES eType) SWITCH (eType) ENDSWITCH RETURN "CMHDZ_ENEMY_TYPES_INVALID" ENDFUNC FUNC STRING CMHDZ_FX_TYPE_TO_STRING(CMHDZ_FX_TYPE eType) SWITCH (eType) CASE CMHDZ_FX_EXPLOSION RETURN "CMHDZ_FX_EXPLOSION" CASE CMHDZ_FX_ENEMY_SHOT RETURN "CMHDZ_FX_ENEMY_SHOT" CASE CMHDZ_FX_IMPACT RETURN "CMHDZ_FX_IMPACT" CASE CMHDZ_FX_ENEMY_TNT_EXP RETURN "CMHDZ_FX_ENEMY_TNT_EXP" CASE CMHDZ_FX_LOOT_CRATE RETURN "CMHDZ_FX_LOOT_CRATE" CASE CMHDZ_FX_BLOOD_SPLAT RETURN "CMHDZ_FX_BLOOD_SPLAT" CASE CMHDZ_FX_BEARSY_FOREGROUND_ATTACKING_BLOOD RETURN "CMHDZ_FX_BEARSY_FOREGROUND_ATTACKING_BLOOD" CASE CMHDZ_FX_BEARSY_FOREGROUND_PAIN_BLOOD RETURN "CMHDZ_FX_BEARSY_FOREGROUND_PAIN_BLOOD" CASE CMHDZ_FX_BEARSY_FOREGROUND_SPARKS RETURN "CMHDZ_FX_BEARSY_FOREGROUND_SPARKS" CASE CMHDZ_FX_SLASH_EFFECT RETURN "CMHDZ_FX_SLASH_EFFECT" ENDSWITCH RETURN "CMHDZ_FX_TYPE_INVALID" ENDFUNC FUNC STRING CMHDZ_HELP_TEXT_BITS_TO_STRING(CMHDZ_HELP_TEXT_BITS eType) SWITCH (eType) // CASE CMHDZ_HELP_TEXT_BIT_SHOOT_AIM RETURN "CMHDZ_HELP_TEXT_BIT_SHOOT_AIM" // CASE CMHDZ_HELP_TEXT_BIT_RELOAD RETURN "CMHDZ_HELP_TEXT_BIT_RELOAD" // CASE CMHDZ_HELP_TEXT_BIT_HEADSHOT RETURN "CMHDZ_HELP_TEXT_BIT_HEADSHOT" // CASE CMHDZ_HELP_TEXT_BIT_THROW RETURN "CMHDZ_HELP_TEXT_BIT_THROW" // CASE CMHDZ_HELP_TEXT_BIT_MICROAIM RETURN "CMHDZ_HELP_TEXT_BIT_MICROAIM" // // CASE CMHDZ_HELP_TEXT_BIT_HEALTH RETURN "CMHDZ_HELP_TEXT_BIT_HEALTH" // // CASE CMHDZ_HELP_TEXT_BIT_BUFF RETURN "CMHDZ_HELP_TEXT_BIT_BUFF" // CASE CMHDZ_HELP_TEXT_BIT_PILLS RETURN "CMHDZ_HELP_TEXT_BIT_PILLS" // // CASE CMHDZ_HELP_TEXT_BIT_CASH RETURN "CMHDZ_HELP_TEXT_BIT_CASH" // CASE CMHDZ_HELP_TEXT_BIT_VIDEO RETURN "CMHDZ_HELP_TEXT_BIT_VIDEO" // // CASE CMHDZ_HELP_TEXT_BIT_AT_LEAST_ONE_HEADSHOT RETURN "CMHDZ_HELP_TEXT_BIT_AT_LEAST_ONE_HEADSHOT" // CASE CMHDZ_HELP_TEXT_BIT_TRAINED_TO_KILL RETURN "CMHDZ_HELP_TEXT_BIT_TRAINED_TO_KILL" // CASE CMHDZ_HELP_TEXT_BIT_STRAIGHT_TO_VIDEO RETURN "CMHDZ_HELP_TEXT_BIT_STRAIGHT_TO_VIDEO" // CASE CMHDZ_HELP_TEXT_BIT_DIRECTOR RETURN "CMHDZ_HELP_TEXT_BIT_DIRECTOR" // // CASE CMHDZ_HELP_TEXT_BIT_MONKEY RETURN "CMHDZ_HELP_TEXT_BIT_MONKEY" // // CASE CMHDZ_HELP_TEXT_BIT_RIFLE RETURN "CMHDZ_HELP_TEXT_BIT_RIFLE" // CASE CMHDZ_HELP_TEXT_BIT_SHOTGUN RETURN "CMHDZ_HELP_TEXT_BIT_SHOTGUN" // CASE CMHDZ_HELP_TEXT_BIT_NAIL RETURN "CMHDZ_HELP_TEXT_BIT_NAIL" // // CASE CMHDZ_HELP_TEXT_BIT_MOLOTOV RETURN "CMHDZ_HELP_TEXT_BIT_MOLOTOV" // CASE CMHDZ_HELP_TEXT_BIT_NAILBOMB RETURN "CMHDZ_HELP_TEXT_BIT_NAILBOMB" // // CASE CMHDZ_HELP_TEXT_BIT_DYNAMITE RETURN "CMHDZ_HELP_TEXT_BIT_DYNAMITE" CASE CMHDZ_HELP_TEXT_BIT_BEARSY RETURN "CMHDZ_HELP_TEXT_BIT_BEARSY" ENDSWITCH RETURN "CMHDZ_HELP_TEXT_BITS_INVALID" ENDFUNC FUNC STRING CMHDZ_HUD_CHAR_TO_STRING(CMHDZ_HUD_CHAR eType) SWITCH (eType) CASE CMHDZ_HUD_CHAR_INVALID RETURN "CMHDZ_HUD_CHAR_INVALID" CASE CMHDZ_HUD_CHAR_SPACE RETURN "CMHDZ_HUD_CHAR_SPACE" CASE CMHDZ_HUD_CHAR_0 RETURN "CMHDZ_HUD_CHAR_0" CASE CMHDZ_HUD_CHAR_1 RETURN "CMHDZ_HUD_CHAR_1" CASE CMHDZ_HUD_CHAR_2 RETURN "CMHDZ_HUD_CHAR_2" CASE CMHDZ_HUD_CHAR_3 RETURN "CMHDZ_HUD_CHAR_3" CASE CMHDZ_HUD_CHAR_4 RETURN "CMHDZ_HUD_CHAR_4" CASE CMHDZ_HUD_CHAR_5 RETURN "CMHDZ_HUD_CHAR_5" CASE CMHDZ_HUD_CHAR_6 RETURN "CMHDZ_HUD_CHAR_6" CASE CMHDZ_HUD_CHAR_7 RETURN "CMHDZ_HUD_CHAR_7" CASE CMHDZ_HUD_CHAR_8 RETURN "CMHDZ_HUD_CHAR_8" CASE CMHDZ_HUD_CHAR_9 RETURN "CMHDZ_HUD_CHAR_9" CASE CMHDZ_HUD_CHAR_A RETURN "CMHDZ_HUD_CHAR_A" CASE CMHDZ_HUD_CHAR_B RETURN "CMHDZ_HUD_CHAR_B" CASE CMHDZ_HUD_CHAR_C RETURN "CMHDZ_HUD_CHAR_C" CASE CMHDZ_HUD_CHAR_D RETURN "CMHDZ_HUD_CHAR_D" CASE CMHDZ_HUD_CHAR_E RETURN "CMHDZ_HUD_CHAR_E" CASE CMHDZ_HUD_CHAR_F RETURN "CMHDZ_HUD_CHAR_F" CASE CMHDZ_HUD_CHAR_G RETURN "CMHDZ_HUD_CHAR_G" CASE CMHDZ_HUD_CHAR_H RETURN "CMHDZ_HUD_CHAR_H" CASE CMHDZ_HUD_CHAR_I RETURN "CMHDZ_HUD_CHAR_I" CASE CMHDZ_HUD_CHAR_J RETURN "CMHDZ_HUD_CHAR_J" CASE CMHDZ_HUD_CHAR_K RETURN "CMHDZ_HUD_CHAR_K" CASE CMHDZ_HUD_CHAR_L RETURN "CMHDZ_HUD_CHAR_L" CASE CMHDZ_HUD_CHAR_M RETURN "CMHDZ_HUD_CHAR_M" ENDSWITCH SWITCH (eType) CASE CMHDZ_HUD_CHAR_N RETURN "CMHDZ_HUD_CHAR_N" CASE CMHDZ_HUD_CHAR_O RETURN "CMHDZ_HUD_CHAR_O" CASE CMHDZ_HUD_CHAR_P RETURN "CMHDZ_HUD_CHAR_P" CASE CMHDZ_HUD_CHAR_Q RETURN "CMHDZ_HUD_CHAR_Q" CASE CMHDZ_HUD_CHAR_R RETURN "CMHDZ_HUD_CHAR_R" CASE CMHDZ_HUD_CHAR_S RETURN "CMHDZ_HUD_CHAR_S" CASE CMHDZ_HUD_CHAR_T RETURN "CMHDZ_HUD_CHAR_T" CASE CMHDZ_HUD_CHAR_U RETURN "CMHDZ_HUD_CHAR_U" CASE CMHDZ_HUD_CHAR_V RETURN "CMHDZ_HUD_CHAR_V" CASE CMHDZ_HUD_CHAR_W RETURN "CMHDZ_HUD_CHAR_W" CASE CMHDZ_HUD_CHAR_X RETURN "CMHDZ_HUD_CHAR_X" CASE CMHDZ_HUD_CHAR_Y RETURN "CMHDZ_HUD_CHAR_Y" CASE CMHDZ_HUD_CHAR_Z RETURN "CMHDZ_HUD_CHAR_Z" CASE CMHDZ_HUD_CHAR_APOSTROPHE RETURN "CMHDZ_HUD_CHAR_APOSTROPHE" CASE CMHDZ_HUD_CHAR_BACKSLASH RETURN "CMHDZ_HUD_CHAR_BACKSLASH" CASE CMHDZ_HUD_CHAR_CLOSEBRACKET RETURN "CMHDZ_HUD_CHAR_CLOSEBRACKET" CASE CMHDZ_HUD_CHAR_COLON RETURN "CMHDZ_HUD_CHAR_COLON" CASE CMHDZ_HUD_CHAR_COMMA RETURN "CMHDZ_HUD_CHAR_COMMA" CASE CMHDZ_HUD_CHAR_DOLLAR RETURN "CMHDZ_HUD_CHAR_DOLLAR" CASE CMHDZ_HUD_CHAR_EXCLAMATION RETURN "CMHDZ_HUD_CHAR_EXCLAMATION" CASE CMHDZ_HUD_CHAR_FULL_STOP RETURN "CMHDZ_HUD_CHAR_FULL_STOP" CASE CMHDZ_HUD_CHAR_MINUS RETURN "CMHDZ_HUD_CHAR_MINUS" CASE CMHDZ_HUD_CHAR_OPEN_BRACKET RETURN "CMHDZ_HUD_CHAR_OPEN_BRACKET" CASE CMHDZ_HUD_CHAR_PLUS RETURN "CMHDZ_HUD_CHAR_PLUS" CASE CMHDZ_HUD_CHAR_QUESTION RETURN "CMHDZ_HUD_CHAR_QUESTION" ENDSWITCH SWITCH (eType) CASE CMHDZ_HUD_CHAR_SEMI_COLON RETURN "CMHDZ_HUD_CHAR_SEMI_COLON" CASE CMHDZ_HUD_CHAR_SPEECH RETURN "CMHDZ_HUD_CHAR_SPEECH" CASE CMHDZ_HUD_CHAR_STAR RETURN "CMHDZ_HUD_CHAR_STAR" CASE NUM_CMHDZ_HUD_CHAR RETURN "NUM_CMHDZ_HUD_CHAR" ENDSWITCH RETURN "CMHDZ_HUD_CHAR_INVALID" ENDFUNC FUNC STRING CMHDZ_HUD_TEXTPIVOT_TO_STRING(CMHDZ_HUD_TEXTPIVOT eType) SWITCH (eType) CASE CMHDZ_HUD_TEXTPIVOT_LEFT RETURN "CMHDZ_HUD_TEXTPIVOT_LEFT" CASE CMHDZ_HUD_TEXTPIVOT_CENTER RETURN "CMHDZ_HUD_TEXTPIVOT_CENTER" CASE CMHDZ_HUD_TEXTPIVOT_RIGHT RETURN "CMHDZ_HUD_TEXTPIVOT_RIGHT" CASE CMHDZ_HUD_TEXTPIVOT_USE_STORED RETURN "CMHDZ_HUD_TEXTPIVOT_USE_STORED" ENDSWITCH RETURN "CMHDZ_HUD_TEXTPIVOT_INVALID" ENDFUNC FUNC STRING CMHDZ_ITEM_DATA_BITS_TO_STRING(CMHDZ_ITEM_DATA_BITS eType) SWITCH (eType) CASE CMHDZ_ITEM_DATA_BITS_NONE RETURN "CMHDZ_ITEM_DATA_BITS_NONE" CASE CMHDZ_ITEM_DATA_BITS_SPAWNED RETURN "CMHDZ_ITEM_DATA_BITS_SPAWNED" CASE CMHDZ_ITEM_DATA_BITS_RENDERING RETURN "CMHDZ_ITEM_DATA_BITS_RENDERING" CASE CMHDZ_ITEM_DATA_BITS_SHOT RETURN "CMHDZ_ITEM_DATA_BITS_SHOT" ENDSWITCH RETURN "CMHDZ_ITEM_DATA_BITS_INVALID" ENDFUNC FUNC STRING CMHDZ_ITEM_TYPES_TO_STRING(CMHDZ_ITEM_TYPES eType) SWITCH (eType) CASE CMHDZ_ITEM_NONE RETURN "CMHDZ_ITEM_NONE" CASE CMHDZ_ITEM_HEALTH RETURN "CMHDZ_ITEM_HEALTH" CASE CMHDZ_ITEM_SHIELD RETURN "CMHDZ_ITEM_SHIELD" CASE CMHDZ_ITEM_BUFF RETURN "CMHDZ_ITEM_BUFF" CASE CMHDZ_ITEM_VIDEOTAPE RETURN "CMHDZ_ITEM_VIDEOTAPE" // CASE CMHDZ_ITEM_REVOLVER_AMMO RETURN "CMHDZ_ITEM_REVOLVER_AMMO" CASE CMHDZ_ITEM_NAIL_GUN_AMMO RETURN "CMHDZ_ITEM_NAIL_GUN_AMMO" CASE CMHDZ_ITEM_RIFLE_AMMO RETURN "CMHDZ_ITEM_RIFLE_AMMO" CASE CMHDZ_ITEM_SHOTGUN_AMMO RETURN "CMHDZ_ITEM_SHOTGUN_AMMO" CASE CMHDZ_ITEM_MOLOTOV RETURN "CMHDZ_ITEM_MOLOTOV" CASE CMHDZ_ITEM_NAILBOMB RETURN "CMHDZ_ITEM_NAILBOMB" CASE CMHDZ_ITEM_BRICK RETURN "CMHDZ_ITEM_BRICK" CASE CMHDZ_ITEM_DYNAMITE RETURN "CMHDZ_ITEM_DYNAMITE" CASE NUM_CMHDZ_ITEM_TYPES RETURN "NUM_CMHDZ_ITEM_TYPES" ENDSWITCH RETURN "CMHDZ_ITEM_TYPES_INVALID" ENDFUNC FUNC STRING CMHDZ_LEVEL_SCREEN_TO_STRING(CMHDZ_LEVEL_SCREEN eType) SWITCH (eType) CASE CMHDZ_FADING_IN RETURN "CMHDZ_FADING_IN" CASE CMHDZ_PLAY RETURN "CMHDZ_PLAY" CASE CMHDZ_WAIT_FOR_DEAD RETURN "CMHDZ_WAIT_FOR_DEAD" CASE CMHDZ_FADING_OUT RETURN "CMHDZ_FADING_OUT" ENDSWITCH RETURN "CMHDZ_LEVEL_SCREEN_INVALID" ENDFUNC FUNC STRING CMHDZ_LEVELS_TO_STRING(CMHDZ_LEVELS eType) SWITCH (eType) CASE CMHDZ_LEVEL_CITY RETURN "CMHDZ_LEVEL_CITY" CASE CMHDZ_LEVEL_SCRAPYARD RETURN "CMHDZ_LEVEL_SCRAPYARD" CASE CMHDZ_LEVEL_ASYLUM RETURN "CMHDZ_LEVEL_ASYLUM" CASE CMHDZ_LEVEL_PARK RETURN "CMHDZ_LEVEL_PARK" CASE CMHDZ_LEVEL_SLAUGHTERHOUSE RETURN "CMHDZ_LEVEL_SLAUGHTERHOUSE" CASE CMHDZ_MAX_LEVELS RETURN "CMHDZ_MAX_LEVELS" ENDSWITCH RETURN "CMHDZ_LEVELS_INVALID" ENDFUNC FUNC STRING CMHDZ_LEVELS_BITSET_TO_STRING(CMHDZ_LEVELS_BITSET eType) SWITCH (eType) CASE CMHDZ_LEVELS_BIT_STOPPED RETURN "CMHDZ_LEVELS_BIT_STOPPED" CASE CMHDZ_LEVELS_BIT_TOWN_LARGE_BUILDING_PASSED_BY1 RETURN "CMHDZ_LEVELS_BIT_TOWN_LARGE_BUILDING_PASSED_BY1" CASE CMHDZ_LEVELS_BIT_REPLAYING_LEVEL RETURN "CMHDZ_LEVELS_BIT_REPLAYING_LEVEL" CASE CMHDZ_LEVELS_BIT_USED_SPECIAL_WEAPON RETURN "CMHDZ_LEVELS_BIT_USED_SPECIAL_WEAPON" CASE CMHDZ_LEVELS_BIT_DONE_RESULTS_SCREEN_AUDIO RETURN "CMHDZ_LEVELS_BIT_DONE_RESULTS_SCREEN_AUDIO" CASE CMHDZ_LEVELS_BIT_ADDED_ON_ACCURACY_BONUS RETURN "CMHDZ_LEVELS_BIT_ADDED_ON_ACCURACY_BONUS" CASE CMHDZ_LEVELS_BIT_PLAYED_DEATH_SCREEN_AUDIO RETURN "CMHDZ_LEVELS_BIT_PLAYED_DEATH_SCREEN_AUDIO" CASE CMHDZ_LEVELS_BIT_PLAYED_RESULTS_SCORE_AUDIO RETURN "CMHDZ_LEVELS_BIT_PLAYED_RESULTS_SCORE_AUDIO" CASE CMHDZ_LEVELS_BIT_PLAYED_ACCURACY_SCORE_AUDIO RETURN "CMHDZ_LEVELS_BIT_PLAYED_ACCURACY_SCORE_AUDIO" CASE CMHDZ_LEVELS_BIT_CHALLENGE_MONKEY_C_MONKEY_DIE_MONKEY_KILL RETURN "CMHDZ_LEVELS_BIT_CHALLENGE_MONKEY_C_MONKEY_DIE_MONKEY_KILL" CASE CMHDZ_LEVELS_BIT_CHALLENGE_MONKEY_C_MONKEY_DIE_BUNNY_KILL RETURN "CMHDZ_LEVELS_BIT_CHALLENGE_MONKEY_C_MONKEY_DIE_BUNNY_KILL" ENDSWITCH RETURN "CMHDZ_LEVELS_BITSET_INVALID" ENDFUNC FUNC STRING CMHDZ_MENU_OPTIONS_TO_STRING(CMHDZ_MENU_OPTIONS eType) SWITCH (eType) CASE CMHDZ_START RETURN "CMHDZ_START" CASE CMHDZ_SCORES RETURN "CMHDZ_SCORES" CASE CMHDZ_WANTED_1 RETURN "CMHDZ_WANTED_1" CASE CMHDZ_WANTED_2 RETURN "CMHDZ_WANTED_2" CASE CMHDZ_WANTED_3 RETURN "CMHDZ_WANTED_3" CASE CMHDZ_WANTED_4 RETURN "CMHDZ_WANTED_4" CASE CMHDZ_WANTED_5 RETURN "CMHDZ_WANTED_5" CASE CMHDZ_REWIND RETURN "CMHDZ_REWIND" CASE CMHDZ_EJECT RETURN "CMHDZ_EJECT" ENDSWITCH RETURN "CMHDZ_MENU_OPTIONS_INVALID" ENDFUNC FUNC STRING CMHDZ_MUSIC_BITS_TO_STRING(CMHDZ_MUSIC_BITS eType) SWITCH (eType) CASE CMHDZ_MUSIC_BIT_STARTED_INTRO RETURN "CMHDZ_MUSIC_BIT_STARTED_INTRO" CASE CMHDZ_MUSIC_BIT_STARTED_TITLE RETURN "CMHDZ_MUSIC_BIT_STARTED_TITLE" //CASE CMHDZ_MUSIC_BIT_STARTED_LEVEL RETURN "CMHDZ_MUSIC_BIT_STARTED_LEVEL" CASE CMHDZ_MUSIC_BIT_STOPPED RETURN "CMHDZ_MUSIC_BIT_STOPPED" CASE CMHDZ_MUSIC_BIT_DEATH RETURN "CMHDZ_MUSIC_BIT_DEATH" ENDSWITCH RETURN "CMHDZ_MUSIC_BITS_INVALID" ENDFUNC FUNC STRING CMHDZ_MUSIC_EVENTS_TO_STRING(CMHDZ_MUSIC_EVENTS eType) SWITCH (eType) CASE CMHDZ_MUSIC_EVENT_INVALID RETURN "CMHDZ_MUSIC_EVENT_INVALID" CASE CMHDZ_MUSIC_EVENT_INTRO RETURN "CMHDZ_MUSIC_EVENT_INTRO" CASE CMHDZ_MUSIC_EVENT_TITLE RETURN "CMHDZ_MUSIC_EVENT_TITLE" CASE CMHDZ_MUSIC_EVENT_GOSPEL RETURN "CMHDZ_MUSIC_EVENT_GOSPEL" CASE CMHDZ_MUSIC_EVENT_BUCKLE RETURN "CMHDZ_MUSIC_EVENT_BUCKLE" CASE CMHDZ_MUSIC_EVENT_HILLBILLY RETURN "CMHDZ_MUSIC_EVENT_HILLBILLY" CASE CMHDZ_MUSIC_EVENT_RUCKUS RETURN "CMHDZ_MUSIC_EVENT_RUCKUS" CASE CMHDZ_MUSIC_EVENT_BARREL RETURN "CMHDZ_MUSIC_EVENT_BARREL" CASE CMHDZ_MUSIC_EVENT_DEATH RETURN "CMHDZ_MUSIC_EVENT_DEATH" CASE CMHDZ_MUSIC_EVENT_STOP RETURN "CMHDZ_MUSIC_EVENT_STOP" ENDSWITCH RETURN "CMHDZ_MUSIC_EVENTS_INVALID" ENDFUNC FUNC STRING CMHDZ_PLAYER_BITSET_TO_STRING(CMHDZ_PLAYER_BITSET eType) SWITCH (eType) CASE CMHDZ_PLAYER_BIT_INVULNERABILE RETURN "CMHDZ_PLAYER_BIT_INVULNERABILE" CASE CMHDZ_PLAYER_BIT_HIDE_RETICULE RETURN "CMHDZ_PLAYER_BIT_HIDE_RETICULE" CASE CMHDZ_PLAYER_BIT_INIT_NEW_CHAIN RETURN "CMHDZ_PLAYER_BIT_INIT_NEW_CHAIN" // CASE CMHDZ_PLAYER_BIT_NAILGUN_OVERHEAT RETURN "CMHDZ_PLAYER_BIT_NAILGUN_OVERHEAT" // CASE CMHDZ_PLAYER_BIT_NAILGUN_STOPPED_SHOOTING RETURN "CMHDZ_PLAYER_BIT_NAILGUN_STOPPED_SHOOTING" CASE CMHDZ_PLAYER_BIT_RELOADED_FIRST_BULLET RETURN "CMHDZ_PLAYER_BIT_RELOADED_FIRST_BULLET" CASE CMHDZ_PLAYER_BIT_QUAD_DAMAGE RETURN "CMHDZ_PLAYER_BIT_QUAD_DAMAGE" ENDSWITCH RETURN "CMHDZ_PLAYER_BITSET_INVALID" ENDFUNC FUNC STRING CMHDZ_PLAYER_PED_ANIM_STATE_TO_STRING(CMHDZ_PLAYER_PED_ANIM_STATE eType) SWITCH (eType) CASE CMHDZ_PLAYER_PED_ANIM_IDLE RETURN "CMHDZ_PLAYER_PED_ANIM_IDLE" CASE CMHDZ_PLAYER_PED_ANIM_IDLE_TO_AIM RETURN "CMHDZ_PLAYER_PED_ANIM_IDLE_TO_AIM" CASE CMHDZ_PLAYER_PED_ANIM_AIM_IDLE RETURN "CMHDZ_PLAYER_PED_ANIM_AIM_IDLE" CASE CMHDZ_PLAYER_PED_ANIM_PLAY_IDLE RETURN "CMHDZ_PLAYER_PED_ANIM_PLAY_IDLE" CASE CMHDZ_PLAYER_PED_ANIM_AIM_IDLE_TO_LOSE_LIFE RETURN "CMHDZ_PLAYER_PED_ANIM_AIM_IDLE_TO_LOSE_LIFE" CASE CMHDZ_PLAYER_PED_ANIM_AIM_IDLE_TO_COMPLETE_SCREEN RETURN "CMHDZ_PLAYER_PED_ANIM_AIM_IDLE_TO_COMPLETE_SCREEN" CASE CMHDZ_PLAYER_PED_ANIM_AIM_IDLE_TO_COMPLETE_GAME RETURN "CMHDZ_PLAYER_PED_ANIM_AIM_IDLE_TO_COMPLETE_GAME" ENDSWITCH RETURN "CMHDZ_PLAYER_PED_ANIM_STATE_INVALID" ENDFUNC FUNC STRING CMHDZ_PLAYER_WEAPON_TO_STRING(CMHDZ_PLAYER_WEAPON eType) SWITCH (eType) CASE CMHDZ_PLAYER_WEAPON_NONE RETURN "CMHDZ_PLAYER_WEAPON_NONE" CASE CMHDZ_PLAYER_WEAPON_REVOLVER RETURN "CMHDZ_PLAYER_WEAPON_REVOLVER" // CASE CMHDZ_PLAYER_WEAPON_REVOLVER RETURN "CMHDZ_PLAYER_WEAPON_REVOLVER" CASE CMHDZ_PLAYER_WEAPON_RIFLE RETURN "CMHDZ_PLAYER_WEAPON_RIFLE" CASE CMHDZ_PLAYER_WEAPON_SHOTGUN RETURN "CMHDZ_PLAYER_WEAPON_SHOTGUN" CASE CMHDZ_PLAYER_WEAPON_NAILGUN RETURN "CMHDZ_PLAYER_WEAPON_NAILGUN" CASE CMHDZ_PLAYER_WEAPON_MAX RETURN "CMHDZ_PLAYER_WEAPON_MAX" ENDSWITCH RETURN "CMHDZ_PLAYER_WEAPON_INVALID" ENDFUNC FUNC STRING CMHDZ_PLAYER_WEAPON_TYPE_TO_STRING(CMHDZ_PLAYER_WEAPON_TYPE eType) SWITCH (eType) CASE CMHDZ_PLAYER_WEAPON_TYPE_DEFAULT RETURN "CMHDZ_PLAYER_WEAPON_TYPE_DEFAULT" CASE CMHDZ_PLAYER_WEAPON_TYPE_SPECIAL RETURN "CMHDZ_PLAYER_WEAPON_TYPE_SPECIAL" CASE CMHDZ_PLAYER_WEAPON_TYPE_MAX RETURN "CMHDZ_PLAYER_WEAPON_TYPE_MAX" ENDSWITCH RETURN "CMHDZ_PLAYER_WEAPON_TYPE_INVALID" ENDFUNC FUNC STRING CMHDZ_PROJECTILE_TYPES_TO_STRING(CMHDZ_PROJECTILE_TYPES eType) SWITCH (eType) CASE CMHDZ_PROJECTILE_NONE RETURN "CMHDZ_PROJECTILE_NONE" CASE CMHDZ_PROJECTILE_DYNAMITE RETURN "CMHDZ_PROJECTILE_DYNAMITE" CASE CMHDZ_PROJECTILE_MOLOTOV RETURN "CMHDZ_PROJECTILE_MOLOTOV" CASE CMHDZ_PROJECTILE_BRICK RETURN "CMHDZ_PROJECTILE_BRICK" CASE CMHDZ_PROJECTILE_NAILBOMB RETURN "CMHDZ_PROJECTILE_NAILBOMB" CASE CMHDZ_PROJECTILE_BONE RETURN "CMHDZ_PROJECTILE_BONE" CASE CMHDZ_PROJECTILE_JOWL RETURN "CMHDZ_PROJECTILE_JOWL" CASE CMHDZ_PROJECTILE_LEG RETURN "CMHDZ_PROJECTILE_LEG" CASE CMHDZ_PROJECTILE_TROTTER RETURN "CMHDZ_PROJECTILE_TROTTER" CASE NUM_CMHDZ_PROJECTILE_TYPES RETURN "NUM_CMHDZ_PROJECTILE_TYPES" ENDSWITCH RETURN "CMHDZ_PROJECTILE_TYPES_INVALID" ENDFUNC FUNC STRING CMHDZ_PROJECTILE_STATE_TO_STRING(CMHDZ_PROJECTILE_STATE eType) SWITCH (eType) CASE CMHDZ_PROJECTILE_STATE_INACTIVE RETURN "CMHDZ_PROJECTILE_STATE_INACTIVE" CASE CMHDZ_PROJECTILE_STATE_AIRBORNE RETURN "CMHDZ_PROJECTILE_STATE_AIRBORNE" CASE CMHDZ_PROJECTILE_STATE_IMPACT RETURN "CMHDZ_PROJECTILE_STATE_IMPACT" ENDSWITCH RETURN "CMHDZ_PROJECTILE_STATE_INVALID" ENDFUNC FUNC STRING CMHDZ_REPLAY_BITS_TO_STRING(CMHDZ_REPLAY_BITS eType) SWITCH (eType) CASE CMHDZ_REPLAY_BITS_NONE RETURN "CMHDZ_REPLAY_BITS_NONE" CASE CMHDZ_REPLAY_BITS_WAS_PLAYBACK_ON RETURN "CMHDZ_REPLAY_BITS_WAS_PLAYBACK_ON" CASE CMHDZ_REPLAY_BITS_WAS_RECORDING_ON RETURN "CMHDZ_REPLAY_BITS_WAS_RECORDING_ON" CASE CMHDZ_REPLAY_BITS_IS_NEW_FRAME RETURN "CMHDZ_REPLAY_BITS_IS_NEW_FRAME" CASE CMHDZ_REPLAY_BITS_IS_RECORD_FRAME RETURN "CMHDZ_REPLAY_BITS_IS_RECORD_FRAME" CASE CMHDZ_REPLAY_BITS_IS_PLAYBACK RETURN "CMHDZ_REPLAY_BITS_IS_PLAYBACK" CASE CMHDZ_REPLAY_BITS_IS_RECORDING RETURN "CMHDZ_REPLAY_BITS_IS_RECORDING" ENDSWITCH RETURN "CMHDZ_REPLAY_BITS_INVALID" ENDFUNC FUNC STRING CMHDZ_RESULT_SCREEN_STATE_TO_STRING(CMHDZ_RESULT_SCREEN_STATE eType) SWITCH (eType) CASE CMHDZ_RESULT_SCREEN_STATE_INIT RETURN "CMHDZ_RESULT_SCREEN_STATE_INIT" CASE CMHDZ_RESULT_SCREEN_STATE_DEAD_SCREEN RETURN "CMHDZ_RESULT_SCREEN_STATE_DEAD_SCREEN" CASE CMHDZ_RESULT_SCREEN_STATE_START_REWIND RETURN "CMHDZ_RESULT_SCREEN_STATE_START_REWIND" CASE CMHDZ_RESULT_SCREEN_STATE_REWIND RETURN "CMHDZ_RESULT_SCREEN_STATE_REWIND" CASE CMHDZ_RESULT_SCREEN_STATE_COMPLETE RETURN "CMHDZ_RESULT_SCREEN_STATE_COMPLETE" CASE CMHDZ_RESULT_SCREEN_STATE_GOTO_LEADERBOARD RETURN "CMHDZ_RESULT_SCREEN_STATE_GOTO_LEADERBOARD" CASE NUM_CMHDZ_RESULT_SCREEN_STATE RETURN "NUM_CMHDZ_RESULT_SCREEN_STATE" ENDSWITCH RETURN "CMHDZ_RESULT_SCREEN_STATE_INVALID" ENDFUNC FUNC STRING CMHDZ_SCORE_TYPE_TO_STRING(CMHDZ_SCORE_TYPE eType) SWITCH (eType) CASE CMHDZ_SCORE_TYPE_ENEMY RETURN "CMHDZ_SCORE_TYPE_ENEMY" CASE CMHDZ_SCORE_TYPE_ENEMY_HEADSHOT RETURN "CMHDZ_SCORE_TYPE_ENEMY_HEADSHOT" CASE CMHDZ_SCORE_TYPE_SCENERY RETURN "CMHDZ_SCORE_TYPE_SCENERY" CASE CMHDZ_SCORE_TYPE_ENEMY_EXPLOSION RETURN "CMHDZ_SCORE_TYPE_ENEMY_EXPLOSION" CASE CMHDZ_SCORE_TYPE_ANIMAL RETURN "CMHDZ_SCORE_TYPE_ANIMAL" CASE CMHDZ_SCORE_TYPE_TAPE RETURN "CMHDZ_SCORE_TYPE_TAPE" CASE CMHDZ_SCORE_TYPE_CASH RETURN "CMHDZ_SCORE_TYPE_CASH" ENDSWITCH RETURN "CMHDZ_SCORE_TYPE_INVALID" ENDFUNC FUNC STRING CMHDZ_SPRITE_TO_STRING(CMHDZ_SPRITE eType) SWITCH (eType) CASE CMHDZ_SPRITE_NONE RETURN "CMHDZ_SPRITE_NONE" CASE CMHDZ_SPRITE_GANG_01_ATTACKING RETURN "CMHDZ_SPRITE_GANG_01_ATTACKING" CASE CMHDZ_SPRITE_GANG_01_DEAD RETURN "CMHDZ_SPRITE_GANG_01_DEAD" CASE CMHDZ_SPRITE_GANG_01_RUNNING_01 RETURN "CMHDZ_SPRITE_GANG_01_RUNNING_01" CASE CMHDZ_SPRITE_GANG_01_RUNNING_02 RETURN "CMHDZ_SPRITE_GANG_01_RUNNING_02" CASE CMHDZ_SPRITE_GANG_01_THROWING_01 RETURN "CMHDZ_SPRITE_GANG_01_THROWING_01" CASE CMHDZ_SPRITE_GANG_01_THROWING_02 RETURN "CMHDZ_SPRITE_GANG_01_THROWING_02" CASE CMHDZ_SPRITE_GANG_01_THROWING_03 RETURN "CMHDZ_SPRITE_GANG_01_THROWING_03" CASE CMHDZ_SPRITE_GANG_01_THROWING_04 RETURN "CMHDZ_SPRITE_GANG_01_THROWING_04" CASE CMHDZ_SPRITE_GANG_01_THROWING_05 RETURN "CMHDZ_SPRITE_GANG_01_THROWING_05" CASE CMHDZ_SPRITE_GANG_01_HEADSHOT_01 RETURN "CMHDZ_SPRITE_GANG_01_HEADSHOT_01" CASE CMHDZ_SPRITE_GANG_01_HEADSHOT_02 RETURN "CMHDZ_SPRITE_GANG_01_HEADSHOT_02" CASE CMHDZ_SPRITE_GANG_01_HEADSHOT_03 RETURN "CMHDZ_SPRITE_GANG_01_HEADSHOT_03" CASE CMHDZ_SPRITE_GANG_01_HEADSHOT_04 RETURN "CMHDZ_SPRITE_GANG_01_HEADSHOT_04" CASE CMHDZ_SPRITE_GANG_01_HEADSHOT_05 RETURN "CMHDZ_SPRITE_GANG_01_HEADSHOT_05" CASE CMHDZ_SPRITE_GANG_01_HEADSHOT_06 RETURN "CMHDZ_SPRITE_GANG_01_HEADSHOT_06" CASE CMHDZ_SPRITE_GANG_01_HEADSHOT_07 RETURN "CMHDZ_SPRITE_GANG_01_HEADSHOT_07" CASE CMHDZ_SPRITE_GANG_01_HEADSHOT_08 RETURN "CMHDZ_SPRITE_GANG_01_HEADSHOT_08" CASE CMHDZ_SPRITE_GANG_01_HEADSHOT_09 RETURN "CMHDZ_SPRITE_GANG_01_HEADSHOT_09" CASE CMHDZ_SPRITE_GANG_02_ATTACKING RETURN "CMHDZ_SPRITE_GANG_02_ATTACKING" CASE CMHDZ_SPRITE_GANG_02_DEAD RETURN "CMHDZ_SPRITE_GANG_02_DEAD" CASE CMHDZ_SPRITE_GANG_02_RUNNING_01 RETURN "CMHDZ_SPRITE_GANG_02_RUNNING_01" CASE CMHDZ_SPRITE_GANG_02_RUNNING_02 RETURN "CMHDZ_SPRITE_GANG_02_RUNNING_02" CASE CMHDZ_SPRITE_GANG_02_THROWING_01 RETURN "CMHDZ_SPRITE_GANG_02_THROWING_01" CASE CMHDZ_SPRITE_GANG_02_THROWING_02 RETURN "CMHDZ_SPRITE_GANG_02_THROWING_02" CASE CMHDZ_SPRITE_GANG_02_THROWING_03 RETURN "CMHDZ_SPRITE_GANG_02_THROWING_03" CASE CMHDZ_SPRITE_GANG_02_THROWING_04 RETURN "CMHDZ_SPRITE_GANG_02_THROWING_04" CASE CMHDZ_SPRITE_GANG_02_THROWING_05 RETURN "CMHDZ_SPRITE_GANG_02_THROWING_05" CASE CMHDZ_SPRITE_GANG_02_HEADSHOT_01 RETURN "CMHDZ_SPRITE_GANG_02_HEADSHOT_01" CASE CMHDZ_SPRITE_GANG_02_HEADSHOT_02 RETURN "CMHDZ_SPRITE_GANG_02_HEADSHOT_02" CASE CMHDZ_SPRITE_GANG_02_HEADSHOT_03 RETURN "CMHDZ_SPRITE_GANG_02_HEADSHOT_03" CASE CMHDZ_SPRITE_GANG_02_HEADSHOT_04 RETURN "CMHDZ_SPRITE_GANG_02_HEADSHOT_04" CASE CMHDZ_SPRITE_GANG_02_HEADSHOT_05 RETURN "CMHDZ_SPRITE_GANG_02_HEADSHOT_05" CASE CMHDZ_SPRITE_GANG_02_HEADSHOT_06 RETURN "CMHDZ_SPRITE_GANG_02_HEADSHOT_06" CASE CMHDZ_SPRITE_GANG_02_HEADSHOT_07 RETURN "CMHDZ_SPRITE_GANG_02_HEADSHOT_07" CASE CMHDZ_SPRITE_GANG_02_HEADSHOT_08 RETURN "CMHDZ_SPRITE_GANG_02_HEADSHOT_08" CASE CMHDZ_SPRITE_GANG_02_HEADSHOT_09 RETURN "CMHDZ_SPRITE_GANG_02_HEADSHOT_09" CASE CMHDZ_SPRITE_GANG_03_ATTACKING RETURN "CMHDZ_SPRITE_GANG_03_ATTACKING" CASE CMHDZ_SPRITE_GANG_03_DEAD RETURN "CMHDZ_SPRITE_GANG_03_DEAD" CASE CMHDZ_SPRITE_GANG_03_RUNNING_01 RETURN "CMHDZ_SPRITE_GANG_03_RUNNING_01" CASE CMHDZ_SPRITE_GANG_03_RUNNING_02 RETURN "CMHDZ_SPRITE_GANG_03_RUNNING_02" CASE CMHDZ_SPRITE_GANG_03_THROWING_01 RETURN "CMHDZ_SPRITE_GANG_03_THROWING_01" CASE CMHDZ_SPRITE_GANG_03_THROWING_02 RETURN "CMHDZ_SPRITE_GANG_03_THROWING_02" CASE CMHDZ_SPRITE_GANG_03_THROWING_03 RETURN "CMHDZ_SPRITE_GANG_03_THROWING_03" CASE CMHDZ_SPRITE_GANG_03_THROWING_04 RETURN "CMHDZ_SPRITE_GANG_03_THROWING_04" CASE CMHDZ_SPRITE_GANG_03_THROWING_05 RETURN "CMHDZ_SPRITE_GANG_03_THROWING_05" CASE CMHDZ_SPRITE_GANG_03_HEADSHOT_01 RETURN "CMHDZ_SPRITE_GANG_03_HEADSHOT_01" CASE CMHDZ_SPRITE_GANG_03_HEADSHOT_02 RETURN "CMHDZ_SPRITE_GANG_03_HEADSHOT_02" CASE CMHDZ_SPRITE_GANG_03_HEADSHOT_03 RETURN "CMHDZ_SPRITE_GANG_03_HEADSHOT_03" CASE CMHDZ_SPRITE_GANG_03_HEADSHOT_04 RETURN "CMHDZ_SPRITE_GANG_03_HEADSHOT_04" CASE CMHDZ_SPRITE_GANG_03_HEADSHOT_05 RETURN "CMHDZ_SPRITE_GANG_03_HEADSHOT_05" CASE CMHDZ_SPRITE_GANG_03_HEADSHOT_06 RETURN "CMHDZ_SPRITE_GANG_03_HEADSHOT_06" CASE CMHDZ_SPRITE_GANG_03_HEADSHOT_07 RETURN "CMHDZ_SPRITE_GANG_03_HEADSHOT_07" CASE CMHDZ_SPRITE_GANG_03_HEADSHOT_08 RETURN "CMHDZ_SPRITE_GANG_03_HEADSHOT_08" CASE CMHDZ_SPRITE_GANG_03_HEADSHOT_09 RETURN "CMHDZ_SPRITE_GANG_03_HEADSHOT_09" CASE CMHDZ_SPRITE_GANG_04_ATTACKING RETURN "CMHDZ_SPRITE_GANG_04_ATTACKING" CASE CMHDZ_SPRITE_GANG_04_DEAD RETURN "CMHDZ_SPRITE_GANG_04_DEAD" CASE CMHDZ_SPRITE_GANG_04_RUNNING_01 RETURN "CMHDZ_SPRITE_GANG_04_RUNNING_01" CASE CMHDZ_SPRITE_GANG_04_RUNNING_02 RETURN "CMHDZ_SPRITE_GANG_04_RUNNING_02" CASE CMHDZ_SPRITE_GANG_04_THROWING_01 RETURN "CMHDZ_SPRITE_GANG_04_THROWING_01" CASE CMHDZ_SPRITE_GANG_04_THROWING_02 RETURN "CMHDZ_SPRITE_GANG_04_THROWING_02" CASE CMHDZ_SPRITE_GANG_04_THROWING_03 RETURN "CMHDZ_SPRITE_GANG_04_THROWING_03" CASE CMHDZ_SPRITE_GANG_04_THROWING_04 RETURN "CMHDZ_SPRITE_GANG_04_THROWING_04" CASE CMHDZ_SPRITE_GANG_04_THROWING_05 RETURN "CMHDZ_SPRITE_GANG_04_THROWING_05" CASE CMHDZ_SPRITE_GANG_04_HEADSHOT_01 RETURN "CMHDZ_SPRITE_GANG_04_HEADSHOT_01" CASE CMHDZ_SPRITE_GANG_04_HEADSHOT_02 RETURN "CMHDZ_SPRITE_GANG_04_HEADSHOT_02" CASE CMHDZ_SPRITE_GANG_04_HEADSHOT_03 RETURN "CMHDZ_SPRITE_GANG_04_HEADSHOT_03" CASE CMHDZ_SPRITE_GANG_04_HEADSHOT_04 RETURN "CMHDZ_SPRITE_GANG_04_HEADSHOT_04" CASE CMHDZ_SPRITE_GANG_04_HEADSHOT_05 RETURN "CMHDZ_SPRITE_GANG_04_HEADSHOT_05" CASE CMHDZ_SPRITE_GANG_04_HEADSHOT_06 RETURN "CMHDZ_SPRITE_GANG_04_HEADSHOT_06" CASE CMHDZ_SPRITE_GANG_04_HEADSHOT_07 RETURN "CMHDZ_SPRITE_GANG_04_HEADSHOT_07" CASE CMHDZ_SPRITE_GANG_04_HEADSHOT_08 RETURN "CMHDZ_SPRITE_GANG_04_HEADSHOT_08" CASE CMHDZ_SPRITE_GANG_04_HEADSHOT_09 RETURN "CMHDZ_SPRITE_GANG_04_HEADSHOT_09" CASE CMHDZ_SPRITE_GANG_05_ATTACKING RETURN "CMHDZ_SPRITE_GANG_05_ATTACKING" CASE CMHDZ_SPRITE_GANG_05_DEAD RETURN "CMHDZ_SPRITE_GANG_05_DEAD" CASE CMHDZ_SPRITE_GANG_05_RUNNING_01 RETURN "CMHDZ_SPRITE_GANG_05_RUNNING_01" CASE CMHDZ_SPRITE_GANG_05_RUNNING_02 RETURN "CMHDZ_SPRITE_GANG_05_RUNNING_02" CASE CMHDZ_SPRITE_GANG_05_THROWING_01 RETURN "CMHDZ_SPRITE_GANG_05_THROWING_01" CASE CMHDZ_SPRITE_GANG_05_THROWING_02 RETURN "CMHDZ_SPRITE_GANG_05_THROWING_02" CASE CMHDZ_SPRITE_GANG_05_THROWING_03 RETURN "CMHDZ_SPRITE_GANG_05_THROWING_03" CASE CMHDZ_SPRITE_GANG_05_THROWING_04 RETURN "CMHDZ_SPRITE_GANG_05_THROWING_04" CASE CMHDZ_SPRITE_GANG_05_THROWING_05 RETURN "CMHDZ_SPRITE_GANG_05_THROWING_05" CASE CMHDZ_SPRITE_GANG_05_HEADSHOT_01 RETURN "CMHDZ_SPRITE_GANG_05_HEADSHOT_01" CASE CMHDZ_SPRITE_GANG_05_HEADSHOT_02 RETURN "CMHDZ_SPRITE_GANG_05_HEADSHOT_02" CASE CMHDZ_SPRITE_GANG_05_HEADSHOT_03 RETURN "CMHDZ_SPRITE_GANG_05_HEADSHOT_03" CASE CMHDZ_SPRITE_GANG_05_HEADSHOT_04 RETURN "CMHDZ_SPRITE_GANG_05_HEADSHOT_04" CASE CMHDZ_SPRITE_GANG_05_HEADSHOT_05 RETURN "CMHDZ_SPRITE_GANG_05_HEADSHOT_05" CASE CMHDZ_SPRITE_GANG_05_HEADSHOT_06 RETURN "CMHDZ_SPRITE_GANG_05_HEADSHOT_06" CASE CMHDZ_SPRITE_GANG_05_HEADSHOT_07 RETURN "CMHDZ_SPRITE_GANG_05_HEADSHOT_07" CASE CMHDZ_SPRITE_GANG_05_HEADSHOT_08 RETURN "CMHDZ_SPRITE_GANG_05_HEADSHOT_08" CASE CMHDZ_SPRITE_GANG_05_HEADSHOT_09 RETURN "CMHDZ_SPRITE_GANG_05_HEADSHOT_09" ENDSWITCH SWITCH (eType) CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_01_A RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_01_A" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_01_A_ATTACK RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_01_A_ATTACK" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_01_B RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_01_B" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_01_DEAD RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_01_DEAD" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_01_HEADSHOT RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_01_HEADSHOT" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_02_A RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_02_A" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_02_B RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_02_B" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_02_DEAD RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_02_DEAD" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_02_HEADSHOT RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_02_HEADSHOT" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_03_A RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_03_A" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_03_B RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_03_B" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_03_DEAD RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_03_DEAD" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_03_HEADSHOT RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_03_HEADSHOT" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_04_A RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_04_A" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_04_B RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_04_B" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_04_A_ATTACK RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_04_A_ATTACK" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_04_A_DEAD RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_04_A_DEAD" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_04_B_DEAD RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_04_B_DEAD" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_04_A_HEADSHOT RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_04_A_HEADSHOT" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_04_B_HEADSHOT RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_04_B_HEADSHOT" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_05_A RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_05_A" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_05_B RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_05_B" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_05_A_DEAD RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_05_A_DEAD" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_05_B_DEAD RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_05_B_DEAD" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_05_A_HEADSHOT RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_05_A_HEADSHOT" CASE CMHDZ_SPRITE_FOREGROUND_ENEMY_05_B_HEADSHOT RETURN "CMHDZ_SPRITE_FOREGROUND_ENEMY_05_B_HEADSHOT" CASE CMHDZ_SPRITE_FG_ENEMY_GUNFIRE RETURN "CMHDZ_SPRITE_FG_ENEMY_GUNFIRE" CASE CMHDZ_SPRITE_THROWING_DYNAMITE_LARGE_01 RETURN "CMHDZ_SPRITE_THROWING_DYNAMITE_LARGE_01" CASE CMHDZ_SPRITE_THROWING_DYNAMITE_LARGE_02 RETURN "CMHDZ_SPRITE_THROWING_DYNAMITE_LARGE_02" CASE CMHDZ_SPRITE_THROWING_DYNAMITE_MEDIUM_01 RETURN "CMHDZ_SPRITE_THROWING_DYNAMITE_MEDIUM_01" ENDSWITCH SWITCH (eType) CASE CMHDZ_SPRITE_THROWING_DYNAMITE_MEDIUM_02 RETURN "CMHDZ_SPRITE_THROWING_DYNAMITE_MEDIUM_02" CASE CMHDZ_SPRITE_THROWING_DYNAMITE_SMALL_01 RETURN "CMHDZ_SPRITE_THROWING_DYNAMITE_SMALL_01" CASE CMHDZ_SPRITE_THROWING_DYNAMITE_SMALL_02 RETURN "CMHDZ_SPRITE_THROWING_DYNAMITE_SMALL_02" CASE CMHDZ_SPRITE_THROWING_MOLOTOV_LARGE RETURN "CMHDZ_SPRITE_THROWING_MOLOTOV_LARGE" CASE CMHDZ_SPRITE_THROWING_MOLOTOV_MEDIUM RETURN "CMHDZ_SPRITE_THROWING_MOLOTOV_MEDIUM" CASE CMHDZ_SPRITE_THROWING_MOLOTOV_SMALL RETURN "CMHDZ_SPRITE_THROWING_MOLOTOV_SMALL" CASE CMHDZ_SPRITE_THROWING_NAILBOMB_LARGE RETURN "CMHDZ_SPRITE_THROWING_NAILBOMB_LARGE" CASE CMHDZ_SPRITE_THROWING_NAILBOMB_MEDIUM RETURN "CMHDZ_SPRITE_THROWING_NAILBOMB_MEDIUM" CASE CMHDZ_SPRITE_THROWING_NAILBOMB_SMALL RETURN "CMHDZ_SPRITE_THROWING_NAILBOMB_SMALL" CASE CMHDZ_SPRITE_THROWING_BRICK_LARGE RETURN "CMHDZ_SPRITE_THROWING_BRICK_LARGE" CASE CMHDZ_SPRITE_THROWING_BRICK_MEDIUM RETURN "CMHDZ_SPRITE_THROWING_BRICK_MEDIUM" CASE CMHDZ_SPRITE_THROWING_BRICK_SMALL RETURN "CMHDZ_SPRITE_THROWING_BRICK_SMALL" CASE CMHDZ_SPRITE_THROWN_WEAPON_EXP_01 RETURN "CMHDZ_SPRITE_THROWN_WEAPON_EXP_01" CASE CMHDZ_SPRITE_THROWN_WEAPON_EXP_02 RETURN "CMHDZ_SPRITE_THROWN_WEAPON_EXP_02" CASE CMHDZ_SPRITE_TRASHBAG_BIG RETURN "CMHDZ_SPRITE_TRASHBAG_BIG" CASE CMHDZ_SPRITE_TRASHBAG_SMALL RETURN "CMHDZ_SPRITE_TRASHBAG_SMALL" CASE CMHDZ_SPRITE_TRASHCAN_BIG_01 RETURN "CMHDZ_SPRITE_TRASHCAN_BIG_01" CASE CMHDZ_SPRITE_TRASHCAN_BIG_02 RETURN "CMHDZ_SPRITE_TRASHCAN_BIG_02" CASE CMHDZ_SPRITE_TRASHCAN_SMALL_01 RETURN "CMHDZ_SPRITE_TRASHCAN_SMALL_01" CASE CMHDZ_SPRITE_TRASHCAN_SMALL_02 RETURN "CMHDZ_SPRITE_TRASHCAN_SMALL_02" ENDSWITCH SWITCH (eType) // CASE CMHDZ_SPRITE_ANIMALBONUS_SCORPION_01 RETURN "CMHDZ_SPRITE_ANIMALBONUS_SCORPION_01" // CASE CMHDZ_SPRITE_ANIMALBONUS_SCORPION_02 RETURN "CMHDZ_SPRITE_ANIMALBONUS_SCORPION_02" // CASE CMHDZ_SPRITE_BAT_01 RETURN "CMHDZ_SPRITE_BAT_01" // CASE CMHDZ_SPRITE_BAT_02 RETURN "CMHDZ_SPRITE_BAT_02" // CASE CMHDZ_SPRITE_EAGLE1 RETURN "CMHDZ_SPRITE_EAGLE1" // CASE CMHDZ_SPRITE_EAGLE2 RETURN "CMHDZ_SPRITE_EAGLE2" // CASE CMHDZ_SPRITE_LEVEL_03_FOREST_BEAR_01 RETURN "CMHDZ_SPRITE_LEVEL_03_FOREST_BEAR_01" // CASE CMHDZ_SPRITE_LEVEL_03_FOREST_BEAR_02 RETURN "CMHDZ_SPRITE_LEVEL_03_FOREST_BEAR_02" CASE CMHDZ_SPRITE_OUCH1 RETURN "CMHDZ_SPRITE_OUCH1" // CASE CMHDZ_SPRITE_VULTURE_01 RETURN "CMHDZ_SPRITE_VULTURE_01" // CASE CMHDZ_SPRITE_VULTURE_02 RETURN "CMHDZ_SPRITE_VULTURE_02" CASE CMHDZ_SPRITE_FENCE RETURN "CMHDZ_SPRITE_FENCE" // CASE CMHDZ_SPRITE_FENCE_SMALL RETURN "CMHDZ_SPRITE_FENCE_SMALL" CASE CMHDZ_SPRITE_CITY_BUILDING_06 RETURN "CMHDZ_SPRITE_CITY_BUILDING_06" CASE CMHDZ_SPRITE_CITY_BUILDING_07 RETURN "CMHDZ_SPRITE_CITY_BUILDING_07" CASE CMHDZ_SPRITE_CITY_BUILDING_08 RETURN "CMHDZ_SPRITE_CITY_BUILDING_08" CASE CMHDZ_SPRITE_SCRAPYARD_PROP_MD_VAN_01 RETURN "CMHDZ_SPRITE_SCRAPYARD_PROP_MD_VAN_01" ENDSWITCH SWITCH (eType) CASE CMHDZ_SPRITE_SCRAPYARD_PROP_MD_VAN_02 RETURN "CMHDZ_SPRITE_SCRAPYARD_PROP_MD_VAN_02" CASE CMHDZ_SPRITE_SCRAPYARD_PROP_MD_VAN_03 RETURN "CMHDZ_SPRITE_SCRAPYARD_PROP_MD_VAN_03" CASE CMHDZ_SPRITE_SCRAPYARD_PROP_MD_VAN_04 RETURN "CMHDZ_SPRITE_SCRAPYARD_PROP_MD_VAN_04" CASE CMHDZ_SPRITE_SCRAPYARD_PROP_MD_CAR_01 RETURN "CMHDZ_SPRITE_SCRAPYARD_PROP_MD_CAR_01" CASE CMHDZ_SPRITE_SCRAPYARD_PROP_MD_CAR_02 RETURN "CMHDZ_SPRITE_SCRAPYARD_PROP_MD_CAR_02" CASE CMHDZ_SPRITE_SCRAPYARD_PROP_MD_CAR_03 RETURN "CMHDZ_SPRITE_SCRAPYARD_PROP_MD_CAR_03" CASE CMHDZ_SPRITE_SCRAPYARD_PROP_MD_CAR_04 RETURN "CMHDZ_SPRITE_SCRAPYARD_PROP_MD_CAR_04" CASE CMHDZ_SPRITE_THEMEPARK_BUILDING_1 RETURN "CMHDZ_SPRITE_THEMEPARK_BUILDING_1" CASE CMHDZ_SPRITE_THEMEPARK_BUILDING_2 RETURN "CMHDZ_SPRITE_THEMEPARK_BUILDING_2" CASE CMHDZ_SPRITE_THEMEPARK_BUILDING_3 RETURN "CMHDZ_SPRITE_THEMEPARK_BUILDING_3" CASE CMHDZ_SPRITE_THEMEPARK_BUILDING_4 RETURN "CMHDZ_SPRITE_THEMEPARK_BUILDING_4" CASE CMHDZ_SPRITE_THEMEPARK_CLOWNBOARD_1 RETURN "CMHDZ_SPRITE_THEMEPARK_CLOWNBOARD_1" CASE CMHDZ_SPRITE_THEMEPARK_CLOWNBOARD_2 RETURN "CMHDZ_SPRITE_THEMEPARK_CLOWNBOARD_2" CASE CMHDZ_SPRITE_ASYLUM_PROP_MD_BED RETURN "CMHDZ_SPRITE_ASYLUM_PROP_MD_BED" CASE CMHDZ_SPRITE_ASYLUM_PROP_MD_WHEELCHAIR RETURN "CMHDZ_SPRITE_ASYLUM_PROP_MD_WHEELCHAIR" CASE CMHDZ_SPRITE_ASYLUM_PROP_MD_MATTRESS RETURN "CMHDZ_SPRITE_ASYLUM_PROP_MD_MATTRESS" CASE CMHDZ_SPRITE_ASYLUM_PROP_LIGHT_STATE_1 RETURN "CMHDZ_SPRITE_ASYLUM_PROP_LIGHT_STATE_1" CASE CMHDZ_SPRITE_ASYLUM_PROP_LIGHT_STATE_2 RETURN "CMHDZ_SPRITE_ASYLUM_PROP_LIGHT_STATE_2" CASE CMHDZ_SPRITE_ROCKS RETURN "CMHDZ_SPRITE_ROCKS" CASE CMHDZ_SPRITE_WATER_TANK RETURN "CMHDZ_SPRITE_WATER_TANK" CASE CMHDZ_SPRITE_FLOOR_GRASS RETURN "CMHDZ_SPRITE_FLOOR_GRASS" CASE CMHDZ_SPRITE_LEVEL_03_FOREST_ROCKS RETURN "CMHDZ_SPRITE_LEVEL_03_FOREST_ROCKS" CASE CMHDZ_SPRITE_TREE_01 RETURN "CMHDZ_SPRITE_TREE_01" CASE CMHDZ_SPRITE_TREE_02 RETURN "CMHDZ_SPRITE_TREE_02" CASE CMHDZ_SPRITE_BARREL_HORIZONTAL RETURN "CMHDZ_SPRITE_BARREL_HORIZONTAL" ENDSWITCH SWITCH (eType) CASE CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_ASSETS_10 RETURN "CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_ASSETS_10" CASE CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_CAVE_TILE RETURN "CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_CAVE_TILE" CASE CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_CAVE_TILE_02 RETURN "CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_CAVE_TILE_02" CASE CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_MINECART RETURN "CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_MINECART" CASE CMHDZ_SPRITE_THEMEPARK_MINECART_WHEEL_01 RETURN "CMHDZ_SPRITE_THEMEPARK_MINECART_WHEEL_01" CASE CMHDZ_SPRITE_THEMEPARK_MINECART_WHEEL_02 RETURN "CMHDZ_SPRITE_THEMEPARK_MINECART_WHEEL_02" CASE CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_ROCK RETURN "CMHDZ_SPRITE_LEVEL_04_GOLD_MINE_ROCK" CASE CMHDZ_SPRITE_PROP_BARRELS RETURN "CMHDZ_SPRITE_PROP_BARRELS" CASE CMHDZ_SPRITE_PROP_FOREGROUND_TRASH RETURN "CMHDZ_SPRITE_PROP_FOREGROUND_TRASH" CASE CMHDZ_SPRITE_PROP_BARRIER RETURN "CMHDZ_SPRITE_PROP_BARRIER" CASE CMHDZ_SPRITE_WOODENSTRUCTURE RETURN "CMHDZ_SPRITE_WOODENSTRUCTURE" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_PIG_01 RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_PIG_01" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_PIG_02 RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_PIG_02" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_BODYBAG_01 RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_BODYBAG_01" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_BODYBAG_02 RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_BODYBAG_02" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_BODYBAG_03 RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_BODYBAG_03" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_FLOOR_BODYBAG_01 RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_FLOOR_BODYBAG_01" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_FLOOR_BODYBAG_02 RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_FLOOR_BODYBAG_02" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_FLOOR_BODYBAG_03 RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_FLOOR_BODYBAG_03" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_FLOOR_BODYBAG_04 RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_FLOOR_BODYBAG_04" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_PROP_MEATGRINDER_01 RETURN "LEVEL_05_SLAUGHTERHOUSE_PROP_MEATGRINDER_01" ENDSWITCH SWITCH (eType) CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_PROP_DOOR_01 RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_PROP_DOOR_01" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_PROP_DOOR_02 RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_PROP_DOOR_02" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_PROP_WINDOW RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_PROP_WINDOW" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_BODYBAG_01 RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_BODYBAG_01" CASE CMHDZ_SPRITE_SLAUGHTERHOUSE_BODYBAG_02 RETURN "CMHDZ_SPRITE_SLAUGHTERHOUSE_BODYBAG_02" CASE CMHDZ_SPRITE_CACTUS_1 RETURN "CMHDZ_SPRITE_CACTUS_1" CASE CMHDZ_SPRITE_CACTUS_2 RETURN "CMHDZ_SPRITE_CACTUS_2" CASE CMHDZ_SPRITE_CACTUS_3 RETURN "CMHDZ_SPRITE_CACTUS_3" CASE CMHDZ_SPRITE_PROP_BUSH_LARGE RETURN "CMHDZ_SPRITE_PROP_BUSH_LARGE" CASE CMHDZ_SPRITE_PROP_BUSH_SMALL RETURN "CMHDZ_SPRITE_PROP_BUSH_SMALL" CASE CMHDZ_SPRITE_PROP_CACTUS_07 RETURN "CMHDZ_SPRITE_PROP_CACTUS_07" CASE CMHDZ_SPRITE_SCRAPYARD_PROP_FENCE RETURN "CMHDZ_SPRITE_SCRAPYARD_PROP_FENCE" CASE CMHDZ_SPRITE_SCRAPYARD_PROP_BG_CARS RETURN "CMHDZ_SPRITE_SCRAPYARD_PROP_BG_CARS" CASE CMHDZ_SPRITE_PROP_ROCK_LARGE RETURN "CMHDZ_SPRITE_PROP_ROCK_LARGE" CASE CMHDZ_SPRITE_PROP_ROCK_SMALL RETURN "CMHDZ_SPRITE_PROP_ROCK_SMALL" ENDSWITCH SWITCH (eType) CASE CMHDZ_SPRITE_ITEM_HEALTH RETURN "CMHDZ_SPRITE_ITEM_HEALTH" CASE CMHDZ_SPRITE_ITEM_SHIELD RETURN "CMHDZ_SPRITE_ITEM_SHIELD" CASE CMHDZ_SPRITE_ITEM_BUFF RETURN "CMHDZ_SPRITE_ITEM_BUFF" CASE CMHDZ_SPRITE_ITEM_ALCOHOL RETURN "CMHDZ_SPRITE_ITEM_ALCOHOL" CASE CMHDZ_SPRITE_ITEM_GOLD_BARS RETURN "CMHDZ_SPRITE_ITEM_GOLD_BARS" CASE CMHDZ_SPRITE_ITEM_QUAD_DAMAGE RETURN "CMHDZ_SPRITE_ITEM_QUAD_DAMAGE" CASE CMHDZ_SPRITE_ITEM_VIDEOTAPE RETURN "CMHDZ_SPRITE_ITEM_VIDEOTAPE" //CASE CMHDZ_SPRITE_ITEM_REVOLVER_AMMO RETURN "CMHDZ_SPRITE_ITEM_REVOLVER_AMMO" CASE CMHDZ_SPRITE_ITEM_MACHINE_GUN_AMMO RETURN "CMHDZ_SPRITE_ITEM_MACHINE_GUN_AMMO" CASE CMHDZ_SPRITE_ITEM_RIFLE_AMMO RETURN "CMHDZ_SPRITE_ITEM_RIFLE_AMMO" CASE CMHDZ_SPRITE_ITEM_SHOTGUN_AMMO RETURN "CMHDZ_SPRITE_ITEM_SHOTGUN_AMMO" CASE NUM_CMHDZ_SPRITE RETURN "NUM_CMHDZ_SPRITE" ENDSWITCH SWITCH (eType) CASE CMHDZ_SPRITE_GORE_BACKGROUND_1 RETURN "CMHDZ_SPRITE_GORE_BACKGROUND_1" CASE CMHDZ_SPRITE_GORE_BACKGROUND_2 RETURN "CMHDZ_SPRITE_GORE_BACKGROUND_2" CASE CMHDZ_SPRITE_GORE_BACKGROUND_3 RETURN "CMHDZ_SPRITE_GORE_BACKGROUND_3" CASE CMHDZ_SPRITE_GORE_BACKGROUND_4 RETURN "CMHDZ_SPRITE_GORE_BACKGROUND_4" CASE CMHDZ_SPRITE_GORE_BACKGROUND_5 RETURN "CMHDZ_SPRITE_GORE_BACKGROUND_5" CASE CMHDZ_SPRITE_GORE_BACKGROUND_6 RETURN "CMHDZ_SPRITE_GORE_BACKGROUND_6" CASE CMHDZ_SPRITE_GORE_BACKGROUND_7 RETURN "CMHDZ_SPRITE_GORE_BACKGROUND_7" CASE CMHDZ_SPRITE_GORE_BACKGROUND_8 RETURN "CMHDZ_SPRITE_GORE_BACKGROUND_8" //CASE CMHDZ_SPRITE_GORE_BACKGROUND_9 RETURN "CMHDZ_SPRITE_GORE_BACKGROUND_9" CASE CMHDZ_SPRITE_GORE_BACKGROUND_10 RETURN "CMHDZ_SPRITE_GORE_BACKGROUND_10" CASE CMHDZ_SPRITE_GORE_BACKGROUND_11 RETURN "CMHDZ_SPRITE_GORE_BACKGROUND_11" CASE CMHDZ_SPRITE_GORE_BACKGROUND_12 RETURN "CMHDZ_SPRITE_GORE_BACKGROUND_12" CASE CMHDZ_SPRITE_GORE_BACKGROUND_13 RETURN "CMHDZ_SPRITE_GORE_BACKGROUND_13" CASE CMHDZ_SPRITE_BEARSY_WALK_FRAME_01 RETURN "CMHDZ_SPRITE_BEARSY_WALK_FRAME_01" CASE CMHDZ_SPRITE_BEARSY_WALK_FRAME_02 RETURN "CMHDZ_SPRITE_BEARSY_WALK_FRAME_02" CASE CMHDZ_SPRITE_BEARSY_WALK_FRAME_03 RETURN "CMHDZ_SPRITE_BEARSY_WALK_FRAME_03" CASE CMHDZ_SPRITE_BEARSY_WALK_FRAME_04 RETURN "CMHDZ_SPRITE_BEARSY_WALK_FRAME_04" CASE CMHDZ_SPRITE_BEARSY_WALK_FRAME_05 RETURN "CMHDZ_SPRITE_BEARSY_WALK_FRAME_05" CASE CMHDZ_SPRITE_BEARSY_WALK_FRAME_IDLE RETURN "CMHDZ_SPRITE_BEARSY_WALK_FRAME_IDLE" CASE CMHDZ_SPRITE_BEARSY_THROWING_01 RETURN "CMHDZ_SPRITE_BEARSY_THROWING_01" CASE CMHDZ_SPRITE_BEARSY_THROWING_02 RETURN "CMHDZ_SPRITE_BEARSY_THROWING_02" CASE CMHDZ_SPRITE_BEARSY_THROWING_03 RETURN "CMHDZ_SPRITE_BEARSY_THROWING_03" CASE CMHDZ_SPRITE_BEARSY_BACKGROUND_STAGGERED RETURN "CMHDZ_SPRITE_BEARSY_BACKGROUND_STAGGERED" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_STAGGERED RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_STAGGERED" CASE CMHDZ_SPRITE_BEARSY_DEATH_01 RETURN "CMHDZ_SPRITE_BEARSY_DEATH_01" CASE CMHDZ_SPRITE_BEARSY_DEATH_02 RETURN "CMHDZ_SPRITE_BEARSY_DEATH_02" CASE CMHDZ_SPRITE_BEARSY_DEATH_PAIN_01 RETURN "CMHDZ_SPRITE_BEARSY_DEATH_PAIN_01" CASE CMHDZ_SPRITE_BEARSY_DEATH_PAIN_02 RETURN "CMHDZ_SPRITE_BEARSY_DEATH_PAIN_02" CASE CMHDZ_SPRITE_BEARSY_DEATH_PAIN_03 RETURN "CMHDZ_SPRITE_BEARSY_DEATH_PAIN_03" CASE CMHDZ_SPRITE_BEARSY_DEATH_PAIN_04 RETURN "CMHDZ_SPRITE_BEARSY_DEATH_PAIN_04" CASE CMHDZ_SPRITE_BEARSY_DEATH_PAIN_05 RETURN "CMHDZ_SPRITE_BEARSY_DEATH_PAIN_05" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_01 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_01" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_02 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_02" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_03 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_03" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_04 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_04" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_05 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_05" CASE CMHDZ_SPRITE_BEARSY_BONE_HIT_01 RETURN "CMHDZ_SPRITE_BEARSY_BONE_HIT_01" CASE CMHDZ_SPRITE_BEARSY_BONE_HIT_02 RETURN "CMHDZ_SPRITE_BEARSY_BONE_HIT_02" CASE CMHDZ_SPRITE_BEARSY_BONE_LARGE_01 RETURN "CMHDZ_SPRITE_BEARSY_BONE_LARGE_01" CASE CMHDZ_SPRITE_BEARSY_BONE_LARGE_02 RETURN "CMHDZ_SPRITE_BEARSY_BONE_LARGE_02" CASE CMHDZ_SPRITE_BEARSY_BONE_MED_01 RETURN "CMHDZ_SPRITE_BEARSY_BONE_MED_01" CASE CMHDZ_SPRITE_BEARSY_BONE_MED_02 RETURN "CMHDZ_SPRITE_BEARSY_BONE_MED_02" CASE CMHDZ_SPRITE_BEARSY_BONE_SMALL_01 RETURN "CMHDZ_SPRITE_BEARSY_BONE_SMALL_01" CASE CMHDZ_SPRITE_BEARSY_BONE_SMALL_02 RETURN "CMHDZ_SPRITE_BEARSY_BONE_SMALL_02" CASE CMHDZ_SPRITE_BEARSY_JOWL_HIT_01 RETURN "CMHDZ_SPRITE_BEARSY_JOWL_HIT_01" CASE CMHDZ_SPRITE_BEARSY_JOWL_HIT_02 RETURN "CMHDZ_SPRITE_BEARSY_JOWL_HIT_02" CASE CMHDZ_SPRITE_BEARSY_JOWL_LARGE_01 RETURN "CMHDZ_SPRITE_BEARSY_JOWL_LARGE_01" CASE CMHDZ_SPRITE_BEARSY_JOWL_LARGE_02 RETURN "CMHDZ_SPRITE_BEARSY_JOWL_LARGE_02" CASE CMHDZ_SPRITE_BEARSY_JOWL_MED_01 RETURN "CMHDZ_SPRITE_BEARSY_JOWL_MED_01" CASE CMHDZ_SPRITE_BEARSY_JOWL_MED_02 RETURN "CMHDZ_SPRITE_BEARSY_JOWL_MED_02" CASE CMHDZ_SPRITE_BEARSY_JOWL_SMALL_01 RETURN "CMHDZ_SPRITE_BEARSY_JOWL_SMALL_01" CASE CMHDZ_SPRITE_BEARSY_JOWL_SMALL_02 RETURN "CMHDZ_SPRITE_BEARSY_JOWL_SMALL_02" CASE CMHDZ_SPRITE_BEARSY_LEG_HIT_01 RETURN "CMHDZ_SPRITE_BEARSY_LEG_HIT_01" CASE CMHDZ_SPRITE_BEARSY_LEG_HIT_02 RETURN "CMHDZ_SPRITE_BEARSY_LEG_HIT_02" CASE CMHDZ_SPRITE_BEARSY_LEG_LARGE_01 RETURN "CMHDZ_SPRITE_BEARSY_LEG_LARGE_01" CASE CMHDZ_SPRITE_BEARSY_LEG_LARGE_02 RETURN "CMHDZ_SPRITE_BEARSY_LEG_LARGE_02" CASE CMHDZ_SPRITE_BEARSY_LEG_MED_01 RETURN "CMHDZ_SPRITE_BEARSY_LEG_MED_01" CASE CMHDZ_SPRITE_BEARSY_LEG_MED_02 RETURN "CMHDZ_SPRITE_BEARSY_LEG_MED_02" CASE CMHDZ_SPRITE_BEARSY_LEG_SMALL_01 RETURN "CMHDZ_SPRITE_BEARSY_LEG_SMALL_01" CASE CMHDZ_SPRITE_BEARSY_LEG_SMALL_02 RETURN "CMHDZ_SPRITE_BEARSY_LEG_SMALL_02" CASE CMHDZ_SPRITE_BEARSY_TROTTER_HIT_01 RETURN "CMHDZ_SPRITE_BEARSY_TROTTER_HIT_01" CASE CMHDZ_SPRITE_BEARSY_TROTTER_HIT_02 RETURN "CMHDZ_SPRITE_BEARSY_TROTTER_HIT_02" CASE CMHDZ_SPRITE_BEARSY_TROTTER_LARGE_01 RETURN "CMHDZ_SPRITE_BEARSY_TROTTER_LARGE_01" CASE CMHDZ_SPRITE_BEARSY_TROTTER_LARGE_02 RETURN "CMHDZ_SPRITE_BEARSY_TROTTER_LARGE_02" CASE CMHDZ_SPRITE_BEARSY_TROTTER_MED_01 RETURN "CMHDZ_SPRITE_BEARSY_TROTTER_MED_01" CASE CMHDZ_SPRITE_BEARSY_TROTTER_MED_02 RETURN "CMHDZ_SPRITE_BEARSY_TROTTER_MED_02" CASE CMHDZ_SPRITE_BEARSY_TROTTER_SMALL_01 RETURN "CMHDZ_SPRITE_BEARSY_TROTTER_SMALL_01" CASE CMHDZ_SPRITE_BEARSY_TROTTER_SMALL_02 RETURN "CMHDZ_SPRITE_BEARSY_TROTTER_SMALL_02" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_01 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_01" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_02 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_02" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_03 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_03" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_04 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_04" //CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SCREEN_CRACK RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SCREEN_CRACK" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_01 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_01" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_02 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_02" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_03 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_03" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_04 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_04" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_05 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_05" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_01 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_01" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_02 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_02" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_03 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_03" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_04 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_04" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_05 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_05" CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_06 RETURN "CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_06" CASE CMHDZ_SPRITE_SCREEN_DAMAGE_RIP RETURN "CMHDZ_SPRITE_SCREEN_DAMAGE_RIP" CASE CMHDZ_SPRITE_SCREEN_DAMAGE_BLOOD_SPLATTER RETURN "CMHDZ_SPRITE_SCREEN_DAMAGE_BLOOD_SPLATTER" //CASE CMHDZ_SPRITE_SCREEN_DAMAGE_BROKEN RETURN "CMHDZ_SPRITE_SCREEN_DAMAGE_BROKEN" CASE CMHDZ_SPRITE_GANG_RARE_BUNNY_RUNNING_01 RETURN "CMHDZ_SPRITE_GANG_RARE_BUNNY_RUNNING_01" CASE CMHDZ_SPRITE_GANG_RARE_BUNNY_RUNNING_02 RETURN "CMHDZ_SPRITE_GANG_RARE_BUNNY_RUNNING_02" CASE CMHDZ_SPRITE_GANG_RARE_MONKEY_RUNNING_01 RETURN "CMHDZ_SPRITE_GANG_RARE_MONKEY_RUNNING_01" CASE CMHDZ_SPRITE_GANG_RARE_MONKEY_RUNNING_02 RETURN "CMHDZ_SPRITE_GANG_RARE_MONKEY_RUNNING_02" CASE CMHDZ_SPRITE_GANG_RARE_RAT_RUNNING_01 RETURN "CMHDZ_SPRITE_GANG_RARE_RAT_RUNNING_01" CASE CMHDZ_SPRITE_GANG_RARE_RAT_RUNNING_02 RETURN "CMHDZ_SPRITE_GANG_RARE_RAT_RUNNING_02" CASE CMHDZ_SPRITE_GANG_RARE_BUNNY_DEAD RETURN "CMHDZ_SPRITE_GANG_RARE_BUNNY_DEAD" CASE CMHDZ_SPRITE_GANG_RARE_MONKEY_DEAD RETURN "CMHDZ_SPRITE_GANG_RARE_MONKEY_DEAD" CASE NUM_CMHDZ_SPRITE RETURN "NUM_CMHDZ_SPRITE" ENDSWITCH RETURN "CMHDZ_SPRITE_INVALID" ENDFUNC FUNC STRING CMHDZ_TEXDICT_TO_STRING(CMHDZ_TEXDICT eType) SWITCH (eType) CASE CMHDZ_TEXDICT_INVALID RETURN "CMHDZ_TEXDICT_INVALID" CASE CMHDZ_TEXDICT_BASE RETURN "CMHDZ_TEXDICT_BASE" CASE CMHDZ_TEXDICT_TITLE RETURN "CMHDZ_TEXDICT_TITLE" CASE CMHDZ_TEXDICT_HUD RETURN "CMHDZ_TEXDICT_HUD" CASE CMHDZ_TEXDICT_FACADE RETURN "CMHDZ_TEXDICT_FACADE" CASE CMHDZ_TEXDICT_LVLSELECT RETURN "CMHDZ_TEXDICT_LVLSELECT" CASE CMHDZ_TEXDICT_LVLCOMP RETURN "CMHDZ_TEXDICT_LVLCOMP" CASE CMHDZ_TEXDICT_LVL1 RETURN "CMHDZ_TEXDICT_LVL1" CASE CMHDZ_TEXDICT_LVL2 RETURN "CMHDZ_TEXDICT_LVL2" CASE CMHDZ_TEXDICT_LVL3 RETURN "CMHDZ_TEXDICT_LVL3" CASE CMHDZ_TEXDICT_LVL4 RETURN "CMHDZ_TEXDICT_LVL4" CASE CMHDZ_TEXDICT_LVL5 RETURN "CMHDZ_TEXDICT_LVL5" CASE CMHDZ_TEXDICT_FG_ENEMY_A RETURN "CMHDZ_TEXDICT_FG_ENEMY_A" CASE CMHDZ_TEXDICT_FG_ENEMY_B RETURN "CMHDZ_TEXDICT_FG_ENEMY_B" CASE CMHDZ_TEXDICT_FG_ENEMY_C RETURN "CMHDZ_TEXDICT_FG_ENEMY_C" CASE CMHDZ_TEXDICT_FG_ENEMY_D RETURN "CMHDZ_TEXDICT_FG_ENEMY_D" CASE CMHDZ_TEXDICT_FG_ENEMY_E RETURN "CMHDZ_TEXDICT_FG_ENEMY_E" //CASE CMHDZ_TEXDICT_FG_ENEMY_D RETURN "CMHDZ_TEXDICT_FG_ENEMY_D" CASE CMHDZ_TEXDICT_FG_ENEMY_E_2 RETURN "CMHDZ_TEXDICT_FG_ENEMY_E_2" CASE CMHDZ_TEXDICT_RESULTS RETURN "CMHDZ_TEXDICT_RESULTS" CASE CMHDZ_TEXDICT_DEAD RETURN "CMHDZ_TEXDICT_DEAD" CASE CMHDZ_TEXDICT_COMMON_PROPS RETURN "CMHDZ_TEXDICT_COMMON_PROPS" CASE CMHDZ_TEXDICT_CH_GANG_A RETURN "CMHDZ_TEXDICT_CH_GANG_A" CASE CMHDZ_TEXDICT_CH_GANG_B RETURN "CMHDZ_TEXDICT_CH_GANG_B" CASE CMHDZ_TEXDICT_CH_GANG_C RETURN "CMHDZ_TEXDICT_CH_GANG_C" CASE CMHDZ_TEXDICT_CH_GANG_D RETURN "CMHDZ_TEXDICT_CH_GANG_D" CASE CMHDZ_TEXDICT_CH_GANG_E RETURN "CMHDZ_TEXDICT_CH_GANG_E" CASE CMHDZ_TEXDICT_CH_GANG_RARE RETURN "CMHDZ_TEXDICT_CH_GANG_RARE" ENDSWITCH SWITCH (eType) CASE CMHDZ_TEXDICT_CH_CITY RETURN "CMHDZ_TEXDICT_CH_CITY" CASE CMHDZ_TEXDICT_CH_SCRAPYARD RETURN "CMHDZ_TEXDICT_CH_SCRAPYARD" CASE CMHDZ_TEXDICT_CH_ASYLUM RETURN "CMHDZ_TEXDICT_CH_ASYLUM" CASE CMHDZ_TEXDICT_CH_THEMEPARK RETURN "CMHDZ_TEXDICT_CH_THEMEPARK" CASE CMHDZ_TEXDICT_CH_SLAUGHTERHOUSE RETURN "CMHDZ_TEXDICT_CH_SLAUGHTERHOUSE" CASE NUM_CMHDZ_TEXTDICT RETURN "NUM_CMHDZ_TEXTDICT" ENDSWITCH RETURN "CMHDZ_TEXDICT_INVALID" ENDFUNC //#IF CMHDZ_CMDLINE_EDITOR_NEW //#ENDIF #ENDIF //---------------------------------- // STRUCTS //---------------------------------- STRUCT CMHDZ_COVER_MAP_DATA CMHDZ_COVER_DATA_BITS eDataBits CMHDZ_ASSET_TYPES eType VECTOR_2D vSpriteInitialPos VECTOR_2D vSpritePos VECTOR_2D vSpriteSize INT iCoverLane FLOAT fActiveAtPoint BOOL bFarBackground BOOL bRemoveOffScreen ENDSTRUCT #IF IS_DEBUG_BUILD PROC CMHDZ_COVER_MAP_DATA_SET_BIT_BY_BOOL(CMHDZ_COVER_MAP_DATA &dat, CMHDZ_COVER_DATA_BITS bit, BOOL bOn = TRUE) IF (bOn) SET_BITMASK_ENUM_AS_ENUM(dat.eDataBits, bit) CDEBUG2LN(DEBUG_MINIGAME, "Cover bit to set: ", CMHDZ_COVER_DATA_BITS_TO_STRING(bit)) DEBUG_PRINTCALLSTACK() ELSE CLEAR_BITMASK_ENUM_AS_ENUM(dat.eDataBits, bit) ENDIF ENDPROC #ENDIF STRUCT CMHDZ_COVER_DATA // These were replaced with the below bitset // BOOL bRendering = FALSE // BOOL bSpawnedPickup = FALSE // BOOL bIsSpecialCover = FALSE // BOOL bIsAnimated = FALSE // BOOL bNeverRender = FALSE CMHDZ_COVER_DATA_BITS eDataBits // INT iCoverLane INT iHitCount INT iDefaultFrameTimeCounter INT iDefaultUpdateFrames INT iSlowFrameTimeCounter INT iSlowUpdateFrames INT iSpriteAnimFrame CMHDZ_ASSET_TYPES eType VECTOR_2D vSpritePos VECTOR_2D vSpriteInitialPos VECTOR_2D vSpriteSize FLOAT fCoverWidth FLOAT fCoverHeight FLOAT fActiveAtPoint ENDSTRUCT STRUCT PROJECTILE_DATA INT iSlowFrameTimeCounter INT iSlowUpdateFrames INT iSpriteAnimFrame INT iLane INT iEnemyInstToHit = -1 // Enemy we hit with the projectile CMHDZ_PROJECTILE_STATE eState CMHDZ_PROJECTILE_TYPES eType VECTOR_2D vSpritePos VECTOR_2D vSpriteSize ENDSTRUCT STRUCT PROJECTILE_INFO INT iReloadTimeMS = 2000 FLOAT fBlastRadius = 250.0 FLOAT fDamagePoints = 1.0 ENDSTRUCT STRUCT BULLET_DATA BOOL bShot BOOL bHit BOOL bHitObject BOOL bPlayedAudio INT iSpriteBlastAnimFrame INT iSlowFrameTimeCounter INT iSlowUpdateFrames INT iTimeOfHit VECTOR_2D vSpritePos ENDSTRUCT STRUCT CMHDZ_FX_DATA BOOL bActive = FALSE BOOL bFinished = FALSE INT iSpriteBlastAnimFrame // Slow frames INT iSlowFrameTimeCounter INT iSlowUpdateFrames // Med frames INT iMedFrameTimeCounter INT iMedUpdateFrames INT iLane = 0 CMHDZ_FX_TYPE eFXType VECTOR_2D vSpritePos //RGBA_COLOUR_STRUCT sFXColour FLOAT fAlpha ENDSTRUCT STRUCT CMHDZ_EQUIPPED_WEAPON_DATA INT iAmmoInClip INT iTotalAmmo INT iLastShotTime INT iReloadSingleBulletTime ENDSTRUCT STRUCT CMHDZ_PLAYER_DATA BOOL bHasJustShot BOOL bCovering BOOL bHoveringEnemy BOOL bShouldShowReloadPrompt INT iProjectileIndex INT iLastShotTime INT iLastProjectileTime = 0 INT iDeadTime = 0 INT iReloadPromptShowTime = 0 BOOL bDoneReloadEffect BOOL bHeavyDamageState CMHDZ_RETICLE_BITS eReticuleBits = CMHDZ_RETICLE_BITS_NONE CMHDZ_PLAYER_WEAPON_TYPE weaponType = CMHDZ_PLAYER_WEAPON_TYPE_DEFAULT CMHDZ_PLAYER_WEAPON activeWeapon = CMHDZ_PLAYER_WEAPON_NONE CMHDZ_PROJECTILE_TYPES projectileType = CMHDZ_PROJECTILE_BRICK // CMHDZ_PROJECTILE_NONE - Change this back later CMHDZ_EQUIPPED_WEAPON_DATA weaponData[CMHDZ_PLAYER_WEAPON_TYPE_MAX] BOOL bIsReloading[CMHDZ_PLAYER_WEAPON_TYPE_MAX] // INT iAmmo = ciCMHDZ_PLAYER_START_AMMO // INT iWeapon = 0 FLOAT fHitCountdown INT iSuccessiveHits INT iChainedScore INT iScoreNoChain INT iPreviousTargetScore INT iPlayerBitset INT iInvulnerableTimer INT iHideReticuleTimer INT iQuadDamageTimer INT iNoAmmoTimer INT iDamageScreen FLOAT fRotation FLOAT fHealth = 1.0 VECTOR_2D vSpriteInitReticlePos VECTOR_2D vSpriteFinalReticlePos BULLET_DATA sBulletData[ciCMHDZ_MAX_PROJECTILES] PROJECTILE_DATA sThrownProjectile[ciCMHDZ_MAX_PLAYER_THROWN_PROJECTILES] INT iThrownProjectilesAmmo INT iNumberOfThrownProjectiles INT iLastThrownProjectileTime INT iThrownProjectileReloadDelay = 2000 ENDSTRUCT STRUCT CMHDZ_ENEMY_MAP_DATA CMHDZ_ENEMY_TYPES eEnemyType = 0 CMHDZ_ENEMY_DATA_BITS eDataBits VECTOR_2D vSpritePos VECTOR_2D vSize FLOAT fStoppingPos INT iLane FLOAT fPointToAppear INT iRenderAfterWarpCount INT iStaticScreenPhase ENDSTRUCT STRUCT CMHDZ_ENEMY_DATA CMHDZ_ENEMY_DATA_BITS eDataBits //All of these have been replaced with the above bit set //BOOL bReverse //BOOL bIsPopup //BOOL bThrownProjectile //BOOL bPlayedAimAudio //BOOL bPlayedCriticalWarningAudio //BOOL bOuthouseAudio //BOOL bAppearedOnscreen //BOOL bWaitUntilLevelStationary //BOOL bShotAtLeastOnce CMHDZ_ENEMY_TYPES iEnemyType = CMHDZ_ENEMY_INVALID CMHDZ_ENEMY_STATE eState = CMHDZ_ENEMY_STATE_INACTIVE INT iDefaultFrameTimeCounter INT iDefaultUpdateFrames INT iSlowFrameTimeCounter INT iSlowUpdateFrames INT iSpriteAnimFrame INT iHeadshotAnimFrame INT iGoreAnimFrame INT iHealth = 10 INT iEnemyFlashTimer INT iTimeOfLastShot FLOAT fAnimTimer INT iPopUpTime INT iEnemyLane FLOAT fPointToAppear INT iWarpedForMovingLevelCount INT iRenderAfterWarpedCount = 0 FLOAT fStoppingX = 500.0 INT iStaticScreenPhase = 0 // If the screen is static, spawn enemy sets based on the numbers. INT iEnemyVoiceID = 0 VECTOR_2D vSpritePos VECTOR_2D vStartPos VECTOR_2D vSize ENDSTRUCT //STRUCT CMHDZ_BOSS_PHASE_DATA // // CMHDZ_BOSS_STATE eStartingState // // FLOAT fStoppingX // INT iTimeToThrow // FLOAT fForegroundXAppear = 960.0 // // FLOAT fIdleAttackTime = 1000.0 // // INT iPopUpTime // INT iPopDownTime // INT iActiveLane // // CMHDZ_BOSS_DATA_BITS eDataBits // //ENDSTRUCT CONST_FLOAT cfBOSS_MaxHealth 400.0 STRUCT CMHDZ_BOSS_DATA FLOAT fHealth FLOAT fDamageThreshold_1 FLOAT fDamageThreshold_2 FLOAT fDamageThreshold_3 INT iActiveLane = ciCMHDZ_LANE_FOREGROUND // Timers FLOAT fStateChangeTimer = 0.0 FLOAT fAnimTimer = 0.0 FLOAT fTimeToThrow = 0.0 // Has enemy been shot BOOL bShotThisFrame = FALSE CMHDZ_BOSS_STATE eCurrentBossState = CMHDZ_BOSS_STATE_INACTIVE CMHDZ_BOSS_DATA_BITS eDataBits //CMHDZ_BOSS_PHASE_DATA eBossPhases[5] // Animation controller CMHDZ_SPRITE sStartingSprite CMHDZ_SPRITE eActiveSprite INT iAnimFrame // Positional data VECTOR_2D vSpritePos VECTOR_2D vScale RGBA_COLOUR_STRUCT rgbaColor ENDSTRUCT STRUCT CMHDZ_ITEM_MAP_DATA CMHDZ_ITEM_TYPES eItemType = CMHDZ_ITEM_HEALTH VECTOR_2D vSpritePos INT iLane INT iRenderAfterWarpCount INT iMinScreen INT iAttackReadyTimer = 500 FLOAT fForceScale = 1.0 ENDSTRUCT STRUCT CMHDZ_ITEM_DATA BOOL bRendering = FALSE BOOL bShot = FALSE CMHDZ_ITEM_TYPES eItemType = CMHDZ_ITEM_HEALTH INT iLane = 0 INT iRenderAfterWarpCount INT iWarpCount INT iMinScreen FLOAT fInitialXPos VECTOR_2D vSpritePos VECTOR_2D vSize ENDSTRUCT STRUCT CMHDZ_MENU_OPTION_DATA CMHDZ_ARCADE_CLIENT_STATE eClientState = CMHDZ_ARCADE_CLIENT_STATE_TITLE_SCREEN CMHDZ_MENU_OPTIONS eMenuOption VECTOR_2D vSpritePos //VECTOR_2D vSize ENDSTRUCT STRUCT CMHDZ_BACKGROUND_SPRITE //BOOL bRendering = FALSE VECTOR_2D vSpritePos VECTOR_2D vSpriteSize STRING sSprite INT iLane ENDSTRUCT STRUCT CMHDZ_PLAYER_WEAPON_DATA INT iClipSize INT iMaxAmmo INT iMaxEnemyImpacts INT iMinTimeBetweenShots INT iMinTimeReloadSingleBullet INT iMinDamagePerShot FLOAT fSpreadModifier ENDSTRUCT STRUCT ARCADE_GAMES_LEADERBOARD_STRUCT INT iInitials = 0 INT iScore = -1 INT iPlayer = -1 ENDSTRUCT STRUCT ARCADE_GAMES_LEADERBOARD_DATA ARCADE_GAMES_LEADERBOARD_STRUCT sLeaderboard[ciCASINO_ARCADE_LEADERBOARD_POSITIONS] CASINO_ARCADE_GAME eGame BOOL bLeaderboardReceived BOOL bEditing = FALSE BOOL bCheated = FALSE INT iLastLeaderboardRequest = -HIGHEST_INT INT iLocalLbdPos = -1 INT iCurrentInitial = 0 INT iInitials = 0 INT iLbdInitialProfanityToken = 0 INT iTickTimer = 0 INT iMylastLbScore #IF IS_DEBUG_BUILD BOOL bForceDefaultLeaderboard BOOL bDebugTestServerSort #ENDIF ENDSTRUCT #IF IS_DEBUG_BUILD STRUCT CMHDZ_DEBUG_STATE_WIDGET BOOL bDebugChangeState TEXT_WIDGET_ID twCurrentState TEXT_WIDGET_ID twDesiredState INT iDesiredStateSelector = 0 // required to prevent assert ENDSTRUCT STRUCT CMHDZ_ITEM_SELECTOR_WIDGET INT iSelectedIndex CMHDZ_ITEM_DATA sReadOnlyData TEXT_WIDGET_ID txtType ENDSTRUCT STRUCT CMHDZ_COVER_SELECTOR_WIDGET INT iSelectedIndex CMHDZ_COVER_DATA sReadOnlyData TEXT_WIDGET_ID txtType INT iDataBitsSet BOOL bRendering = FALSE BOOL bSpawnedPickup = FALSE BOOL bIsSpecialCover = FALSE BOOL bIsAnimated = FALSE BOOL bNeverRender = FALSE ENDSTRUCT //#ENDIF // //#IF CMHDZ_CMDLINE_EDITOR_NEW STRUCT CMHDZ_EDITOR BOOL bEditorActive BOOL bMenuActive = TRUE BOOL bRebuildMenu = TRUE INT iPlayMenuUpdateClock BOOL bShowMiniMap VECTOR_2D vMiniMapPos VECTOR_2D vMiniMapSize VECTOR_2D vReticuleOldPos VECTOR_2D vReticulePos VECTOR_2D vReticuleDelta INT iReticuleOverType INT iReticuleOverIndex[4] BOOL bShowEntityIndicies[4] BOOL bPlayStage = FALSE INT iEditMode = CMHDZ_EDITOR_MODE_LEVEL INT iSelectedData = -1 INT iNewUnitData = 0 INT iActiveLevel CONTROL_ACTION ctrlPlace = INPUT_FRONTEND_ACCEPT CONTROL_ACTION ctrlPick = INPUT_SCRIPT_RB CONTROL_ACTION ctrlToggleMap = INPUT_SCRIPT_RT CONTROL_ACTION ctrlToggleMenu = INPUT_SCRIPT_LT KEY_NUMBER ctrlPlace_PC = KEY_E KEY_NUMBER ctrlPick_PC = KEY_Q KEY_NUMBER ctrlToggleMap_PC = KEY_M KEY_NUMBER ctrlToggleMenu_PC = KEY_P INT iDirectionDebounceTime = 0 INT iMenuCurrentSelection INT iMenuMaxSelection CMHDZ_ENEMY_MAP_DATA sEnemyMapData[ciCMHDZ_MAX_ENEMIES] CMHDZ_COVER_MAP_DATA sCoverMapData[ciCMHDZ_MAX_COVER] CMHDZ_ITEM_MAP_DATA sItemMapData[ciCMHDZ_MAX_ITEMS] ENDSTRUCT #ENDIF STRUCT CMHDZ_ARCADE_DATA #IF IS_DEBUG_BUILD WIDGET_GROUP_ID widgetGroupExample BOOL bDebugCreatedWidgets BOOL bDebugPause INT iMyScores[CMHDZ_MAX_LEVELS] CMHDZ_DEBUG_STATE_WIDGET sClientStateWidget CMHDZ_DEBUG_STATE_WIDGET sPlayerProjectileWidget #IF CMHDZ_CMDLINE_EDITOR_NEW CMHDZ_EDITOR sEditor #ENDIF FLOAT fDebugFloat FLOAT fTexturePosX[4] FLOAT fTexturePosY[4] FLOAT fTextureScale[4] FLOAT fDebugEntityCornerX[2] FLOAT fDebugEntityCornerY[2] // FLOAT fDebugEntityWorldSpaceX // FLOAT fDebugEntityWorldSpaceY FLOAT fDebugReticuleEntityTLDiffX FLOAT fDebugReticuleEntityTLDiffY FLOAT fDebugEntityWorldX FLOAT fDebugEntityWorldY FLOAT fDebugEntityScale // FLOAT fDebugStickX // FLOAT fDebugStickY // FLOAT fDebugMouseX // FLOAT fDebugMouseY FLOAT fReticuleSpriteDist FLOAT fEntityStoppingX FLOAT fDebugFloatValue INT iDebugTotalScreens INT iDebugAnimFrame INT iDebugIntegerValue INT iStaggeredDebugCount INT iDebugEntityId INT iDebugEntityState INT iDebugLane INT iDebugType // INT iDebugCoverScreen INT iDebugEnemiesRemaining INT iEntityEdit INT iDebugPickupScreen INT iDebugTimer INT iDebugCover INT iDebugForegroundEnemy INT iDebugMiddleEnemy INT iDebugBackgroundEnemy INT iDebugFrameCount INT iDebugFACES_OF_DEATH FLOAT fDebugTotalFrameTime BOOL bDebugEnablePickup BOOL bDebugOutputAliveEnemies BOOL bStopMovingLevel BOOL bDisableFacade BOOL bEnableCoverHover BOOL bEnableEnemyHover BOOL bDebugShiftPropsLeft BOOL bDebugShiftPropsRight BOOL bDebugHideForegroundProps BOOL bDebugEnableEdit BOOL bDebugInitEdit BOOL bDebugFinaliseEdit BOOL bDebugAwardDeadeye BOOL bDebugAwardFACES_OF_DEATH BOOL bDebugAwardSetFACES_OF_DEATH BOOL bDebugAwardSTV BOOL bDebugAwardComplete BOOL bDebugAwardTrophy BOOL bClearAwardStats BOOL bDebugLaunchDynamite BOOL bDebugClearDynamite BOOL bDebugSetPlayerProjectile BOOL bDebugLaunchPlayerProjectile BOOL bDebugClearPlayerProjectile TEXT_WIDGET_ID twDebugPlayerProjectileType INT iDebugPlayerProjectileType BOOL bDebugInvunerablePlayer BOOL bDebugEnableQuadDamage BOOL bDrawDebugRect BOOL bDebugRectCenterMode VECTOR_2D vDebugRect[2] INT iDebugStackSize TEXT_WIDGET_ID twDebugId INT iAssertCounter #ENDIF BOOL bFadingOut = FALSE BOOL bLevelsCompleted[CMHDZ_MAX_LEVELS] INT iLastMenuInput = 0 INT iExplosionIndex = 0 INT iCurrentActiveEnemies[ciCMHDZ_MAX_LANES] INT iTimeSinceEnemyActive[ciCMHDZ_MAX_LANES] INT iFade = 0 INT iTotalNumberOfEnemiesSpawned = 0 INT iTotalNumberOfEnemies = 0 INT iTotalNumberOfEnemiesKilledForScreen = 0 INT iNumberOfBackgroundElementsDrawn = 0 INT iNumberOfCoverDrawn = 0 INT iNumberOfBackgroundElements = 0 INT iNumberOfEnemies = 0 INT iNumberOfThrownEnemyProjectiles = 0 INT iNumberOfHostages = 0 INT iNumberOfProps = 0 INT iNumberOfItems = 0 INT iNumberOfMenuOptions = 0 INT iNumberOfStages = 0 INT iLocalLevelRunningTime INT iResultsScreenTimer INT iTotalTimePlayed INT iTimer INT iRivalPart INT iStaggeredOnScreenViableCoverCount INT iHelpTextBitset = 0 INT iLevelBitset[CMHDZ_MAX_LEVELS] INT iTotalLevelShots[CMHDZ_MAX_LEVELS] INT iTotalLevelEnemyHits[CMHDZ_MAX_LEVELS] INT iTotalLevelEnemyHeadShots[CMHDZ_MAX_LEVELS] INT iTotalPowerupsCollected[CMHDZ_MAX_LEVELS] INT iDirectorAudioBits // Controls Director audio bits INT iChallengesBitsetForTelemetry INT iCurrentScreen INT iLastScreenToStopOn FLOAT fOverallLevelProgression = 0.0 INT iStaticScreenPhase = 0 INT iNumberOfViableOnScreenCoverPoints INT iViableOnScreenEnemyCoverPoints[ciCMHDZ_MAX_SUITABLE_HIDE_BEHIND_COVER] CMHDZ_ARCADE_CLIENT_STATE eClientState RGBA_COLOUR_STRUCT rgbaBlack RGBA_COLOUR_STRUCT rgbaSprite RGBA_COLOUR_STRUCT rgbaWhite RGBA_COLOUR_STRUCT rgbaRed RGBA_COLOUR_STRUCT rgbaRedText RGBA_COLOUR_STRUCT rgbaEnemyShot RGBA_COLOUR_STRUCT rgbaGreen RGBA_COLOUR_STRUCT rgbaBlue RGBA_COLOUR_STRUCT rgbaSpriteUsedBullet RGBA_COLOUR_STRUCT rgbaYellow RGBA_COLOUR_STRUCT rgbaWhiteSafe CMHDZ_LEVELS eCurrentLevel = CMHDZ_LEVEL_SCRAPYARD CMHDZ_LEVEL_SCREEN eLevelState = CMHDZ_FADING_IN // CMHDZ_MENU_OPTIONS eCurrentTitleOption = CMHDZ_START PROJECTILE_INFO sProjectileInfo[NUM_CMHDZ_PROJECTILE_TYPES] CMHDZ_PLAYER_DATA sPlayerData[ciCMHDZ_MAX_PLAYERS] CMHDZ_COVER_DATA sCoverData[ciCMHDZ_MAX_COVER] CMHDZ_FX_DATA sFXData[ciCMHDZ_MAX_FX] INT iBackgroundDataRenderingBits[2] INT iBackgroundTilesDataRenderingBits CMHDZ_BACKGROUND_SPRITE sBackgroundTilesData[ciCMHDZ_MAX_BACKGROUND_TILES] CMHDZ_BACKGROUND_SPRITE sBackgroundData[ciCMHDZ_MAX_BACKGROUND_ELEMS] CMHDZ_ENEMY_DATA sEnemyData[CICMHDZ_MAX_ENEMIES] CMHDZ_ITEM_DATA sItemData[ciCMHDZ_MAX_ITEMS] PROJECTILE_DATA sEnemyProjectiles[ciCMHDZ_MAX_ENEMY_PROJECTILES] CMHDZ_MENU_OPTION_DATA sMenuOptionsData[ciCMHDZ_MAX_MENU_OPTIONS] SCRIPT_CONTROL_HOLD_TIMER sControlTimer SCRIPT_CONTROL_HOLD_TIMER sPcQuitTimer ARCADE_CABINET_ANIM_EVENT_STRUCT sArcadeAnimData BOOL bDoneReactionAnim CMHDZ_PLAYER_PED_ANIM_STATE ePlayerPedAnimState = CMHDZ_PLAYER_PED_ANIM_IDLE //INT iBearAttackTime INT iIdleAnimCount BOOL bPlayedWinningAnim BOOL bWonTrophyThisSession BOOL bPlayedOutroAudio BOOL bPlayedOutro BINK_MOVIE_ID bmIdCmhdzIntro BINK_MOVIE_ID bmIdCmhdzOutro CMHDZ_RESULT_SCREEN_STATE eResultState INT iResultsScreenTimeout INT iReturnToMenuTimeout INT iMusicBitset INT iSoundId[CMHDZ_AUDIO_EFFECT_MAX] //INT iEffectFlashDurationTimer //FLOAT fTotalTimeTaken INT iEffectFlashAlpha FLOAT fEffectFlashAlpha BOOL bEffectHitmaxAlpha BOOL bFlipBackground FLOAT fBackgroundSpeedMult = 1.0 FLOAT fCurrentTimeStep ARCADE_GAMES_LEADERBOARD_DATA sLbData CMHDZ_HUD_TEXTPIVOT eTextPivot VECTOR_2D vTextScale CMHDZ_BOSS_DATA sBossData // Only need a V mod // VECTOR_2D vU_ScanMod // VECTOR_2D vV_ScanMod FLOAT fSyncOffsetX FLOAT fSyncOffsetY // Sound glitching FLOAT fSoundGlitchLevel // Final level used for sound playback FLOAT fSoundGlitchAdditional // Additional effects applied. // Sound cooldown FLOAT fDirectorVoiceCooldown FLOAT fEnemyVoiceCooldown // Local timers FLOAT fPowerRunTimer BOOL bSkipLeaderboard ENDSTRUCT CMHDZ_ARCADE_DATA sCMHDZData #IF IS_DEBUG_BUILD FUNC VECTOR_2D GET_DEBUG_TEXTURE_POS(INT iDebugTexture) RETURN INIT_VECTOR_2D(sCMHDZData.fTexturePosX[iDebugTexture], sCMHDZData.fTexturePosY[iDebugTexture]) ENDFUNC FUNC FLOAT GET_DEBUG_TEXTURE_SCALE(INT iDebugTexture) RETURN sCMHDZData.fTextureScale[iDebugTexture] ENDFUNC FUNC INT CMHDZ_GET_DEBUG_INTEGER() RETURN sCMHDZData.iDebugIntegerValue ENDFUNC FUNC FLOAT CMHDZ_GET_DEBUG_FLOAT() RETURN sCMHDZData.fDebugFloatValue ENDFUNC #ENDIF /////////////////////////////// /// MULTIPLAYER DATA /// /////////////////////////////// STRUCT CMHDZ_PART_DATA INT iHiScoreForLevel[CMHDZ_MAX_LEVELS] INT iCurrentScoreForLevel[CMHDZ_MAX_LEVELS] FLOAT fStarRatingForLevel[CMHDZ_MAX_LEVELS] ENDSTRUCT // Everyone can read this data, only the server can update it. STRUCT CMHDZ_SERVER_BROADCAST_DATA INT iServerGameState INT iNumPlayers INT iServerBitset INT iMatchId INT iSortLbForPart CMHDZ_PART_DATA sPlayerScores[2] ARCADE_GAMES_LEADERBOARD_STRUCT sLeaderboard[ciCASINO_ARCADE_LEADERBOARD_POSITIONS] BOOL bLeaderboardRecieved = FALSE ENDSTRUCT CMHDZ_SERVER_BROADCAST_DATA cmhdzServerBd CONST_INT ciCMHDZ_MAX_MP_PLAYERS 2 ENUM CMHDZ_PLAYER_BD_BITS CMHDZ_PLAYER_BD_BIT_EDITING_LEADERBOARD = 0 ENDENUM STRUCT CMHDZ_PLAYER_BROADCAST_DATA INT iGameState INT iPlayerBitset INT iPlayerScore[CMHDZ_MAX_LEVELS] INT iPlayerHiScore[CMHDZ_MAX_LEVELS] FLOAT fPlayerStarRating[CMHDZ_MAX_LEVELS] INT iLeaderboardInitials INT iLeaderboardScore = 0 ENDSTRUCT CMHDZ_PLAYER_BROADCAST_DATA playerBd[2] ENUM CMHDZ_SERVER_BITS CMHDZ_SERVER_BIT_TWO_PLAYERS_JOINED = 0, CMHDZ_SERVER_BIT_SOMEONE_EDITING_LEADERBOARD, CMHDZ_SERVER_BIT_SORTED_LEADERBOARD ENDENUM /// PURPOSE: /// Given a rectangle as topleft corner and size work out the center /// PARAMS: /// tlx - top left x /// tly - top left y /// w - width /// h - height /// RETURNS: /// Center as vector 2D FUNC VECTOR_2D CMHDZ_GET_CENTER_FROM_CORNER_RECT(FLOAT tlx, FLOAT tly, FLOAT w, FLOAT h) RETURN INIT_VECTOR_2D(tlx + (w / 2.0), tly + (h / 2.0)) ENDFUNC PROC SET_BITMASK_ENUM_AS_ENUM_BY_BOOL(ENUM_TO_INT &eBitField, ENUM_TO_INT eBitMask, BOOL bOn = TRUE) IF (bOn) eBitField = eBitField | eBitMask ELSE eBitField -= eBitField & eBitMask ENDIF ENDPROC FUNC BOOL CMHDZ_IS_POSITION_IN_BOX(VECTOR_2D vPos, VECTOR_2D vBoxCenter, VECTOR_2D vBoxSize) FLOAT x1, x2, y1, y2 x1 = vBoxCenter.x - (vBoxSize.x/2) y1 = vBoxCenter.y - (vBoxSize.y/2) x2 = vBoxCenter.x + (vBoxSize.x/2) y2 = vBoxCenter.y + (vBoxSize.y/2) RETURN (vPos.X > x1 AND vPos.x < x2) AND (vPos.y > y1 AND vPos.Y < y2) ENDFUNC FUNC VECTOR_2D CMHDZ_GET_ORIGIN_FOR_SCREEN(INT iScreen) RETURN INIT_VECTOR_2D((iScreen - 1) * (cfBASE_SCREEN_WIDTH / 2.0), 0) ENDFUNC FUNC INT CMHDZ_GET_SCREEN_FOR_X_POSITION(FLOAT xCoord) RETURN (FLOOR((xCoord * 2.0) / cfBASE_SCREEN_WIDTH) % 4) + 1 ENDFUNC FUNC STRING CMHDZ_GET_TEXTURE_DICT_NAME(CMHDZ_TEXDICT eDict) SWITCH (eDict) CASE CMHDZ_TEXDICT_INVALID RETURN "" CASE NUM_CMHDZ_TEXTDICT RETURN "" CASE CMHDZ_TEXDICT_BASE RETURN "MPCamhedzCommonProps" CASE CMHDZ_TEXDICT_TITLE RETURN "MPCamhedzTitles" CASE CMHDZ_TEXDICT_HUD RETURN "MPCamhedzCommonProps" CASE CMHDZ_TEXDICT_FACADE RETURN "MPCamhedzDeadScreen" CASE CMHDZ_TEXDICT_LVLSELECT RETURN "MPCamhedzTitles" CASE CMHDZ_TEXDICT_LVLCOMP RETURN "MPCamhedzTitles" CASE CMHDZ_TEXDICT_LVL1 RETURN "MPCamhedzLevel01City" CASE CMHDZ_TEXDICT_LVL2 RETURN "MPCamhedzLevel02Scrapyard" CASE CMHDZ_TEXDICT_LVL3 RETURN "MPCamhedzLevel03Asylum" CASE CMHDZ_TEXDICT_LVL4 RETURN "MPCamhedzLevel04Themepark" CASE CMHDZ_TEXDICT_LVL5 RETURN "MPCamhedzLevel05Slaughterhouse" CASE CMHDZ_TEXDICT_COMMON_PROPS RETURN "MPCamhedzCommonProps" CASE CMHDZ_TEXDICT_RESULTS RETURN "MPCamhedzResults" CASE CMHDZ_TEXDICT_FG_ENEMY_A RETURN "MPCamhedzEnemyFGA" CASE CMHDZ_TEXDICT_FG_ENEMY_B RETURN "MPCamhedzEnemyFGB" CASE CMHDZ_TEXDICT_FG_ENEMY_C RETURN "MPCamhedzEnemyFGC" CASE CMHDZ_TEXDICT_FG_ENEMY_D RETURN "MPCamhedzEnemyFGD" //CASE CMHDZ_TEXDICT_FG_ENEMY_D RETURN "MPCamhedzEnemyFGD_2" CASE CMHDZ_TEXDICT_FG_ENEMY_E RETURN "MPCamhedzEnemyFGE" CASE CMHDZ_TEXDICT_FG_ENEMY_E_2 RETURN "MPCamhedzEnemyFGE_2" CASE CMHDZ_TEXDICT_CH_GANG_A RETURN "MPCamhedzEnemyGangA" CASE CMHDZ_TEXDICT_CH_GANG_B RETURN "MPCamhedzEnemyGangB" CASE CMHDZ_TEXDICT_CH_GANG_C RETURN "MPCamhedzEnemyGangC" CASE CMHDZ_TEXDICT_CH_GANG_D RETURN "MPCamhedzEnemyGangD" CASE CMHDZ_TEXDICT_CH_GANG_E RETURN "MPCamhedzEnemyGangE" CASE CMHDZ_TEXDICT_CH_GANG_RARE RETURN "MPCamhedzEnemy_Hostages" CASE CMHDZ_TEXDICT_CH_CITY RETURN "MPCamhedzLevel01City" CASE CMHDZ_TEXDICT_CH_SCRAPYARD RETURN "MPCamhedzLevel02Scrapyard" CASE CMHDZ_TEXDICT_CH_ASYLUM RETURN "MPCamhedzLevel03Asylum" CASE CMHDZ_TEXDICT_CH_THEMEPARK RETURN "MPCamhedzLevel04Themepark" CASE CMHDZ_TEXDICT_CH_SLAUGHTERHOUSE RETURN "MPCamhedzLevel05Slaughterhouse" CASE CMHDZ_TEXDICT_CH_VHSFONT RETURN "MPCamhedzVHSFont" CASE CMHDZ_TEXDICT_CH_TITLES RETURN "MPCamhedzTitles" CASE CMHDZ_TEXDICT_CH_RESULTS RETURN "MPCamhedzResults" CASE CMHDZ_TEXDICT_CH_DAMAGE RETURN "MPCamhedzDamageEffects" CASE CMHDZ_TEXDICT_BACKGROUND_GORE RETURN "MPCamhedzGore" CASE CMHDZ_TEXDICT_BEARSY RETURN "MPCamhedzBearsy" CASE CMHDZ_TEXDICT_BEARSY_THROWING RETURN "MPCamhedzBearsy_Throwing" CASE CMHDZ_TEXDICT_BEARSY_EFFECTS RETURN "MPCamhedzBearsy_Effects" CASE CMHDZ_TEXDICT_BEARSY_FOREGROUND RETURN "MPCamhedzBearsy_Foreground" CASE CMHDZ_TEXDICT_BEARSY_FOREGROUND_ATTACK RETURN "MPCamhedzBearsy_ForegroundAttack" CASE CMHDZ_TEXDICT_BEARSY_DEATH RETURN "MPCamhedzBearsy_Death" CASE CMHDZ_TEXDICT_BEARSY_BONE RETURN "MPCamhedzBearsy_Projectile_Bone" CASE CMHDZ_TEXDICT_BEARSY_JOWL RETURN "MPCamhedzBearsy_Projectile_Bone" CASE CMHDZ_TEXDICT_BEARSY_LEG RETURN "MPCamhedzBearsy_Projectile_Bone" CASE CMHDZ_TEXDICT_BEARSY_TROTTER RETURN "MPCamhedzBearsy_Projectile_Bone" CASE CMHDZ_TEXDICT_ENEMY_BURNING RETURN "MPCamhedzBurning" CASE CMHDZ_TEXDICT_RETICLE_TYPES RETURN "MPCamhedzReticle" // CASE CMHDZ_TEXDICT_HOSTAGES RETURN "MPCamhedzEnemyGangA" CASE CMHDZ_TEXDICT_DEAD RETURN "MPCamhedzResults" ENDSWITCH RETURN "UNKNOWN DICT - CHECK CASES" ENDFUNC FUNC BOOL CMHDZ_LOAD_TEXDICT(CMHDZ_TEXDICT eDict) STRING sName = CMHDZ_GET_TEXTURE_DICT_NAME(eDict) IF IS_STRING_NULL_OR_EMPTY(sName) RETURN FALSE ENDIF REQUEST_STREAMED_TEXTURE_DICT(sName) IF NOT HAS_STREAMED_TEXTURE_DICT_LOADED(sName) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] CMHDZ_LOAD_TEXDICT - Loading:", sName) RETURN FALSE ENDIF //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] CMHDZ_LOAD_TEXDICT - Loaded:", sName) RETURN TRUE ENDFUNC PROC CMHDZ_RELEASE_TEXDICT(CMHDZ_TEXDICT eDict) STRING sName = CMHDZ_GET_TEXTURE_DICT_NAME(eDict) IF IS_STRING_NULL_OR_EMPTY(sName) EXIT ENDIF // IF NOT HAS_STREAMED_TEXTURE_DICT_LOADED(sName) // EXIT // ENDIF //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] CMHDZ_RELEASE_TEXDICT - Released:", sName) SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED(sName) ENDPROC FUNC BOOL CMHDZ_LOAD_ALL_TEXTURE_DICTS() CMHDZ_TEXDICT dict REPEAT NUM_CMHDZ_TEXTDICT dict IF (dict != CMHDZ_TEXDICT_INVALID) AND (dict != NUM_CMHDZ_TEXTDICT) AND NOT CMHDZ_LOAD_TEXDICT(dict) //CDEBUG2LN(DEBUG_MINIGAME, "CMHDZ_LOAD_ALL_TEXTURE_DICTS - Loading Tex Dic: ", CMHDZ_GET_TEXTURE_DICT_NAME(dict)) RETURN FALSE ENDIF ENDREPEAT RETURN TRUE ENDFUNC PROC CMHDZ_RELEASE_ALL_TEXTURE_DICTS() CMHDZ_TEXDICT dict REPEAT NUM_CMHDZ_TEXTDICT dict IF (dict != CMHDZ_TEXDICT_INVALID) AND (dict != NUM_CMHDZ_TEXTDICT) CMHDZ_RELEASE_TEXDICT(dict) ENDIF ENDREPEAT ENDPROC // TODO (LOW): CMHDZ_GET_ENUM_FROM_TEXTURE_DICT_NAME Needs updating FUNC CMHDZ_TEXDICT CMHDZ_GET_ENUM_FROM_TEXTURE_DICT_NAME(STRING sName) IF ARE_STRINGS_EQUAL(sName, "MPLastGunslingersCommon") RETURN CMHDZ_TEXDICT_BASE ELIF ARE_STRINGS_EQUAL(sName, "MPLastGunslingersTitle") RETURN CMHDZ_TEXDICT_TITLE ELIF ARE_STRINGS_EQUAL(sName, "MPLastGunslingersHud") RETURN CMHDZ_TEXDICT_HUD ELIF ARE_STRINGS_EQUAL(sName, "MPLastGunslingersFacade") RETURN CMHDZ_TEXDICT_FACADE ELIF ARE_STRINGS_EQUAL(sName, "MPLastGunslingersLevels") RETURN CMHDZ_TEXDICT_LVLSELECT ELIF ARE_STRINGS_EQUAL(sName, "MPLastGunslingersLevelsComp") RETURN CMHDZ_TEXDICT_LVLCOMP ELIF ARE_STRINGS_EQUAL(sName, "MPLastGunslingersLevel1") RETURN CMHDZ_TEXDICT_LVL1 ELIF ARE_STRINGS_EQUAL(sName, "MPLastGunslingersLevel2") RETURN CMHDZ_TEXDICT_LVL2 ELIF ARE_STRINGS_EQUAL(sName, "MPLastGunslingersLevel3") RETURN CMHDZ_TEXDICT_LVL3 ELIF ARE_STRINGS_EQUAL(sName, "MPLastGunslingersLevel4") RETURN CMHDZ_TEXDICT_LVL4 ELIF ARE_STRINGS_EQUAL(sName, "MPCamhedzLevel05Slaughterhouse") RETURN CMHDZ_TEXDICT_LVL5 ELIF ARE_STRINGS_EQUAL(sName, "MPCamhedzEnemyFGA") RETURN CMHDZ_TEXDICT_FG_ENEMY_A ELIF ARE_STRINGS_EQUAL(sName, "MPCamhedzEnemyFGB") RETURN CMHDZ_TEXDICT_FG_ENEMY_B ELIF ARE_STRINGS_EQUAL(sName, "MPCamhedzEnemyFGC") RETURN CMHDZ_TEXDICT_FG_ENEMY_C ELIF ARE_STRINGS_EQUAL(sName, "MPCamhedzEnemyFGD") RETURN CMHDZ_TEXDICT_FG_ENEMY_D ELIF ARE_STRINGS_EQUAL(sName, "MPCamhedzEnemyFGE") RETURN CMHDZ_TEXDICT_FG_ENEMY_E ELIF ARE_STRINGS_EQUAL(sName, "MPCamhedzEnemyFGD_2") RETURN CMHDZ_TEXDICT_FG_ENEMY_D ELIF ARE_STRINGS_EQUAL(sName, "MPCamhedzEnemyFGE_2") RETURN CMHDZ_TEXDICT_FG_ENEMY_E_2 ELIF ARE_STRINGS_EQUAL(sName, "MPLastGunslingersProps") RETURN CMHDZ_TEXDICT_COMMON_PROPS ELIF ARE_STRINGS_EQUAL(sName, "MPCamhedzResults") RETURN CMHDZ_TEXDICT_RESULTS ELIF ARE_STRINGS_EQUAL(sName, "MPLastGunslingersDead") RETURN CMHDZ_TEXDICT_DEAD ENDIF RETURN CMHDZ_TEXDICT_INVALID ENDFUNC //========== BITMASKS FOR IN-GAME OBJECTS ========== ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Player Bits ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// FUNC BOOL CMHDZ_IS_PLAYER_BIT_SET(CMHDZ_PLAYER_BITSET eBit) RETURN IS_BIT_SET(sCMHDZData.sPlayerData[0].iPlayerBitset, ENUM_TO_INT(eBit)) ENDFUNC PROC CMHDZ_SET_PLAYER_BIT(CMHDZ_PLAYER_BITSET eBit) IF NOT CMHDZ_IS_PLAYER_BIT_SET(eBit) #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_SET_PLAYER_BIT] {DSW} Set bit ", CMHDZ_PLAYER_BITSET_TO_STRING(eBit)) #ENDIF SET_BIT(sCMHDZData.sPlayerData[0].iPlayerBitset, ENUM_TO_INT(eBit)) ENDIF ENDPROC PROC CMHDZ_CLEAR_PLAYER_BIT(CMHDZ_PLAYER_BITSET eBit) IF CMHDZ_IS_PLAYER_BIT_SET(eBit) #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_CLEAR_PLAYER_BIT] {DSW} Set bit ", CMHDZ_PLAYER_BITSET_TO_STRING(eBit)) #ENDIF CLEAR_BIT(sCMHDZData.sPlayerData[0].iPlayerBitset, ENUM_TO_INT(eBit)) ENDIF ENDPROC ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Cover Bits ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// PROC CMHDZ_COVER_MAP_DATA_SET_BITMASK(CMHDZ_COVER_MAP_DATA &dat, CMHDZ_COVER_DATA_BITS bit) SET_BITMASK_ENUM_AS_ENUM(dat.eDataBits, bit) ENDPROC PROC CMHDZ_COVER_MAP_DATA_CLEAR_BITMASK(CMHDZ_COVER_MAP_DATA &dat, CMHDZ_COVER_DATA_BITS bit) CLEAR_BITMASK_ENUM_AS_ENUM(dat.eDataBits, bit) ENDPROC FUNC BOOL CMHDZ_COVER_MAP_DATA_IS_BITMASK_SET(CMHDZ_COVER_MAP_DATA &dat, CMHDZ_COVER_DATA_BITS bit) RETURN IS_BITMASK_ENUM_AS_ENUM_SET(dat.eDataBits, bit) ENDFUNC #ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Enemy Bits ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// PROC CMHDZ_ENEMY_DATA_SET_BIT_BY_BOOL(INT iEnemy, CMHDZ_ENEMY_DATA_BITS bit, BOOL bOn = TRUE) IF (bOn) SET_BITMASK_ENUM_AS_ENUM(sCMHDZData.sEnemyData[iEnemy].eDataBits, bit) ELSE CLEAR_BITMASK_ENUM_AS_ENUM(sCMHDZData.sEnemyData[iEnemy].eDataBits, bit) ENDIF ENDPROC PROC CMHDZ_ENEMY_DATA_SET_BITMASK(INT iEnemy, CMHDZ_ENEMY_DATA_BITS bit) SET_BITMASK_ENUM_AS_ENUM(sCMHDZData.sEnemyData[iEnemy].eDataBits, bit) ENDPROC PROC CMHDZ_ENEMY_DATA_CLEAR_BITMASK(INT iEnemy, CMHDZ_ENEMY_DATA_BITS bit) CLEAR_BITMASK_ENUM_AS_ENUM(sCMHDZData.sEnemyData[iEnemy].eDataBits, bit) ENDPROC FUNC BOOL CMHDZ_ENEMY_DATA_IS_BITMASK_SET(INT iEnemy, CMHDZ_ENEMY_DATA_BITS bit) RETURN IS_BITMASK_ENUM_AS_ENUM_SET(sCMHDZData.sEnemyData[iEnemy].eDataBits, bit) ENDFUNC ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Level Bits ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// FUNC BOOL CMHDZ_IS_LEVEL_BIT_SET_FOR_LEVEL(CMHDZ_LEVELS eLevel, CMHDZ_LEVELS_BITSET eBit) RETURN IS_BIT_SET(sCMHDZData.iLevelBitset[ENUM_TO_INT(eLevel)], ENUM_TO_INT(eBit)) ENDFUNC FUNC BOOL CMHDZ_IS_LEVEL_BIT_SET_FOR_CURRENT_LEVEL(CMHDZ_LEVELS_BITSET eBit) RETURN CMHDZ_IS_LEVEL_BIT_SET_FOR_LEVEL(sCMHDZData.eCurrentLevel, eBit) ENDFUNC PROC CMHDZ_SET_LEVEL_BIT_FOR_LEVEL(CMHDZ_LEVELS eLevel, CMHDZ_LEVELS_BITSET eBit) IF NOT CMHDZ_IS_LEVEL_BIT_SET_FOR_LEVEL(eLevel, eBit) // #IF IS_DEBUG_BUILD // STRING sBit = CMHDZ_LEVELS_BITSET_TO_STRING(eBit) // STRING sLevel = CMHDZ_LEVELS_TO_STRING(eLevel) // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_SET_LEVEL_BIT_FOR_LEVEL] {DSW} Set bit ", sBit, " For Level ", sLevel) // #ENDIF SET_BIT(sCMHDZData.iLevelBitset[ENUM_TO_INT(eLevel)], ENUM_TO_INT(eBit)) ENDIF ENDPROC PROC CMHDZ_SET_LEVEL_BIT_FOR_CURRENT_LEVEL(CMHDZ_LEVELS_BITSET eBit) CMHDZ_SET_LEVEL_BIT_FOR_LEVEL(sCMHDZData.eCurrentLevel, eBit) ENDPROC //========== MUSIC EVENTS ========== FUNC CMHDZ_MUSIC_EVENTS CMHDZ_GET_MUSIC_EVENT_FOR_LEVEL(CMHDZ_LEVELS eLevel) SWITCH eLevel CASE CMHDZ_LEVEL_CITY RETURN CMHDZ_MUSIC_EVENT_GOSPEL CASE CMHDZ_LEVEL_SCRAPYARD RETURN CMHDZ_MUSIC_EVENT_BUCKLE CASE CMHDZ_LEVEL_ASYLUM RETURN CMHDZ_MUSIC_EVENT_HILLBILLY CASE CMHDZ_LEVEL_PARK RETURN CMHDZ_MUSIC_EVENT_RUCKUS CASE CMHDZ_LEVEL_SLAUGHTERHOUSE RETURN CMHDZ_MUSIC_EVENT_BARREL ENDSWITCH RETURN CMHDZ_MUSIC_EVENT_INVALID ENDFUNC FUNC STRING CMHDZ_GET_MUSIC_EVENT_FROM_ENUM(CMHDZ_MUSIC_EVENTS eEvent) SWITCH eEvent CASE CMHDZ_MUSIC_EVENT_INTRO RETURN "ARCADE_CamH_INTRO_OS" CASE CMHDZ_MUSIC_EVENT_TITLE RETURN "ARCADE_CamH_TITLE_CARD" CASE CMHDZ_MUSIC_EVENT_GOSPEL RETURN "ARCADE_CamH_TRACK_1" CASE CMHDZ_MUSIC_EVENT_BUCKLE RETURN "ARCADE_CamH_TRACK_2" CASE CMHDZ_MUSIC_EVENT_HILLBILLY RETURN "ARCADE_CamH_TRACK_4" CASE CMHDZ_MUSIC_EVENT_RUCKUS RETURN "ARCADE_CamH_TRACK_6" CASE CMHDZ_MUSIC_EVENT_BARREL RETURN "ARCADE_CamH_TRACK_9" CASE CMHDZ_MUSIC_EVENT_STOP RETURN "ARCADE_CamH_STOP" CASE CMHDZ_MUSIC_EVENT_DEATH RETURN "ARCADE_CamH_DEATH_OS" CASE CMHDZ_MUSIC_EVENT_HIT RETURN "ARCADE_CamH_PLAYER_HIT" CASE CMHDZ_MUSIC_EVENT_HIT_ALT RETURN "ARCADE_CamH_PLAYER_HIT_ALT" CASE CMHDZ_MUSIC_EVENT_FINAL_BOSS RETURN "ARCADE_CamH_FINAL_BOSS" CASE CMHDZ_MUSIC_EVENT_FINAL_BOSS_DEFEATED RETURN "ARCADE_CamH_FINAL_BOSS_DEFEATED" ENDSWITCH RETURN "UNKNOWN" ENDFUNC PROC CMHDZ_TRIGGER_MUSIC_EVENT(CMHDZ_MUSIC_EVENTS eEvent) TEXT_LABEL_31 tl31MusicEvent = CMHDZ_GET_MUSIC_EVENT_FROM_ENUM(eEvent) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] [CMHDZ_TRIGGER_MUSIC_EVENT] {DSW} Event: ", tl31MusicEvent) TRIGGER_MUSIC_EVENT(tl31MusicEvent) ENDPROC PROC CMHDZ_TRIGGER_MUSIC_EVENT_HIT_RANDOM() INT iRand = GET_RANDOM_INT_IN_RANGE(0,3) TEXT_LABEL_31 tl31MusicEvent = "ARCADE_CamH_PLAYER_HIT" SWITCH iRand CASE 0 CASE 1 tl31MusicEvent = "ARCADE_CamH_PLAYER_HIT" BREAK CASE 2 tl31MusicEvent = "ARCADE_CamH_PLAYER_HIT_ALT" BREAK ENDSWITCH //TEXT_LABEL_31 tl31MusicEvent = CMHDZ_GET_MUSIC_EVENT_FROM_ENUM(eEvent) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] [CMHDZ_TRIGGER_MUSIC_EVENT] {DSW} Event: ", tl31MusicEvent) TRIGGER_MUSIC_EVENT(tl31MusicEvent) ENDPROC PROC CMHDZ_PREPARE_MUSIC_EVENT(CMHDZ_MUSIC_EVENTS eEvent) TEXT_LABEL_31 tl31MusicEvent = CMHDZ_GET_MUSIC_EVENT_FROM_ENUM(eEvent) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] [CMHDZ_PREPARE_MUSIC_EVENT] {DSW} Event: ", tl31MusicEvent) PREPARE_MUSIC_EVENT(tl31MusicEvent) ENDPROC PROC CMHDZ_CANCEL_MUSIC_EVENT(CMHDZ_MUSIC_EVENTS eEvent) TEXT_LABEL_31 tl31MusicEvent = CMHDZ_GET_MUSIC_EVENT_FROM_ENUM(eEvent) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] [CMHDZ_CANCEL_MUSIC_EVENT] {DSW} Event: ", tl31MusicEvent) IF CANCEL_MUSIC_EVENT(tl31MusicEvent) CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] [CMHDZ_CANCEL_MUSIC_EVENT] {BAZ} Event: ", tl31MusicEvent) ENDIF ENDPROC //PROC CMHDZ_CANCEL_MUSIC_EVENT(CMHDZ_MUSIC_EVENTS eEvent) // TEXT_LABEL_31 tl31MusicEvent = CMHDZ_GET_MUSIC_EVENT_FROM_ENUM(eEvent) // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] [CMHDZ_PREPARE_MUSIC_EVENT] {DSW} Event: ", tl31MusicEvent) // PREPARE_MUSIC_EVENT(tl31MusicEvent) //ENDPROC PROC CMHDZ_GET_AUDIO_STRINGS_FROM_ENUM(CMHDZ_AUDIO_EFFECT eSound, TEXT_LABEL_31 &tl31SoundName, TEXT_LABEL_63 &tl63SoundSetName) SWITCH eSound CASE CMHDZ_AUDIO_EFFECT_GET_READY tl31SoundName = "VO_Get_Ready" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DRAW tl31SoundName = "VO_Draw" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_SELECT_STAGE tl31SoundName = "Select_Stage" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_RELOAD tl31SoundName = "VO_Reload" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_SCREEN_LOCKED tl31SoundName = "Select_Stage_Failed" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_MENU_BACK tl31SoundName = "Menu_Back" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_MENU_CONTINUE tl31SoundName = "Death_Screen_Continue" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_MUSIC_TRANSITION tl31SoundName = "Music_Transition_Glitch" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_LEVEL_BACKGROUND_LOOP tl31SoundName = "Level_Background_Loop" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_MISS tl31SoundName = "Shoot_Miss" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_OPTION tl31SoundName = "Shoot_Option" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_START tl31SoundName = "Press_Start" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_RESULTS_SCORE_UPDATE tl31SoundName = "Calculate_Score_Total" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_GENERIC tl31SoundName = "Hit_Generic" tl63SoundSetName = "DLC_Tuner_AM_CH_Bullet_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_BODY tl31SoundName = "Hit_Body" tl63SoundSetName = "DLC_Tuner_AM_CH_Bullet_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_PLAYER tl31SoundName = "Hit_Player" tl63SoundSetName = "DLC_Tuner_AM_CH_Bullet_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_METAL tl31SoundName = "Hit_Metal" tl63SoundSetName = "DLC_Tuner_AM_CH_Bullet_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_BUSHES tl31SoundName = "Hit_Bushes" tl63SoundSetName = "DLC_Tuner_AM_CH_Bullet_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_ROCK tl31SoundName = "Hit_Rock" tl63SoundSetName = "DLC_Tuner_AM_CH_Bullet_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_HEADSHOT tl31SoundName = "Hit_Headshot" tl63SoundSetName = "DLC_Tuner_AM_CH_Bullet_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_BEARSY tl31SoundName = "Hit_Bearsy" tl63SoundSetName = "DLC_Tuner_AM_CH_Bullet_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BULLET_HIT_BEARSY_DEFLECT tl31SoundName = "Hit_Bearsy_Deflect" tl63SoundSetName = "DLC_Tuner_AM_CH_Bullet_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_SWAP_WEAPON tl31SoundName = "Weapon_Change" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_REVOLVER_FIRE tl31SoundName = "Gun_Revolver_Fire" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_REVOLVER_EMPTY tl31SoundName = "Gun_Revolver_Dry_Fire" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_REVOLVER_RELOAD_FIRST tl31SoundName = "Gun_Revolver_Reload_First" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_REVOLVER_RELOAD_SINGLE tl31SoundName = "Gun_Revolver_Reload" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_REVOLVER_RELOAD_LAST tl31SoundName = "Gun_Revolver_Reload_Last" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_RIFLE_FIRE tl31SoundName = "Gun_Assault_Rifle_Fire" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_RIFLE_EMPTY tl31SoundName = "Gun_Assault_Rifle_Dry_Fire" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK // CASE CMHDZ_AUDIO_EFFECT_RIFLE_RELOAD tl31SoundName = "Rifle_Reload" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_RIFLE_RELOAD_SINGLE tl31SoundName = "Gun_Assault_Rifle_Reload" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_RIFLE_RELOAD_LAST tl31SoundName = "Gun_Assault_Rifle_Reload_Last" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_SHOTGUN_FIRE tl31SoundName = "Gun_Shotgun_Fire" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_SHOTGUN_EMPTY tl31SoundName = "Gun_Shotgun_Dry_Fire" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK // CASE CMHDZ_AUDIO_EFFECT_SHOTGUN_RELOAD tl31SoundName = "Shotgun_Reload" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_SHOTGUN_RELOAD_SINGLE tl31SoundName = "Gun_Shotgun_Reload" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_NAILGUN_FIRE tl31SoundName = "Gun_Nailgun_Fire" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_NAILGUN_RELOAD_SINGLE tl31SoundName = "Gun_Nailgun_Reload" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_BRICK_THROW tl31SoundName = "Thrown_Brick" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_BRICK_HIT tl31SoundName = "Thrown_Brick_Hit" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_NAILBOMB_THROW tl31SoundName = "Thrown_Nailbomb" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_NAILBOMB_HIT tl31SoundName = "Thrown_Nailbomb_Hit" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_MOLOTOV_THROW tl31SoundName = "Thrown_Molotov" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_MOLOTOV_HIT tl31SoundName = "Thrown_Molotov_Hit" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Weapon_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_DEAD tl31SoundName = "Death" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_VERY_LOW tl31SoundName = "Pain_Near_Death" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_LOW tl31SoundName = "Pain_High" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_MEDIUM tl31SoundName = "Pain_Med" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_HIGH tl31SoundName = "Pain_Low" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_A_DEAD tl31SoundName = "Death" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_A_GLOAT tl31SoundName = "Attack_Success" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_A_01_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_A_ATTACK tl31SoundName = "Attack" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_A_01_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_A_PAIN tl31SoundName = "Pain" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_A_INJURED tl31SoundName = "Hurt" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_A_01_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_B_DEAD tl31SoundName = "Death" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_B_GLOAT tl31SoundName = "Attack_Success" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_B_02_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_B_ATTACK tl31SoundName = "Attack" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_B_02_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_B_PAIN tl31SoundName = "Pain" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_B_INJURED tl31SoundName = "Hurt" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_B_02_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_C_DEAD tl31SoundName = "Death" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_C_GLOAT tl31SoundName = "Attack_Success" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_C_03_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_C_ATTACK tl31SoundName = "Attack" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_C_03_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_C_PAIN tl31SoundName = "Pain" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_C_INJURED tl31SoundName = "Hurt" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_C_03_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_D_DEAD tl31SoundName = "Death" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_D_GLOAT tl31SoundName = "Attack_Success" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_D_04_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_D_ATTACK tl31SoundName = "Attack" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_D_04_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_D_PAIN tl31SoundName = "Pain" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_D_INJURED tl31SoundName = "Hurt" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_D_04_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_E_DEAD tl31SoundName = "Death" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_E_GLOAT tl31SoundName = "Attack_Success" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_E_05_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_E_ATTACK tl31SoundName = "Attack" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_E_05_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_E_PAIN tl31SoundName = "Pain" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_E_INJURED tl31SoundName = "Hurt" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_E_05_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_RIFLE_AIM tl31SoundName = "Rifle_Aim" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_RIFLE_FIRE tl31SoundName = "Rifle_Fire" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_SHOTGUN_AIM tl31SoundName = "Gun_Shotgun_Aim" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_SHOTGUN_FIRE tl31SoundName = "Gun_Shotgun_Fire" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_REVOLVER_AIM tl31SoundName = "Pistol_Aim" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_REVOLVER_FIRE tl31SoundName = "Pistol_Fire" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_Melee_Bat_Metal_Swing tl31SoundName = "Melee_Bat_Metal_Swing" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_Melee_Crowbar_Swing tl31SoundName = "Melee_Crowbar_Swing" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_Melee_Bat_Wood_Swing tl31SoundName = "Melee_Bat_Wood_Swing" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_Melee_Machete_Swing tl31SoundName = "Melee_Machete_Swing" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_Melee_Bat_Metal_Hit tl31SoundName = "Melee_Bat_Metal_Hit" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_Melee_Crowbar_Hit tl31SoundName = "Melee_Crowbar_Hit" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_Melee_Bat_Wood_Hit tl31SoundName = "Melee_Bat_Wood_Hit" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_Melee_Machete_Hit tl31SoundName = "Melee_Machete_Hit" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_CRIT_WARNING tl31SoundName = "Critical_Hit_Warn" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_THROW_DYNAMITE tl31SoundName = "Dynamite_Throw" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_DEAD tl31SoundName = "Death" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_PAIN tl31SoundName = "Pain" tl63SoundSetName = "DLC_TUNER_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_ON_FIRE tl31SoundName = "On_Fire" tl63SoundSetName = "DLC_Tuner_AM_CH_Enemy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_EXP_GENERIC tl31SoundName = "Generic" tl63SoundSetName = "DLC_Tuner_AM_CH_Explosion_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_EXP_DYNAMITE tl31SoundName = "Dynamite" tl63SoundSetName = "DLC_Tuner_AM_CH_Explosion_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BUNNYGIRL_APPEAR tl31SoundName = "Bunny_Appear" tl63SoundSetName = "DLC_TUNER_AM_CH_Hostage_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BUNNYGIRL_PAIN tl31SoundName = "Bunny_Pain" tl63SoundSetName = "DLC_TUNER_AM_CH_Hostage_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BUNNYGIRL_DEATH tl31SoundName = "Bunny_Die" tl63SoundSetName = "DLC_TUNER_AM_CH_Hostage_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BUNNYGIRL_MISSED tl31SoundName = "Bunny_Escape" tl63SoundSetName = "DLC_TUNER_AM_CH_Hostage_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_MONKEY_APPEAR tl31SoundName = "Monkey_Appear" tl63SoundSetName = "DLC_TUNER_AM_CH_Hostage_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_MONKEY_PAIN tl31SoundName = "Monkey_Pain" tl63SoundSetName = "DLC_TUNER_AM_CH_Hostage_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_MONKEY_DEATH tl31SoundName = "Monkey_Die" tl63SoundSetName = "DLC_TUNER_AM_CH_Hostage_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_MONKEY_MISSED tl31SoundName = "Monkey_Missed" tl63SoundSetName = "DLC_TUNER_AM_CH_Hostage_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_RAT_APPEAR tl31SoundName = "Rat_Appear" tl63SoundSetName = "DLC_TUNER_AM_CH_Animal_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_RAT_DEATH tl31SoundName = "Rat_Die" tl63SoundSetName = "DLC_TUNER_AM_CH_Animal_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_RAT_IDLE_LOOP tl31SoundName = "Rat_Idle_Loop" tl63SoundSetName = "DLC_TUNER_AM_CH_Animal_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BEARSY_APPEAR tl31SoundName = "Vocal_Appear" tl63SoundSetName = "DLC_TUNER_AM_CH_Bearsy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BEARSY_ATTACK tl31SoundName = "Vocal_Attack" tl63SoundSetName = "DLC_TUNER_AM_CH_Bearsy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BEARSY_PAIN tl31SoundName = "Vocal_Pain" tl63SoundSetName = "DLC_TUNER_AM_CH_Bearsy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BEARSY_HIDE tl31SoundName = "Vocal_Hide" tl63SoundSetName = "DLC_TUNER_AM_CH_Bearsy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BEARSY_REVEAL tl31SoundName = "Vocal_Reveal" tl63SoundSetName = "DLC_TUNER_AM_CH_Bearsy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BEARSY_DIE tl31SoundName = "Vocal_Die" tl63SoundSetName = "DLC_TUNER_AM_CH_Bearsy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BEARSY_CHAINSAW_LOOP tl31SoundName = "Chainsaw_Idle_Loop" tl63SoundSetName = "DLC_TUNER_AM_CH_Bearsy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BEARSY_CHAINSAW_ATTACK tl31SoundName = "Chainsaw_Attack" tl63SoundSetName = "DLC_TUNER_AM_CH_Bearsy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BEARSY_MEAT_THROW tl31SoundName = "Throw_Meat" tl63SoundSetName = "DLC_TUNER_AM_CH_Bearsy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_BEARSY_MEAT_IMPACT tl31SoundName = "Throw_Meat_Impact" tl63SoundSetName = "DLC_TUNER_AM_CH_Bearsy_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PICKUP_BUFF tl31SoundName = "Invulnerable_Loop" tl63SoundSetName = "DLC_Tuner_AM_CH_Pickup_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PICKUP_SHIELD tl31SoundName = "Damage_Boost_Loop" tl63SoundSetName = "DLC_Tuner_AM_CH_Pickup_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PICKUP_HEALTH tl31SoundName = "Health" tl63SoundSetName = "DLC_Tuner_AM_CH_Pickup_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PICKUP_CASH tl31SoundName = "Cash" tl63SoundSetName = "DLC_Tuner_AM_CH_Pickup_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PICKUP_TAPE tl31SoundName = "Tape" tl63SoundSetName = "DLC_Tuner_AM_CH_Pickup_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_RELOAD tl31SoundName = "Reload" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Speech_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_SHOOT_HEADSHOT tl31SoundName = "Headshot" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Speech_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_SHOOT_ANIMAL tl31SoundName = "Shoot_Critter" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Speech_Sounds" BREAK // CASE CMHDZ_AUDIO_EFFECT_PLAYER_AWARD_STV tl31SoundName = "Award_Pistols_at_dawn" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Speech_Sounds" BREAK // CASE CMHDZ_AUDIO_EFFECT_PLAYER_AWARD_TTK tl31SoundName = "Award_Deadeye" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Speech_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_BAD tl31SoundName = "Level_Complete_Bad" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Speech_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_AVERAGE tl31SoundName = "Level_Complete_Average" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Speech_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_GOOD tl31SoundName = "Level_Complete_Good" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Speech_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_SCORE_AMAZING tl31SoundName = "Level_Complete_Amazing" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Speech_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_COMPLETE_LEVEL tl31SoundName = "Beat_Level" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Speech_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_DEATH tl31SoundName = "Death" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Speech_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_RESULTS_DEAD tl31SoundName = "Dead_Text" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_PLAYER_FINISH_GAME tl31SoundName = "Finish_Game" tl63SoundSetName = "DLC_Tuner_AM_CH_Player_Speech_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Asylum tl31SoundName = "Level_Select_Asylum" tl63SoundSetName = "DLC_Tuner_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Junkyard tl31SoundName = "Level_Select_Junkyard" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Slaughterhouse tl31SoundName = "Level_Select_Slaughterhouse" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Slums tl31SoundName = "Level_Select_Slums" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Theme_Park tl31SoundName = "Level_Select_Theme_Park" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Get_Ready tl31SoundName = "Get_Ready" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Start tl31SoundName = "Level_Start" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Complete_Level tl31SoundName = "Complete_Level" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Quit tl31SoundName = "Quit" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Restart_Level tl31SoundName = "Restart_Level" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_First_Enemy_Appear tl31SoundName = "First_Enemy_Appear" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Enemy_Kill tl31SoundName = "Enemy_Kill" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Enemy_Kill_Headshot tl31SoundName = "Enemy_Kill_Headshot" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Enemy_Kill_Nailgun tl31SoundName = "Enemy_Kill_Nailgun" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak tl31SoundName = "Kill_Streak" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak_Long tl31SoundName = "Kill_Streak_Long" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak_Extreme tl31SoundName = "Kill_Streak_Extreme" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Damage tl31SoundName = "Player_Damage" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Near_Death tl31SoundName = "Player_Near_Death" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Death tl31SoundName = "Player_Death" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Inactive tl31SoundName = "Player_Inactive" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Reload tl31SoundName = "Reload" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Weapon_AR tl31SoundName = "Weapon_AR" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Weapon_MV tl31SoundName = "Weapon_MV" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Weapon_NB tl31SoundName = "Weapon_NB" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Weapon_SG tl31SoundName = "Weapon_SG" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Weapon_Rnd tl31SoundName = "Weapon_Rnd" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Cash tl31SoundName = "Collectable_Cash" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Damage tl31SoundName = "Collectable_Damage" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Health tl31SoundName = "Collectable_Health" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Invulnerable tl31SoundName = "Collectable_Invulnerable" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Rnd_Neg tl31SoundName = "Collectable_Rnd_Neg" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Rnd_Pos tl31SoundName = "Collectable_Rnd_Pos" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Run_Out tl31SoundName = "Collectable_Run_Out" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Collectable_Tape tl31SoundName = "Collectable_Tape" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_FOD tl31SoundName = "Award_FOD" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_STV tl31SoundName = "Award_STV" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_MSMD tl31SoundName = "Award_MSMD" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_TTK tl31SoundName = "Award_TTK" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_TD tl31SoundName = "Award_TD" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Score_Ok tl31SoundName = "Score_Ok" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Score_Good tl31SoundName = "Score_Good" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Monkey_Kill tl31SoundName = "Monkey_Kill" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Bunny_Kill tl31SoundName = "Bunny_Kill" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Critter_Kill tl31SoundName = "Critter_Kill" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Props_Destroyed tl31SoundName = "Props_Destroyed" tl63SoundSetName = "DLC_TUNER_AM_CH_Director_VO_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_REWIND_START tl31SoundName = "Rewind_Start" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_REWIND_LOOP tl31SoundName = "Rewind_Loop_Only" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_REWIND_STOP tl31SoundName = "Rewind_End" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_Logo_Appear tl31SoundName = "Logo_Appear" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_Shoot_Option tl31SoundName = "Shoot_Option" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_Score_Letter_Change tl31SoundName = "Score_Letter_Change" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_Score_Letter_Select tl31SoundName = "Score_Letter_Select" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK CASE CMHDZ_AUDIO_EFFECT_Score_Entered tl31SoundName = "Score_Entered" tl63SoundSetName = "DLC_Tuner_AM_CH_Frontend_Sounds" BREAK ENDSWITCH ENDPROC FUNC BOOL CMHDZ_HAS_SOUND_FINISHED(CMHDZ_AUDIO_EFFECT effect) // IF sCMHDZData.iSoundId[effect] = -1 // RETURN TRUE // ENDIF RETURN HAS_SOUND_FINISHED(sCMHDZData.iSoundId[effect]) ENDFUNC FUNC BOOL CMHDZ_HAS_SOUND_BEEN_TRIGGERED(CMHDZ_AUDIO_EFFECT effect) IF sCMHDZData.iSoundId[effect] = -1 RETURN FALSE ELSE RETURN TRUE ENDIF ENDFUNC //PROC CMHDZ_PLAY_SOUND_FRONT_END(CMHDZ_AUDIO_EFFECT effect) // TEXT_LABEL_23 tl23Sound // TEXT_LABEL_63 tl63Bank // CMHDZ_GET_AUDIO_STRINGS_FROM_ENUM(effect,tl23Sound, tl63Bank) // // #IF IS_DEBUG_BUILD // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_FRONT_END] Sound: ", tl23Sound, " Bank: ",tl63Bank) // DEBUG_PRINTCALLSTACK() // #ENDIF // // IF sCMHDZData.iSoundId[effect] = -1 // sCMHDZData.iSoundId[effect] = GET_SOUND_ID() // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_FRONT_END] Got sound ID") // ENDIF // // PLAY_SOUND_FRONTEND(sCMHDZData.iSoundId[effect], tl23Sound, tl63Bank, FALSE) // SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"Screen_Position",0.5) //ENDPROC PROC CMHDZ_PLAY_SOUND(CMHDZ_AUDIO_EFFECT effect, VECTOR_2D v2Pos) TEXT_LABEL_31 tl31Sound TEXT_LABEL_63 tl63Bank CMHDZ_GET_AUDIO_STRINGS_FROM_ENUM(effect,tl31Sound, tl63Bank) #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_AND_RELEASE] Sound: ", tl31Sound, " Bank: ",tl63Bank) DEBUG_PRINTCALLSTACK() #ENDIF IF sCMHDZData.iSoundId[effect] = -1 sCMHDZData.iSoundId[effect] = GET_SOUND_ID() CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_AND_RELEASE] Got sound ID: ", sCMHDZData.iSoundId[effect]) ENDIF PLAY_SOUND_FRONTEND(sCMHDZData.iSoundId[effect], tl31Sound, tl63Bank, FALSE) IF v2Pos.x != 0.0 VECTOR_2D v2Screen = ARCADE_CABINET_CONVERT_TO_VECTOR_2D_TO_SCREENSPACE(v2Pos) SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"Screen_Position",v2Screen.x) ELSE SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"Screen_Position",0.5) ENDIF ENDPROC PROC CMHDZ_PLAY_SOUND_AND_RELEASE(CMHDZ_AUDIO_EFFECT effect, VECTOR_2D v2Pos) TEXT_LABEL_31 tl31Sound TEXT_LABEL_63 tl63Bank CMHDZ_GET_AUDIO_STRINGS_FROM_ENUM(effect,tl31Sound, tl63Bank) #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_AND_RELEASE] Sound: ", tl31Sound, " Bank: ",tl63Bank) DEBUG_PRINTCALLSTACK() #ENDIF IF sCMHDZData.iSoundId[effect] = -1 sCMHDZData.iSoundId[effect] = GET_SOUND_ID() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_AND_RELEASE] Got sound ID") ENDIF PLAY_SOUND_FRONTEND(sCMHDZData.iSoundId[effect], tl31Sound, tl63Bank, FALSE) SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"GlitchLevel",sCMHDZData.fSoundGlitchLevel) IF v2Pos.x != 0.0 VECTOR_2D v2Screen = ARCADE_CABINET_CONVERT_TO_VECTOR_2D_TO_SCREENSPACE(v2Pos) SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"Screen_Position",v2Screen.x) ELSE SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"Screen_Position",0.5) ENDIF RELEASE_SOUND_ID(sCMHDZData.iSoundId[effect]) sCMHDZData.iSoundId[effect] = -1 ENDPROC PROC CMHDZ_PLAY_ENEMY_TYPE_SOUND_AND_RELEASE(CMHDZ_ENEMY_TYPES enemyType, CMHDZ_AUDIO_EFFECT effect, VECTOR_2D v2Pos, INT iEnemyVoiceID) TEXT_LABEL_31 tl31Sound TEXT_LABEL_63 tl63SoundSet INT iEnemySet = 0 // // Don't progress if there's a cooldown // IF sCMHDZData.fEnemyVoiceCooldown > 0.0 // sCMHDZData.fEnemyVoiceCooldown -= (0.0+@1000) // EXIT // ENDIF SWITCH enemyType CASE CMHDZ_ENEMY_1 CASE CMHDZ_FOREGROUND_ENEMY_T1_1 CASE CMHDZ_FOREGROUND_ENEMY_T1_2 CASE CMHDZ_THROWING_ENEMY_1 iEnemySet = 0 BREAK CASE CMHDZ_ENEMY_2 CASE CMHDZ_FOREGROUND_ENEMY_T2_1 CASE CMHDZ_FOREGROUND_ENEMY_T2_2 CASE CMHDZ_THROWING_ENEMY_2 iEnemySet = 1 BREAK CASE CMHDZ_ENEMY_3 CASE CMHDZ_FOREGROUND_ENEMY_T3_1 CASE CMHDZ_FOREGROUND_ENEMY_T3_2 CASE CMHDZ_THROWING_ENEMY_3 iEnemySet = 2 BREAK CASE CMHDZ_ENEMY_4 CASE CMHDZ_FOREGROUND_ENEMY_T4_1 CASE CMHDZ_FOREGROUND_ENEMY_T4_2 CASE CMHDZ_THROWING_ENEMY_4 iEnemySet = 3 BREAK CASE CMHDZ_ENEMY_5 CASE CMHDZ_FOREGROUND_ENEMY_T5_1 CASE CMHDZ_FOREGROUND_ENEMY_T5_2 CASE CMHDZ_THROWING_ENEMY_5 iEnemySet = 4 BREAK ENDSWITCH SWITCH effect CASE CMHDZ_AUDIO_EFFECT_ENEMY_INJURED SWITCH enemyType CASE CMHDZ_ENEMY_1 CASE CMHDZ_FOREGROUND_ENEMY_T1_1 CASE CMHDZ_FOREGROUND_ENEMY_T1_2 CASE CMHDZ_THROWING_ENEMY_1 effect = CMHDZ_AUDIO_EFFECT_ENEMY_A_INJURED BREAK CASE CMHDZ_ENEMY_2 CASE CMHDZ_FOREGROUND_ENEMY_T2_1 CASE CMHDZ_FOREGROUND_ENEMY_T2_2 CASE CMHDZ_THROWING_ENEMY_2 effect = CMHDZ_AUDIO_EFFECT_ENEMY_B_INJURED BREAK CASE CMHDZ_ENEMY_3 CASE CMHDZ_FOREGROUND_ENEMY_T3_1 CASE CMHDZ_FOREGROUND_ENEMY_T3_2 CASE CMHDZ_THROWING_ENEMY_3 effect = CMHDZ_AUDIO_EFFECT_ENEMY_C_INJURED BREAK CASE CMHDZ_ENEMY_4 CASE CMHDZ_FOREGROUND_ENEMY_T4_1 CASE CMHDZ_FOREGROUND_ENEMY_T4_2 CASE CMHDZ_THROWING_ENEMY_4 effect = CMHDZ_AUDIO_EFFECT_ENEMY_D_INJURED BREAK CASE CMHDZ_ENEMY_5 CASE CMHDZ_FOREGROUND_ENEMY_T5_1 CASE CMHDZ_FOREGROUND_ENEMY_T5_2 CASE CMHDZ_THROWING_ENEMY_5 effect = CMHDZ_AUDIO_EFFECT_ENEMY_E_INJURED BREAK ENDSWITCH BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_ATTACK SWITCH enemyType CASE CMHDZ_ENEMY_1 CASE CMHDZ_FOREGROUND_ENEMY_T1_1 CASE CMHDZ_FOREGROUND_ENEMY_T1_2 CASE CMHDZ_THROWING_ENEMY_1 effect = CMHDZ_AUDIO_EFFECT_ENEMY_A_ATTACK BREAK CASE CMHDZ_ENEMY_2 CASE CMHDZ_FOREGROUND_ENEMY_T2_1 CASE CMHDZ_FOREGROUND_ENEMY_T2_2 CASE CMHDZ_THROWING_ENEMY_2 effect = CMHDZ_AUDIO_EFFECT_ENEMY_B_ATTACK BREAK CASE CMHDZ_ENEMY_3 CASE CMHDZ_FOREGROUND_ENEMY_T3_1 CASE CMHDZ_FOREGROUND_ENEMY_T3_2 CASE CMHDZ_THROWING_ENEMY_3 effect = CMHDZ_AUDIO_EFFECT_ENEMY_C_ATTACK BREAK CASE CMHDZ_ENEMY_4 CASE CMHDZ_FOREGROUND_ENEMY_T4_1 CASE CMHDZ_FOREGROUND_ENEMY_T4_2 CASE CMHDZ_THROWING_ENEMY_4 effect = CMHDZ_AUDIO_EFFECT_ENEMY_D_ATTACK BREAK CASE CMHDZ_ENEMY_5 CASE CMHDZ_FOREGROUND_ENEMY_T5_1 CASE CMHDZ_FOREGROUND_ENEMY_T5_2 CASE CMHDZ_THROWING_ENEMY_5 effect = CMHDZ_AUDIO_EFFECT_ENEMY_E_ATTACK BREAK ENDSWITCH BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_DEAD SWITCH enemyType CASE CMHDZ_ENEMY_1 CASE CMHDZ_FOREGROUND_ENEMY_T1_1 CASE CMHDZ_FOREGROUND_ENEMY_T1_2 CASE CMHDZ_THROWING_ENEMY_1 effect = CMHDZ_AUDIO_EFFECT_ENEMY_A_DEAD BREAK CASE CMHDZ_ENEMY_2 CASE CMHDZ_FOREGROUND_ENEMY_T2_1 CASE CMHDZ_FOREGROUND_ENEMY_T2_2 CASE CMHDZ_THROWING_ENEMY_2 effect = CMHDZ_AUDIO_EFFECT_ENEMY_B_DEAD BREAK CASE CMHDZ_ENEMY_3 CASE CMHDZ_FOREGROUND_ENEMY_T3_1 CASE CMHDZ_FOREGROUND_ENEMY_T3_2 CASE CMHDZ_THROWING_ENEMY_3 effect = CMHDZ_AUDIO_EFFECT_ENEMY_C_DEAD BREAK CASE CMHDZ_ENEMY_4 CASE CMHDZ_FOREGROUND_ENEMY_T4_1 CASE CMHDZ_FOREGROUND_ENEMY_T4_2 CASE CMHDZ_THROWING_ENEMY_4 effect = CMHDZ_AUDIO_EFFECT_ENEMY_D_DEAD BREAK CASE CMHDZ_ENEMY_5 CASE CMHDZ_FOREGROUND_ENEMY_T5_1 CASE CMHDZ_FOREGROUND_ENEMY_T5_2 CASE CMHDZ_THROWING_ENEMY_5 effect = CMHDZ_AUDIO_EFFECT_ENEMY_E_DEAD BREAK ENDSWITCH BREAK CASE CMHDZ_AUDIO_EFFECT_ENEMY_GLOAT SWITCH enemyType CASE CMHDZ_ENEMY_1 CASE CMHDZ_FOREGROUND_ENEMY_T1_1 CASE CMHDZ_FOREGROUND_ENEMY_T1_2 CASE CMHDZ_THROWING_ENEMY_1 effect = CMHDZ_AUDIO_EFFECT_ENEMY_A_GLOAT BREAK CASE CMHDZ_ENEMY_2 CASE CMHDZ_FOREGROUND_ENEMY_T2_1 CASE CMHDZ_FOREGROUND_ENEMY_T2_2 CASE CMHDZ_THROWING_ENEMY_2 effect = CMHDZ_AUDIO_EFFECT_ENEMY_B_GLOAT BREAK CASE CMHDZ_ENEMY_3 CASE CMHDZ_FOREGROUND_ENEMY_T3_1 CASE CMHDZ_FOREGROUND_ENEMY_T3_2 CASE CMHDZ_THROWING_ENEMY_3 effect = CMHDZ_AUDIO_EFFECT_ENEMY_C_GLOAT BREAK CASE CMHDZ_ENEMY_4 CASE CMHDZ_FOREGROUND_ENEMY_T4_1 CASE CMHDZ_FOREGROUND_ENEMY_T4_2 CASE CMHDZ_THROWING_ENEMY_4 effect = CMHDZ_AUDIO_EFFECT_ENEMY_D_GLOAT BREAK CASE CMHDZ_ENEMY_5 CASE CMHDZ_FOREGROUND_ENEMY_T5_1 CASE CMHDZ_FOREGROUND_ENEMY_T5_2 CASE CMHDZ_THROWING_ENEMY_5 effect = CMHDZ_AUDIO_EFFECT_ENEMY_E_GLOAT BREAK ENDSWITCH BREAK // CASE CMHDZ_AUDIO_EFFECT_ENEMY_PAIN // // SWITCH enemyType // CASE CMHDZ_ENEMY_1 // CASE CMHDZ_FOREGROUND_ENEMY_T1_1 // CASE CMHDZ_FOREGROUND_ENEMY_T1_2 // CASE CMHDZ_THROWING_ENEMY_1 // effect = CMHDZ_AUDIO_EFFECT_ENEMY_A_PAIN // BREAK // // CASE CMHDZ_ENEMY_2 // CASE CMHDZ_FOREGROUND_ENEMY_T2_1 // CASE CMHDZ_FOREGROUND_ENEMY_T2_2 // CASE CMHDZ_THROWING_ENEMY_2 // effect = CMHDZ_AUDIO_EFFECT_ENEMY_B_PAIN // BREAK // // CASE CMHDZ_ENEMY_3 // CASE CMHDZ_FOREGROUND_ENEMY_T3_1 // CASE CMHDZ_FOREGROUND_ENEMY_T3_2 // CASE CMHDZ_THROWING_ENEMY_3 // effect = CMHDZ_AUDIO_EFFECT_ENEMY_C_PAIN // BREAK // // CASE CMHDZ_ENEMY_4 // CASE CMHDZ_FOREGROUND_ENEMY_T4_1 // CASE CMHDZ_FOREGROUND_ENEMY_T4_2 // CASE CMHDZ_THROWING_ENEMY_4 // effect = CMHDZ_AUDIO_EFFECT_ENEMY_D_PAIN // BREAK // // CASE CMHDZ_ENEMY_5 // CASE CMHDZ_FOREGROUND_ENEMY_T5_1 // CASE CMHDZ_FOREGROUND_ENEMY_T5_2 // CASE CMHDZ_THROWING_ENEMY_5 // effect = CMHDZ_AUDIO_EFFECT_ENEMY_E_PAIN // BREAK // ENDSWITCH BREAK // CASE CMHDZ_AUDIO_EFFECT_ENEMY_ON_FIRE // // SWITCH enemyType // CASE CMHDZ_ENEMY_1 // CASE CMHDZ_FOREGROUND_ENEMY_T1_1 // CASE CMHDZ_FOREGROUND_ENEMY_T1_2 // CASE CMHDZ_THROWING_ENEMY_1 // effect = CMHDZ_AUDIO_EFFECT_ENEMY_A_ON_FIRE // BREAK // // CASE CMHDZ_ENEMY_2 // CASE CMHDZ_FOREGROUND_ENEMY_T2_1 // CASE CMHDZ_FOREGROUND_ENEMY_T2_2 // CASE CMHDZ_THROWING_ENEMY_2 // effect = CMHDZ_AUDIO_EFFECT_ENEMY_B_ON_FIRE // BREAK // // CASE CMHDZ_ENEMY_3 // CASE CMHDZ_FOREGROUND_ENEMY_T3_1 // CASE CMHDZ_FOREGROUND_ENEMY_T3_2 // CASE CMHDZ_THROWING_ENEMY_3 // effect = CMHDZ_AUDIO_EFFECT_ENEMY_C_ON_FIRE // BREAK // // CASE CMHDZ_ENEMY_4 // CASE CMHDZ_FOREGROUND_ENEMY_T4_1 // CASE CMHDZ_FOREGROUND_ENEMY_T4_2 // CASE CMHDZ_THROWING_ENEMY_4 // effect = CMHDZ_AUDIO_EFFECT_ENEMY_D_ON_FIRE // BREAK // // CASE CMHDZ_ENEMY_5 // CASE CMHDZ_FOREGROUND_ENEMY_T5_1 // CASE CMHDZ_FOREGROUND_ENEMY_T5_2 // CASE CMHDZ_THROWING_ENEMY_5 // effect = CMHDZ_AUDIO_EFFECT_ENEMY_E_ON_FIRE // BREAK // ENDSWITCH // // BREAK ENDSWITCH //CMHDZ_PLAY_SOUND_AND_RELEASE(effect, v2Pos) CMHDZ_GET_AUDIO_STRINGS_FROM_ENUM(effect,tl31Sound, tl63SoundSet) IF effect != CMHDZ_AUDIO_EFFECT_ENEMY_ON_FIRE // Exemptions AND effect != CMHDZ_AUDIO_EFFECT_ENEMY_DEAD // Exemptions AND effect != CMHDZ_AUDIO_EFFECT_ENEMY_PAIN // Exemptions SWITCH iEnemySet CASE 0 tl63SoundSet = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_A" BREAK CASE 1 tl63SoundSet = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_B" BREAK CASE 2 tl63SoundSet = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_C" BREAK CASE 3 tl63SoundSet = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_D" BREAK CASE 4 tl63SoundSet = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_E" BREAK ENDSWITCH // Add the random sound ID SWITCH iEnemyVoiceID CASE 0 tl63SoundSet += "_01_Sounds" BREAK CASE 1 tl63SoundSet += "_02_Sounds" BREAK CASE 2 tl63SoundSet += "_03_Sounds" BREAK CASE 3 tl63SoundSet += "_04_Sounds" BREAK CASE 4 tl63SoundSet += "_05_Sounds" BREAK ENDSWITCH ENDIF #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_AND_RELEASE] Sound: ", tl31Sound, " Bank: ",tl63Bank) DEBUG_PRINTCALLSTACK() #ENDIF IF sCMHDZData.iSoundId[effect] = -1 sCMHDZData.iSoundId[effect] = GET_SOUND_ID() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_AND_RELEASE] Got sound ID") ENDIF // sCMHDZData.fEnemyVoiceCooldown = ciCMHDZ_ENEMY_SOUND_COOLDOWN PLAY_SOUND_FRONTEND(sCMHDZData.iSoundId[effect], tl31Sound, tl63SoundSet, FALSE) IF v2Pos.x != 0.0 VECTOR_2D v2Screen = ARCADE_CABINET_CONVERT_TO_VECTOR_2D_TO_SCREENSPACE(v2Pos) SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"Screen_Position",v2Screen.x) ELSE SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"Screen_Position",0.5) ENDIF CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ][BAZ] CMHDZ_PLAY_ENEMY_TYPE_SOUND_AND_RELEASE enemy generated soundset tl63SoundSet: ", tl63SoundSet) RELEASE_SOUND_ID(sCMHDZData.iSoundId[effect]) sCMHDZData.iSoundId[effect] = -1 ENDPROC PROC CMHDZ_PLAY_ENEMY_WEAPON_MELEE_SWING_SOUND_AND_RELEASE(CMHDZ_ENEMY_TYPES enemyType, VECTOR_2D v2Pos) CMHDZ_AUDIO_EFFECT effect = CMHDZ_AUDIO_EFFECT_MAX TEXT_LABEL_31 tl31Sound TEXT_LABEL_63 tl63SoundSet SWITCH enemyType CASE CMHDZ_FOREGROUND_ENEMY_T1_1 effect = CMHDZ_AUDIO_EFFECT_Melee_Bat_Metal_Swing BREAK CASE CMHDZ_FOREGROUND_ENEMY_T2_1 effect = CMHDZ_AUDIO_EFFECT_Melee_Machete_Swing BREAK CASE CMHDZ_FOREGROUND_ENEMY_T4_1 effect = CMHDZ_AUDIO_EFFECT_Melee_Crowbar_Swing BREAK CASE CMHDZ_FOREGROUND_ENEMY_T5_2 effect = CMHDZ_AUDIO_EFFECT_Melee_Bat_Wood_Swing BREAK ENDSWITCH // Audio effect Exit IF effect = CMHDZ_AUDIO_EFFECT_MAX EXIT ENDIF #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_AND_RELEASE] Sound: ", tl31Sound, " Bank: ",tl63Bank) DEBUG_PRINTCALLSTACK() #ENDIF IF sCMHDZData.iSoundId[effect] = -1 sCMHDZData.iSoundId[effect] = GET_SOUND_ID() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_AND_RELEASE] Got sound ID") ENDIF CDEBUG2LN(DEBUG_MINIGAME, "[BAZ] CMHDZ_PLAY_ENEMY_WEAPON_ATTACK_SOUND_AND_RELEASE - tl63SoundSet: ", tl63SoundSet) PLAY_SOUND_FRONTEND(sCMHDZData.iSoundId[effect], tl31Sound, tl63SoundSet, FALSE) SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"GlitchLevel",sCMHDZData.fSoundGlitchLevel) IF v2Pos.x != 0.0 VECTOR_2D v2Screen = ARCADE_CABINET_CONVERT_TO_VECTOR_2D_TO_SCREENSPACE(v2Pos) SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"Screen_Position",v2Screen.x) ELSE SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"Screen_Position",0.5) ENDIF RELEASE_SOUND_ID(sCMHDZData.iSoundId[effect]) sCMHDZData.iSoundId[effect] = -1 ENDPROC PROC CMHDZ_PLAY_ENEMY_WEAPON_ATTACK_SOUND_AND_RELEASE(CMHDZ_ENEMY_TYPES enemyType, VECTOR_2D v2Pos) CMHDZ_AUDIO_EFFECT effect = CMHDZ_AUDIO_EFFECT_MAX TEXT_LABEL_31 tl31Sound TEXT_LABEL_63 tl63SoundSet SWITCH enemyType CASE CMHDZ_THROWING_ENEMY_1 CASE CMHDZ_THROWING_ENEMY_2 CASE CMHDZ_THROWING_ENEMY_3 CASE CMHDZ_THROWING_ENEMY_4 CASE CMHDZ_THROWING_ENEMY_5 effect = CMHDZ_AUDIO_EFFECT_ENEMY_THROW_DYNAMITE BREAK CASE CMHDZ_ENEMY_1 CASE CMHDZ_ENEMY_2 CASE CMHDZ_ENEMY_4 CASE CMHDZ_ENEMY_5 effect = CMHDZ_AUDIO_EFFECT_ENEMY_SHOTGUN_FIRE BREAK CASE CMHDZ_ENEMY_3 CASE CMHDZ_FOREGROUND_ENEMY_T3_2 effect = CMHDZ_AUDIO_EFFECT_ENEMY_RIFLE_FIRE BREAK CASE CMHDZ_FOREGROUND_ENEMY_T1_2 CASE CMHDZ_FOREGROUND_ENEMY_T2_2 CASE CMHDZ_FOREGROUND_ENEMY_T3_1 CASE CMHDZ_FOREGROUND_ENEMY_T4_2 CASE CMHDZ_FOREGROUND_ENEMY_T5_1 effect = CMHDZ_AUDIO_EFFECT_ENEMY_REVOLVER_FIRE BREAK CASE CMHDZ_FOREGROUND_ENEMY_T1_1 effect = CMHDZ_AUDIO_EFFECT_Melee_Bat_Metal_Hit BREAK CASE CMHDZ_FOREGROUND_ENEMY_T2_1 effect = CMHDZ_AUDIO_EFFECT_Melee_Machete_Hit BREAK CASE CMHDZ_FOREGROUND_ENEMY_T4_1 effect = CMHDZ_AUDIO_EFFECT_Melee_Crowbar_Hit BREAK CASE CMHDZ_FOREGROUND_ENEMY_T5_2 effect = CMHDZ_AUDIO_EFFECT_Melee_Bat_Wood_Hit BREAK ENDSWITCH IF effect = CMHDZ_AUDIO_EFFECT_MAX EXIT ENDIF CMHDZ_GET_AUDIO_STRINGS_FROM_ENUM(effect,tl31Sound, tl63SoundSet) // SWITCH iEnemySet // CASE 0 // tl63SoundSet = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_A" // BREAK // // CASE 1 // tl63SoundSet = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_B" // BREAK // // CASE 2 // tl63SoundSet = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_C" // BREAK // // CASE 3 // tl63SoundSet = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_D" // BREAK // // CASE 4 // tl63SoundSet = "DLC_TUNER_AM_CH_Enemy_Speech_Gang_E" // BREAK // ENDSWITCH // // // Add the random sound ID // SWITCH iEnemyVoiceID // CASE 0 // tl63SoundSet += "_01_Sounds" // BREAK // // CASE 1 // tl63SoundSet += "_02_Sounds" // BREAK // // CASE 2 // tl63SoundSet += "_03_Sounds" // BREAK // // CASE 3 // tl63SoundSet += "_04_Sounds" // BREAK // // CASE 4 // tl63SoundSet += "_05_Sounds" // BREAK // ENDSWITCH #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_AND_RELEASE] Sound: ", tl31Sound, " Bank: ",tl63Bank) DEBUG_PRINTCALLSTACK() #ENDIF IF sCMHDZData.iSoundId[effect] = -1 sCMHDZData.iSoundId[effect] = GET_SOUND_ID() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_AND_RELEASE] Got sound ID") ENDIF CDEBUG2LN(DEBUG_MINIGAME, "[BAZ] CMHDZ_PLAY_ENEMY_WEAPON_ATTACK_SOUND_AND_RELEASE - tl63SoundSet: ", tl63SoundSet) PLAY_SOUND_FRONTEND(sCMHDZData.iSoundId[effect], tl31Sound, tl63SoundSet, FALSE) SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"GlitchLevel",sCMHDZData.fSoundGlitchLevel) IF v2Pos.x != 0.0 VECTOR_2D v2Screen = ARCADE_CABINET_CONVERT_TO_VECTOR_2D_TO_SCREENSPACE(v2Pos) SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"Screen_Position",v2Screen.x) ELSE SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"Screen_Position",0.5) ENDIF RELEASE_SOUND_ID(sCMHDZData.iSoundId[effect]) sCMHDZData.iSoundId[effect] = -1 ENDPROC PROC CMHDZ_PLAY_ENEMY_WEAPON_READY_SOUND_AND_RELEASE(CMHDZ_ENEMY_TYPES enemyType, VECTOR_2D v2Pos) TEXT_LABEL_31 tl31Sound TEXT_LABEL_63 tl63Bank CMHDZ_AUDIO_EFFECT effect = CMHDZ_AUDIO_EFFECT_MAX SWITCH enemyType CASE CMHDZ_THROWING_ENEMY_1 CASE CMHDZ_THROWING_ENEMY_2 CASE CMHDZ_THROWING_ENEMY_3 CASE CMHDZ_THROWING_ENEMY_4 CASE CMHDZ_THROWING_ENEMY_5 effect = CMHDZ_AUDIO_EFFECT_ENEMY_CRIT_WARNING BREAK CASE CMHDZ_ENEMY_1 CASE CMHDZ_ENEMY_2 CASE CMHDZ_ENEMY_4 CASE CMHDZ_ENEMY_5 effect = CMHDZ_AUDIO_EFFECT_ENEMY_SHOTGUN_AIM BREAK CASE CMHDZ_ENEMY_3 CASE CMHDZ_FOREGROUND_ENEMY_T3_2 effect = CMHDZ_AUDIO_EFFECT_ENEMY_RIFLE_AIM BREAK CASE CMHDZ_FOREGROUND_ENEMY_T1_2 CASE CMHDZ_FOREGROUND_ENEMY_T2_2 CASE CMHDZ_FOREGROUND_ENEMY_T3_1 CASE CMHDZ_FOREGROUND_ENEMY_T4_2 CASE CMHDZ_FOREGROUND_ENEMY_T5_1 effect = CMHDZ_AUDIO_EFFECT_ENEMY_REVOLVER_AIM BREAK ENDSWITCH IF effect = CMHDZ_AUDIO_EFFECT_MAX EXIT ENDIF CMHDZ_GET_AUDIO_STRINGS_FROM_ENUM(effect,tl31Sound, tl63Bank) #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_AND_RELEASE] Sound: ", tl31Sound, " Bank: ",tl63Bank) DEBUG_PRINTCALLSTACK() #ENDIF IF sCMHDZData.iSoundId[effect] = -1 sCMHDZData.iSoundId[effect] = GET_SOUND_ID() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_PLAY_SOUND_AND_RELEASE] Got sound ID") ENDIF PLAY_SOUND_FRONTEND(sCMHDZData.iSoundId[effect], tl31Sound, tl63Bank, FALSE) IF v2Pos.x != 0.0 VECTOR_2D v2Screen = ARCADE_CABINET_CONVERT_TO_VECTOR_2D_TO_SCREENSPACE(v2Pos) SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"Screen_Position",v2Screen.x) ELSE SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[effect],"Screen_Position",0.5) ENDIF RELEASE_SOUND_ID(sCMHDZData.iSoundId[effect]) sCMHDZData.iSoundId[effect] = -1 ENDPROC PROC CMHDZ_PLAY_SOUND_NO_POSITION(CMHDZ_AUDIO_EFFECT effect) CMHDZ_PLAY_SOUND(effect, INIT_VECTOR_2D(0.0, 0.0)) ENDPROC PROC CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT effect) CMHDZ_PLAY_SOUND_AND_RELEASE(effect, INIT_VECTOR_2D(0.0, 0.0)) ENDPROC PROC CMHDZ_STOP_SOUND(CMHDZ_AUDIO_EFFECT effect) STOP_SOUND(sCMHDZData.iSoundId[effect]) RELEASE_SOUND_ID(sCMHDZData.iSoundId[effect]) sCMHDZData.iSoundId[effect] = -1 ENDPROC PROC CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT effect) IF effect < CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Asylum OR effect >= CMHDZ_AUDIO_EFFECT_MAX // All director dialogue at the end of the list. ASSERTLN("[CMHDZ][BAZ] CMHDZ_PLAY_DIRECTOR_DIALOGUE - Dialogue out of intended range") EXIT ENDIF // IF (sCMHDZData.fDirectorVoiceCooldown > 0.0) // sCMHDZData.fDirectorVoiceCooldown -= (0.0+@1000) // EXIT // ENDIF INT i = ENUM_TO_INT(CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Asylum) REPEAT CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_TD i IF NOT CMHDZ_HAS_SOUND_FINISHED(INT_TO_ENUM(CMHDZ_AUDIO_EFFECT, i)) CMHDZ_STOP_SOUND(INT_TO_ENUM(CMHDZ_AUDIO_EFFECT, i)) //EXIT ENDIF ENDREPEAT //sCMHDZData.fDirectorVoiceCooldown = ciCMHDZ_DIRECTOR_SOUND_COOLDOWN CMHDZ_PLAY_SOUND_AND_RELEASE(effect, INIT_VECTOR_2D(0.0, 0.0)) ENDPROC PROC CMHDZ_PLAY_DIRECTOR_DIALOGUE_NO_RELEASE(CMHDZ_AUDIO_EFFECT effect) IF effect < CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Asylum OR effect >= CMHDZ_AUDIO_EFFECT_MAX // All director dialogue at the end of the list. ASSERTLN("[CMHDZ][BAZ] CMHDZ_PLAY_DIRECTOR_DIALOGUE - Dialogue out of intended range") EXIT ENDIF // IF (sCMHDZData.fDirectorVoiceCooldown > 0.0) // sCMHDZData.fDirectorVoiceCooldown -= (0.0+@1000) // EXIT // ENDIF INT i = ENUM_TO_INT(CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Asylum) REPEAT CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_TD i IF NOT CMHDZ_HAS_SOUND_FINISHED(INT_TO_ENUM(CMHDZ_AUDIO_EFFECT, i)) CMHDZ_STOP_SOUND(INT_TO_ENUM(CMHDZ_AUDIO_EFFECT, i)) //EXIT ENDIF ENDREPEAT //sCMHDZData.fDirectorVoiceCooldown = ciCMHDZ_DIRECTOR_SOUND_COOLDOWN CMHDZ_PLAY_SOUND(effect, INIT_VECTOR_2D(0.0, 0.0)) ENDPROC PROC CMHDZ_HANDLE_DIRECTOR_ONE_OFF_DIALOGUE(CMHDZ_AUDIO_EFFECT effect) INT i = ENUM_TO_INT(CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Select_Asylum) REPEAT CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_TD i IF NOT CMHDZ_HAS_SOUND_FINISHED(INT_TO_ENUM(CMHDZ_AUDIO_EFFECT, i)) CMHDZ_STOP_SOUND(INT_TO_ENUM(CMHDZ_AUDIO_EFFECT, i)) //EXIT ENDIF ENDREPEAT IF effect = CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Start IF IS_BITMASK_AS_ENUM_SET(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Level_Start_TRIGGER) IF NOT IS_BITMASK_AS_ENUM_SET(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Level_Start_PLAYED) CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Start) SET_BITMASK_AS_ENUM(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Level_Start_PLAYED) ENDIF ENDIF EXIT ENDIF SWITCH effect CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_First_Enemy_Appear IF NOT IS_BITMASK_AS_ENUM_SET(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_First_Enemy_Appear_PLAYED) CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_First_Enemy_Appear) SET_BITMASK_AS_ENUM(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_First_Enemy_Appear_PLAYED) ENDIF BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Enemy_Kill IF NOT IS_BITMASK_AS_ENUM_SET(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Enemy_Kill_PLAYED) CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Enemy_Kill) SET_BITMASK_AS_ENUM(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_First_Enemy_Appear_PLAYED) ENDIF BREAK // CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Enemy_Kill_Headshot // IF NOT IS_BITMASK_AS_ENUM_SET(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Enemy_Kill_Headshot_PLAYED) // SET_BITMASK_AS_ENUM(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Enemy_Kill_Headshot_PLAYED) // ENDIF // BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Enemy_Kill_Nailgun IF NOT IS_BITMASK_AS_ENUM_SET(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Enemy_Kill_Nailgun_PLAYED) CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Enemy_Kill_Nailgun) SET_BITMASK_AS_ENUM(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Enemy_Kill_Nailgun_PLAYED) ENDIF BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak IF NOT IS_BITMASK_AS_ENUM_SET(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Kill_Streak_PLAYED) CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak) SET_BITMASK_AS_ENUM(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Kill_Streak_PLAYED) ENDIF BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak_Extreme IF NOT IS_BITMASK_AS_ENUM_SET(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Kill_Streak_Extreme_PLAYED) CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak_Extreme) SET_BITMASK_AS_ENUM(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Kill_Streak_Extreme_PLAYED) ENDIF BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak_Long IF NOT IS_BITMASK_AS_ENUM_SET(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Kill_Streak_Long_PLAYED) CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak_Long) SET_BITMASK_AS_ENUM(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Kill_Streak_Long_PLAYED) ENDIF BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Damage IF NOT IS_BITMASK_AS_ENUM_SET(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Player_Damage_Played) CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Damage) SET_BITMASK_AS_ENUM(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Player_Damage_PLAYED) ENDIF BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Near_Death IF NOT IS_BITMASK_AS_ENUM_SET(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Player_Near_Death_Played) CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Near_Death) SET_BITMASK_AS_ENUM(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Player_Near_Death_PLAYED) ENDIF BREAK CASE CMHDZ_AUDIO_EFFECT_DIRECTOR_Props_Destroyed IF NOT IS_BITMASK_AS_ENUM_SET(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Props_Destroyed_Played) CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Props_Destroyed) SET_BITMASK_AS_ENUM(sCMHDZData.iDirectorAudioBits, CMHDZ_DIRECTOR_BITS_Props_Destroyed_Played) ENDIF BREAK ENDSWITCH ENDPROC PROC CMHDZ_PLAY_BONUS_APPEAR_AUDIO(INT iEnemy) SWITCH sCMHDZData.sEnemyData[iEnemy].iEnemyType CASE CMHDZ_RARE_ENEMY_BUNNY CMHDZ_PLAY_SOUND_AND_RELEASE(CMHDZ_AUDIO_EFFECT_BUNNYGIRL_APPEAR, sCMHDZData.sEnemyData[iEnemy].vSpritePos) BREAK CASE CMHDZ_RARE_ENEMY_MONKEY CMHDZ_PLAY_SOUND_AND_RELEASE(CMHDZ_AUDIO_EFFECT_MONKEY_APPEAR, sCMHDZData.sEnemyData[iEnemy].vSpritePos) BREAK CASE CMHDZ_RARE_ENEMY_RAT CMHDZ_PLAY_SOUND_AND_RELEASE(CMHDZ_AUDIO_EFFECT_RAT_APPEAR, sCMHDZData.sEnemyData[iEnemy].vSpritePos) BREAK ENDSWITCH ENDPROC PROC CMHDZ_PLAY_BONUS_PAIN_AUDIO(INT iEnemy) SWITCH sCMHDZData.sEnemyData[iEnemy].iEnemyType CASE CMHDZ_RARE_ENEMY_BUNNY CMHDZ_PLAY_SOUND_AND_RELEASE(CMHDZ_AUDIO_EFFECT_BUNNYGIRL_PAIN, sCMHDZData.sEnemyData[iEnemy].vSpritePos) BREAK CASE CMHDZ_RARE_ENEMY_MONKEY CMHDZ_PLAY_SOUND_AND_RELEASE(CMHDZ_AUDIO_EFFECT_MONKEY_PAIN, sCMHDZData.sEnemyData[iEnemy].vSpritePos) BREAK ENDSWITCH ENDPROC PROC CMHDZ_PLAY_BONUS_DEATH_AUDIO(INT iEnemy) SWITCH sCMHDZData.sEnemyData[iEnemy].iEnemyType CASE CMHDZ_RARE_ENEMY_BUNNY CMHDZ_PLAY_SOUND_AND_RELEASE(CMHDZ_AUDIO_EFFECT_BUNNYGIRL_DEATH, sCMHDZData.sEnemyData[iEnemy].vSpritePos) CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Bunny_Kill) CMHDZ_SET_LEVEL_BIT_FOR_LEVEL(sCMHDZData.eCurrentLevel, CMHDZ_LEVELS_BIT_CHALLENGE_MONKEY_C_MONKEY_DIE_BUNNY_KILL) BREAK CASE CMHDZ_RARE_ENEMY_MONKEY CMHDZ_PLAY_SOUND_AND_RELEASE(CMHDZ_AUDIO_EFFECT_MONKEY_DEATH, sCMHDZData.sEnemyData[iEnemy].vSpritePos) CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Monkey_Kill) CMHDZ_SET_LEVEL_BIT_FOR_LEVEL(sCMHDZData.eCurrentLevel, CMHDZ_LEVELS_BIT_CHALLENGE_MONKEY_C_MONKEY_DIE_MONKEY_KILL) BREAK CASE CMHDZ_RARE_ENEMY_RAT CMHDZ_PLAY_SOUND_AND_RELEASE(CMHDZ_AUDIO_EFFECT_RAT_DEATH, sCMHDZData.sEnemyData[iEnemy].vSpritePos) CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Critter_Kill) BREAK ENDSWITCH ENDPROC PROC CMHDZ_PLAY_BONUS_MISSED_AUDIO(INT iEnemy) SWITCH sCMHDZData.sEnemyData[iEnemy].iEnemyType CASE CMHDZ_RARE_ENEMY_BUNNY CMHDZ_PLAY_SOUND_AND_RELEASE(CMHDZ_AUDIO_EFFECT_BUNNYGIRL_MISSED, sCMHDZData.sEnemyData[iEnemy].vSpritePos) BREAK CASE CMHDZ_RARE_ENEMY_MONKEY CMHDZ_PLAY_SOUND_AND_RELEASE(CMHDZ_AUDIO_EFFECT_MONKEY_MISSED, sCMHDZData.sEnemyData[iEnemy].vSpritePos) BREAK ENDSWITCH ENDPROC PROC CMHDZ_PLAY_SOUND_LOOPING(CMHDZ_AUDIO_EFFECT effect, VECTOR_2D pos) IF CMHDZ_HAS_SOUND_FINISHED(effect) CMHDZ_PLAY_SOUND(effect, pos) ENDIF ENDPROC PROC CMHDZ_PLAY_SOUND_LOOPING_NO_POSITION(CMHDZ_AUDIO_EFFECT effect) IF CMHDZ_HAS_SOUND_FINISHED(effect) CMHDZ_PLAY_SOUND(effect, INIT_VECTOR_2D(0.0, 0.0)) ENDIF ENDPROC PROC CMHDZ_HANDLE_LOOPING_AUDIO() //-- Replaced with level select dialogue //CMHDZ_HANDLE_DIRECTOR_ONE_OFF_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Level_Start) IF sCMHDZData.iFade = 0 IF (sCMHDZData.fSoundGlitchLevel > 0.0) CMHDZ_PLAY_SOUND_LOOPING_NO_POSITION(CMHDZ_AUDIO_EFFECT_LEVEL_BACKGROUND_LOOP) SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[CMHDZ_AUDIO_EFFECT_LEVEL_BACKGROUND_LOOP],"GlitchLevel",sCMHDZData.fSoundGlitchLevel) ELSE SET_VARIABLE_ON_SOUND(sCMHDZData.iSoundId[CMHDZ_AUDIO_EFFECT_LEVEL_BACKGROUND_LOOP],"GlitchLevel",0.0) ENDIF ENDIF // IF sCMHDZData.iSoundId[CMHDZ_AUDIO_EFFECT_DRAW] = -1 // IF CMHDZ_HAS_SOUND_FINISHED(CMHDZ_AUDIO_EFFECT_GET_READY) // IF sCMHDZData.iDrawAudioTimer = 0 // sCMHDZData.iDrawAudioTimer = GET_GAME_TIMER() // ELIF GET_GAME_TIMER() - sCMHDZData.iDrawAudioTimer > 250 // CMHDZ_PLAY_SOUND_NO_POSITION(CMHDZ_AUDIO_EFFECT_DRAW) // ENDIF // ENDIF // ENDIF ENDPROC FUNC BOOL CMHDZ_HAVE_ALL_PLAYER_DAMAGE_AUDIO_EFFECTS_FINISHED() RETURN (CMHDZ_HAS_SOUND_FINISHED(CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_VERY_LOW) AND CMHDZ_HAS_SOUND_FINISHED(CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_LOW) AND CMHDZ_HAS_SOUND_FINISHED(CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_MEDIUM) AND CMHDZ_HAS_SOUND_FINISHED(CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_HIGH)) ENDFUNC PROC CMHDZ_PLAY_PLAYER_TAKE_DAMAGE_AUDIO(FLOAT fNewHealth) IF fNewHealth <= 0.0 EXIT ENDIF IF CMHDZ_HAVE_ALL_PLAYER_DAMAGE_AUDIO_EFFECTS_FINISHED() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_PLAY_PLAYER_TAKE_DAMAGE_AUDIO] {DSW} fNewHealth: ", fNewHealth) IF fNewHealth >= 0.7 CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_HIGH) ELIF fNewHealth >= 0.5 CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_MEDIUM) ELIF fNewHealth >= 0.2 CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_LOW) ELIF fNewHealth > 0.0 CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_PLAYER_HEALTH_VERY_LOW) ENDIF ELSE //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_PLAY_PLAYER_TAKE_DAMAGE_AUDIO] {DSW} Not playing as previous not finished. fNewHealth: ", fNewHealth) ENDIF // Director audio IF fNewHealth < 0.7 CMHDZ_HANDLE_DIRECTOR_ONE_OFF_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Damage) ENDIF IF fNewHealth < 0.3 CMHDZ_HANDLE_DIRECTOR_ONE_OFF_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Player_Near_Death) ENDIF ENDPROC PROC CMHDZ_SET_CURRENT_TIMESTEP() sCMHDZData.fCurrentTimeStep = (TO_FLOAT(ciBASE_FPS) / (1.0 / GET_FRAME_TIME())) // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_SET_CURRENT_TIMESTEP] fCurrentTimeStep: ", sCMHDZData.fCurrentTimeStep) ENDPROC FUNC FLOAT CMHDZ_GET_DEFAULT_TIMESTEP() #IF IS_DEBUG_BUILD IF (sCMHDZData.bDebugPause) RETURN 0.0 ENDIF #ENDIF RETURN sCMHDZData.fCurrentTimeStep ENDFUNC FUNC FLOAT CMHDZ_GET_RETICULE_UPDATE() RETURN sCMHDZData.fCurrentTimeStep ENDFUNC FUNC FLOAT CMHDZ_GET_DEFAULT_UPDATE() RETURN cfCMHDZ_DEFAULT_PIXEL_UPDATE * CMHDZ_GET_DEFAULT_TIMESTEP() ENDFUNC FUNC FLOAT CMHDZ_GET_ENEMY_SHOOTING_UPDATE() RETURN CMHDZ_GET_DEFAULT_UPDATE() ENDFUNC FUNC FLOAT CMHDZ_GET_ENEMY_DYING_UPDATE() RETURN CMHDZ_GET_DEFAULT_UPDATE() ENDFUNC FUNC FLOAT CMHDZ_GET_ENEMY_WAITING_UPDATE() RETURN CMHDZ_GET_DEFAULT_UPDATE() ENDFUNC FUNC FLOAT CMHDZ_GET_FX_UPDATE() RETURN CMHDZ_GET_DEFAULT_UPDATE() ENDFUNC FUNC FLOAT CMHDZ_GET_PROJECTILE_UPDATE() RETURN CMHDZ_GET_DEFAULT_UPDATE() ENDFUNC FUNC FLOAT CMHDZ_GET_BACKGROUND_TILE_UPDATE() RETURN CMHDZ_GET_DEFAULT_UPDATE() * sCMHDZData.fBackgroundSpeedMult ENDFUNC FUNC FLOAT CMHDZ_GET_ITEM_UPDATE() RETURN CMHDZ_GET_DEFAULT_UPDATE() ENDFUNC FUNC FLOAT CMHDZ_GET_CUSTOM_FAST_NEAR_BACKGROUND_ELEMENT_UPDATE() RETURN CMHDZ_GET_DEFAULT_UPDATE() * sCMHDZData.fBackgroundSpeedMult ENDFUNC FUNC FLOAT CMHDZ_GET_GENERAL_UPDATE() // FLOAT fDist = 4.0 * (30.0 / (1.0 / GET_FRAME_TIME())) // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_GET_GENERAL_UPDATE] Update: ", fDist) RETURN CMHDZ_GET_DEFAULT_UPDATE() ENDFUNC FUNC FLOAT CMHDZ_GET_CLOUD_UPDATE() RETURN 1.0 * CMHDZ_GET_DEFAULT_TIMESTEP() * sCMHDZData.fBackgroundSpeedMult ENDFUNC FUNC FLOAT CMHDZ_GET_BACKGROUND_ELEMENT_UPDATE() RETURN 2.0 * CMHDZ_GET_DEFAULT_TIMESTEP() * sCMHDZData.fBackgroundSpeedMult ENDFUNC FUNC FLOAT CMHDZ_GET_CUSTOM_SLOW_NEAR_BACKGROUND_ELEMENT_UPDATE() RETURN 2.5 * CMHDZ_GET_DEFAULT_TIMESTEP() * sCMHDZData.fBackgroundSpeedMult ENDFUNC FUNC FLOAT CMHDZ_GET_DEFAULT_NEAR_BACKGROUND_ELEMENT_UPDATE() RETURN 3.0 * CMHDZ_GET_DEFAULT_TIMESTEP() * sCMHDZData.fBackgroundSpeedMult ENDFUNC FUNC FLOAT CMHDZ_GET_COVER_FOREGROUND_UPDATE() RETURN 12.0 * CMHDZ_GET_DEFAULT_TIMESTEP() ENDFUNC FUNC FLOAT CMHDZ_GET_ENEMY_FOREGROUND_UPDATE(BOOL bReverse) IF bReverse RETURN 6.0 * CMHDZ_GET_DEFAULT_TIMESTEP() ENDIF RETURN 10.0 * CMHDZ_GET_DEFAULT_TIMESTEP() ENDFUNC FUNC FLOAT CMHDZ_GET_ENEMY_MIDDLE_UPDATE(BOOL bReverse) IF bReverse RETURN 11.0 * CMHDZ_GET_DEFAULT_TIMESTEP() ENDIF RETURN 15.0 * CMHDZ_GET_DEFAULT_TIMESTEP() ENDFUNC FUNC FLOAT CMHDZ_GET_ENEMY_BACKGROUND_UPDATE(BOOL bReverse) IF bReverse RETURN 16.0 * CMHDZ_GET_DEFAULT_TIMESTEP() ENDIF RETURN 20.0 * CMHDZ_GET_DEFAULT_TIMESTEP() ENDFUNC FUNC FLOAT CMHDZ_GET_BOSS_BACKGROUND_UPDATE(INT iFrameTime) //RETURN ((150/iFrameTime) * CMHDZ_GET_ENEMY_BACKGROUND_UPDATE(FALSE)) RETURN ((150/iFrameTime) * (sCMHDZData.fCurrentTimeStep*12.0)) ENDFUNC FUNC FLOAT CMHDZ_GET_BOSS_MIDDLE_UPDATE(INT iFrameTime) RETURN ((150/iFrameTime) * (sCMHDZData.fCurrentTimeStep*16.0)) ENDFUNC FUNC BOOL CMHDZ_IS_ENEMY_TYPE_THROWING_ENEMY(CMHDZ_ENEMY_TYPES eType) SWITCH (eType) CASE CMHDZ_THROWING_ENEMY_1 CASE CMHDZ_THROWING_ENEMY_2 CASE CMHDZ_THROWING_ENEMY_3 CASE CMHDZ_THROWING_ENEMY_4 CASE CMHDZ_THROWING_ENEMY_5 RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL CMHDZ_IS_ENEMY_TYPE_FOREGROUND_ENEMY(CMHDZ_ENEMY_TYPES eType) SWITCH (eType) CASE CMHDZ_FOREGROUND_ENEMY_T1_1 CASE CMHDZ_FOREGROUND_ENEMY_T1_2 CASE CMHDZ_FOREGROUND_ENEMY_T2_1 CASE CMHDZ_FOREGROUND_ENEMY_T2_2 CASE CMHDZ_FOREGROUND_ENEMY_T3_1 CASE CMHDZ_FOREGROUND_ENEMY_T3_2 CASE CMHDZ_FOREGROUND_ENEMY_T4_1 CASE CMHDZ_FOREGROUND_ENEMY_T4_2 CASE CMHDZ_FOREGROUND_ENEMY_T5_1 CASE CMHDZ_FOREGROUND_ENEMY_T5_2 // CASE CMHDZ_FOREGROUND_ENEMY_BEAR RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC PROC CMHDZ_BACKGROUND_TILES_DATA_SET_RENDERING(INT iData, BOOL bRender) IF (bRender) SET_BIT(sCMHDZData.iBackgroundTilesDataRenderingBits, iData) ELSE CLEAR_BIT(sCMHDZData.iBackgroundTilesDataRenderingBits, iData) ENDIF ENDPROC FUNC BOOL CMHDZ_BACKGROUND_TILES_DATA_IS_RENDERING(INT iData) RETURN IS_BIT_SET(sCMHDZData.iBackgroundTilesDataRenderingBits, iData) ENDFUNC PROC CMHDZ_BACKGROUND_DATA_SET_RENDERING(INT iData, BOOL bRender) INT ind = iData / 32 INT iBit = iData % 32 IF (bRender) SET_BIT(sCMHDZData.iBackgroundDataRenderingBits[ind], iBit) ELSE CLEAR_BIT(sCMHDZData.iBackgroundDataRenderingBits[ind], iBit) ENDIF ENDPROC FUNC BOOL CMHDZ_BACKGROUND_DATA_IS_RENDERING(INT iData) INT ind = iData / 32 INT iBit = iData % 32 RETURN IS_BIT_SET(sCMHDZData.iBackgroundDataRenderingBits[ind], iBit) ENDFUNC PROC CMHDZ_COVER_DATA_SET_BIT_BY_BOOL(INT iCover, CMHDZ_COVER_DATA_BITS bit, BOOL bOn = TRUE) IF (bOn) SET_BITMASK_ENUM_AS_ENUM(sCMHDZData.sCoverData[iCover].eDataBits, bit) ELSE CLEAR_BITMASK_ENUM_AS_ENUM(sCMHDZData.sCoverData[iCover].eDataBits, bit) ENDIF ENDPROC PROC CMHDZ_COVER_DATA_SET_BITMASK(INT iCover, CMHDZ_COVER_DATA_BITS bit) SET_BITMASK_ENUM_AS_ENUM(sCMHDZData.sCoverData[iCover].eDataBits, bit) ENDPROC PROC CMHDZ_COVER_DATA_CLEAR_BITMASK(INT iCover, CMHDZ_COVER_DATA_BITS bit) CLEAR_BITMASK_ENUM_AS_ENUM(sCMHDZData.sCoverData[iCover].eDataBits, bit) ENDPROC FUNC BOOL CMHDZ_COVER_DATA_IS_BITMASK_SET(INT iCover, CMHDZ_COVER_DATA_BITS bit) RETURN IS_BITMASK_ENUM_AS_ENUM_SET(sCMHDZData.sCoverData[iCover].eDataBits, bit) ENDFUNC PROC CMHDZ_SET_RESULT_SCREEN_STATE(CMHDZ_RESULT_SCREEN_STATE st) sCMHDZData.eResultState = st // //CPRINTLN(DEBUG_MINIGAME, "CMHDZ_SET_RESULT_SCREEN_STATE SET TO:", CMHDZ_RESULT_SCREEN_STATE_TO_STRING(st)) ENDPROC PROC CMHDZ_INIT_COLOUR_STRUCTS() INIT_RGBA_STRUCT(sCMHDZData.rgbaBlack, 0, 0, 0, 255) INIT_RGBA_STRUCT(sCMHDZData.rgbaRed, 132, 36, 52, 155) INIT_RGBA_STRUCT(sCMHDZData.rgbaRedText, 255, 0, 0, 255) INIT_RGBA_STRUCT(sCMHDZData.rgbaEnemyShot, 200, 30, 30, 255) INIT_RGBA_STRUCT(sCMHDZData.rgbaSprite, 255, 255, 255, 255) INIT_RGBA_STRUCT(sCMHDZData.rgbaWhite, 255, 255, 255, 255) INIT_RGBA_STRUCT(sCMHDZData.rgbaWhiteSafe, 210, 200, 200, 255) INIT_RGBA_STRUCT(sCMHDZData.rgbaGreen, 0, 255,0, 255) INIT_RGBA_STRUCT(sCMHDZData.rgbaBlue, 0, 0, 255, 255) INIT_RGBA_STRUCT(sCMHDZData.rgbaYellow, 255, 255,0, 255) INIT_RGBA_STRUCT(sCMHDZData.rgbaSpriteUsedBullet, 255, 255, 255, 100) ENDPROC PROC CMHDZ_INIT_GLOBALS() sCMHDZData.vTextScale = INIT_VECTOR_2D(1, 1) ENDPROC // Items PROC CMHDZ_ADD_MENU_OPTION_TO_LIST(VECTOR_2D vPos, CMHDZ_MENU_OPTIONS eOption, CMHDZ_ARCADE_CLIENT_STATE eScreen) sCMHDZData.sMenuOptionsData[sCMHDZData.iNumberOfMenuOptions].vSpritePos = vPos //sCMHDZData.sMenuOptionsData[sCMHDZData.iNumberOfMenuOptions].vSize = vSize sCMHDZData.sMenuOptionsData[sCMHDZData.iNumberOfMenuOptions].eMenuOption = eOption sCMHDZData.sMenuOptionsData[sCMHDZData.iNumberOfMenuOptions].eClientState = eScreen sCMHDZData.iNumberOfMenuOptions ++ ENDPROC PROC CMHDZ_INIT_MENU_OPTIONS() CMHDZ_ADD_MENU_OPTION_TO_LIST(INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/2, (cfBASE_SCREEN_HEIGHT/6*4) + 60), CMHDZ_START, CMHDZ_ARCADE_CLIENT_STATE_TITLE_SCREEN) CMHDZ_ADD_MENU_OPTION_TO_LIST(INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/2, (cfBASE_SCREEN_HEIGHT/6*4) + 130), CMHDZ_SCORES, CMHDZ_ARCADE_CLIENT_STATE_TITLE_SCREEN) CMHDZ_ADD_MENU_OPTION_TO_LIST(INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/10*3, cfBASE_SCREEN_HEIGHT/8*3), CMHDZ_WANTED_1, CMHDZ_ARCADE_CLIENT_STATE_LEVEL_SELECTION_MENU) CMHDZ_ADD_MENU_OPTION_TO_LIST(INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/10*5, cfBASE_SCREEN_HEIGHT/8*3), CMHDZ_WANTED_2, CMHDZ_ARCADE_CLIENT_STATE_LEVEL_SELECTION_MENU) CMHDZ_ADD_MENU_OPTION_TO_LIST(INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/10*7, cfBASE_SCREEN_HEIGHT/8*3), CMHDZ_WANTED_3, CMHDZ_ARCADE_CLIENT_STATE_LEVEL_SELECTION_MENU) CMHDZ_ADD_MENU_OPTION_TO_LIST(INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/10*4, cfBASE_SCREEN_HEIGHT/8*6), CMHDZ_WANTED_4, CMHDZ_ARCADE_CLIENT_STATE_LEVEL_SELECTION_MENU) CMHDZ_ADD_MENU_OPTION_TO_LIST(INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/10*6, cfBASE_SCREEN_HEIGHT/8*6), CMHDZ_WANTED_5, CMHDZ_ARCADE_CLIENT_STATE_LEVEL_SELECTION_MENU) CMHDZ_ADD_MENU_OPTION_TO_LIST(INIT_VECTOR_2D((cfBASE_SCREEN_WIDTH/2.0), (cfBASE_SCREEN_HEIGHT * 0.5) + 120), CMHDZ_REWIND, CMHDZ_ARCADE_CLIENT_STATE_GAME_OVER) CMHDZ_ADD_MENU_OPTION_TO_LIST(INIT_VECTOR_2D((cfBASE_SCREEN_WIDTH/2.0), (cfBASE_SCREEN_HEIGHT * 0.5) + 190), CMHDZ_EJECT, CMHDZ_ARCADE_CLIENT_STATE_GAME_OVER) ENDPROC PROC CMHDZ_INIT_MENU() CMHDZ_INIT_MENU_OPTIONS() sCMHDZData.eCurrentLevel = CMHDZ_LEVEL_CITY sCMHDZData.sPlayerData[0].vSpriteInitReticlePos = INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/2, (cfBASE_SCREEN_HEIGHT/2)+244) sCMHDZData.sPlayerData[0].vSpriteFinalReticlePos = INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/2, (cfBASE_SCREEN_HEIGHT/2)+244) sCMHDZData.sControlTimer.control = FRONTEND_CONTROL sCMHDZData.sControlTimer.action = INPUT_FRONTEND_CANCEL //INPUT_SCRIPT_RRIGHT sCMHDZData.sPcQuitTimer.control = FRONTEND_CONTROL sCMHDZData.sPcQuitTimer.action = INPUT_FRONTEND_DELETE ENDPROC PROC CMHDZ_INIT_BOSS_STRUCT() CDEBUG2LN(DEBUG_MINIGAME, "[BAZ] CMHDZ_INIT_BOSS_STRUCT - Running this frame") sCMHDZData.sBossData.eCurrentBossState = CMHDZ_BOSS_STATE_INACTIVE sCMHDZData.sBossData.fAnimTimer = 0.0 sCMHDZData.sBossData.fHealth = cfBOSS_MaxHealth sCMHDZData.sBossData.fStateChangeTimer = 0.0 sCMHDZData.sBossData.fTimeToThrow = GET_RANDOM_FLOAT_IN_RANGE(1800.0, 3000.0) sCMHDZData.sBossData.iAnimFrame = 0 sCMHDZData.sBossData.vSpritePos = INIT_VECTOR_2D(960, (1080.0 + 300.0)) sCMHDZData.sBossData.vScale = INIT_VECTOR_2D(300, 400) INIT_RGBA_STRUCT(sCMHDZData.sBossData.rgbaColor, 255, 255, 255) CLEAR_BITMASK_ENUM_AS_ENUM(sCMHDZData.sBossData.eDataBits, CMHDZ_BOSS_DATA_BITS_SPAWNED_ENEMIES_1) CLEAR_BITMASK_ENUM_AS_ENUM(sCMHDZData.sBossData.eDataBits, CMHDZ_BOSS_DATA_BITS_SPAWNED_ENEMIES_2) CLEAR_BITMASK_ENUM_AS_ENUM(sCMHDZData.sBossData.eDataBits, CMHDZ_BOSS_DATA_BITS_REVERSE) ENDPROC FUNC BOOL CMHDZ_IS_POSITION_OVER_MENU_OPTION(VECTOR_2D vPos, CMHDZ_MENU_OPTIONS eOption) FLOAT x1, x2, y1, y2 FLOAT fSizeX = 72.0 FLOAT fSizeY = 30.0 SWITCH eOption CASE CMHDZ_WANTED_1 CASE CMHDZ_WANTED_2 CASE CMHDZ_WANTED_3 CASE CMHDZ_WANTED_4 CASE CMHDZ_WANTED_5 fSizeX = (276/2.0) fSizeY = (376/2.0) BREAK ENDSWITCH x1 = sCMHDZData.sMenuOptionsData[eOption].vSpritePos.x - fSizeX y1 = sCMHDZData.sMenuOptionsData[eOption].vSpritePos.y - fSizeY x2 = sCMHDZData.sMenuOptionsData[eOption].vSpritePos.x + fSizeX y2 = sCMHDZData.sMenuOptionsData[eOption].vSpritePos.y + fSizeY RETURN (vPos.X > x1 AND vPos.x < x2) AND (vPos.y > y1 AND vPos.Y < y2) ENDFUNC PROC CMHDZ_SET_PLAYER_NO_CHAIN_SCORE(INT iValue) sCMHDZData.sPlayerData[0].iScoreNoChain = iValue //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SET_PLAYER_NO_CHAIN_SCORE] Value: ", iValue) ENDPROC PROC CMHDZ_RESET_PLAYER_CHAINED_SCORE() sCMHDZData.sPlayerData[0].iChainedScore = 0 //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_RESET_PLAYER_CHAINED_SCORE] Called") ENDPROC FUNC INT CMHDZ_GET_PLAYER_NO_CHAIN_SCORE() RETURN sCMHDZData.sPlayerData[0].iScoreNoChain ENDFUNC PROC CMHDZ_SET_PREVIOUS_TARGET_SCORE(INT iValue) sCMHDZData.sPlayerData[0].iPreviousTargetScore = iValue //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SET_PREVIOUS_TARGET_SCORE] Value: ", iValue) ENDPROC FUNC INT CMHDZ_GET_PREVIOUS_TARGET_SCORE() RETURN sCMHDZData.sPlayerData[0].iPreviousTargetScore ENDFUNC FUNC CMHDZ_LEVELS CMHDZ_GET_CURRENT_LEVEL() RETURN sCMHDZData.eCurrentLevel ENDFUNC FUNC INT CMHDZ_GET_CURRENT_LEVEL_AS_INT() RETURN ENUM_TO_INT(CMHDZ_GET_CURRENT_LEVEL()) ENDFUNC PROC CMHDZ_RESET_PLAYER_SUCCESSIVE_HITS() sCMHDZData.sPlayerData[0].iSuccessiveHits = 0 //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_RESET_PLAYER_SUCCESSIVE_HITS] Called") CMHDZ_RESET_PLAYER_CHAINED_SCORE() CMHDZ_SET_PLAYER_NO_CHAIN_SCORE(playerBd[PARTICIPANT_ID_TO_INT()].iPlayerScore[CMHDZ_GET_CURRENT_LEVEL_AS_INT()]) ENDPROC PROC CMHDZ_INIT_PLAYERS() sCMHDZData.sPlayerData[0].vSpriteInitReticlePos = INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/2.0, cfBASE_SCREEN_HEIGHT/2.0) // INIT_VECTOR_2D(300, 500) sCMHDZData.sPlayerData[0].vSpriteFinalReticlePos = INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/2.0, cfBASE_SCREEN_HEIGHT/2.0) // INIT_VECTOR_2D(300, 500) sCMHDZData.sPlayerData[0].iPlayerBitset = 0 sCMHDZData.sPlayerData[0].iInvulnerableTimer = 0 sCMHDZData.sPlayerData[0].iQuadDamageTimer = 0 sCMHDZData.sPlayerData[0].iHideReticuleTimer = 0 sCMHDZData.sPlayerData[0].iDeadTime = 0 sCMHDZData.sPlayerData[0].iNoAmmoTimer = 0 sCMHDZData.sPlayerData[0].iDamageScreen = 0 CDEBUG2LN(DEBUG_MINIGAME, "CMHDZ_INIT_PLAYERS - sCMHDZData.sPlayerData[0].vSpriteInitReticlePos.X = ", sCMHDZData.sPlayerData[0].vSpriteInitReticlePos.x) CMHDZ_RESET_PLAYER_SUCCESSIVE_HITS() ENDPROC FUNC VECTOR_2D CMHDZ_GET_PLAYER_RETICULE_POSITON() RETURN INIT_VECTOR_2D(sCMHDZData.sPlayerData[0].vSpriteFinalReticlePos.x, sCMHDZData.sPlayerData[0].vSpriteFinalReticlePos.y) ENDFUNC ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Player weapons ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// FUNC CMHDZ_PLAYER_WEAPON GET_PLAYER_DEFAULT_WEAPON() RETURN CMHDZ_PLAYER_WEAPON_REVOLVER ENDFUNC FUNC CMHDZ_PLAYER_WEAPON CMHDZ_GET_PLAYER_SPECIAL_WEAPON() RETURN sCMHDZData.sPlayerData[0].activeWeapon ENDFUNC FUNC BOOL CMHDZ_DOES_PLAYER_HAVE_SPECIAL_WEAPON() RETURN CMHDZ_GET_PLAYER_SPECIAL_WEAPON() != CMHDZ_PLAYER_WEAPON_NONE ENDFUNC FUNC CMHDZ_PLAYER_WEAPON CMHDZ_GET_PLAYER_CURRENT_WEAPON() IF CMHDZ_DOES_PLAYER_HAVE_SPECIAL_WEAPON() RETURN CMHDZ_GET_PLAYER_SPECIAL_WEAPON() ENDIF RETURN GET_PLAYER_DEFAULT_WEAPON() ENDFUNC FUNC CMHDZ_PLAYER_WEAPON_DATA CMHDZ_GET_PLAYER_WEAPON_DATA(CMHDZ_PLAYER_WEAPON weapon) CMHDZ_PLAYER_WEAPON_DATA data SWITCH weapon CASE CMHDZ_PLAYER_WEAPON_NONE data.iClipSize = 0 // Amount of ammo in clip data.iMaxAmmo = 0 // Max amount of ammo data.iMaxEnemyImpacts = 0 // Maximum number of enemies that can be hit with one shot data.fSpreadModifier = 0.0 // A way to indicate the 'spread' of the weapon. E.g. Shotgun has large spread data.iMinTimeBetweenShots = 0 data.iMinTimeReloadSingleBullet = 0 data.iMinDamagePerShot = 0 BREAK CASE CMHDZ_PLAYER_WEAPON_REVOLVER data.iClipSize = 6 data.iMaxAmmo = ciCMHDZ_PLAYER_START_AMMO data.iMaxEnemyImpacts = 1 data.fSpreadModifier = 1.0 // Add controller compensation for the bullet spread IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) data.fSpreadModifier = 1.0 ELSE data.fSpreadModifier = 135.0 ENDIF data.iMinTimeBetweenShots = 5 data.iMinDamagePerShot = 7 data.iMinTimeReloadSingleBullet = 100 BREAK CASE CMHDZ_PLAYER_WEAPON_SHOTGUN data.iClipSize = 4 data.iMaxAmmo = 20 data.iMaxEnemyImpacts = 5 //data.fSpreadModifier = 350.0 // Add controller compensation for the bullet spread IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) data.fSpreadModifier = 125.0 ELSE data.fSpreadModifier = 175.0 ENDIF data.iMinTimeBetweenShots = 600 data.iMinDamagePerShot = 20 data.iMinTimeReloadSingleBullet = 250 BREAK CASE CMHDZ_PLAYER_WEAPON_NAILGUN data.iClipSize = 60 data.iMaxAmmo = 60 // Anything over 99 is 'infinite' data.iMaxEnemyImpacts = 1 //data.fSpreadModifier = 1.0 // Add controller compensation for the bullet spread IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) data.fSpreadModifier = 1.0 ELSE data.fSpreadModifier = 130.0 ENDIF data.iMinTimeBetweenShots = 0 data.iMinDamagePerShot = 5 BREAK CASE CMHDZ_PLAYER_WEAPON_RIFLE data.iClipSize = 5 data.iMaxAmmo = 25 // Anything over 99 is 'infinite' data.iMaxEnemyImpacts = 1 //data.fSpreadModifier = 1.0 // Add controller compensation for the bullet spread IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) data.fSpreadModifier = 1.0 ELSE data.fSpreadModifier = 120.0 ENDIF data.iMinTimeBetweenShots = 0 data.iMinDamagePerShot = 15 data.iMinTimeReloadSingleBullet = 200 BREAK DEFAULT #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_GET_PLAYER_WEAPON_DATA] ************* NO WEAPON DATA weapon: ", CMHDZ_PLAYER_WEAPON_TO_STRING(weapon), " Int: ", ENUM_TO_INT(weapon)) #ENDIF BREAK ENDSWITCH RETURN data ENDFUNC FUNC INT CMHDZ_GET_PLAYER_AMMO_IN_CLIP_FOR_WEAPON_TYPE(CMHDZ_PLAYER_WEAPON_TYPE type) INT iAmmo = sCMHDZData.sPlayerData[0].weaponData[type].iAmmoInClip RETURN iAmmo ENDFUNC FUNC INT CMHDZ_GET_PLAYER_TOTAL_AMMO_FOR_WEAPON_TYPE(CMHDZ_PLAYER_WEAPON_TYPE type, BOOL bIncludeClip = FALSE) INT iTotal = sCMHDZData.sPlayerData[0].weaponData[type].iTotalAmmo IF bIncludeClip iTotal += CMHDZ_GET_PLAYER_AMMO_IN_CLIP_FOR_WEAPON_TYPE(type) ENDIF RETURN iTotal ENDFUNC FUNC INT GET_PLAYER_TOTAL_AMMO_FOR_ALL_WEAPON_TYPES() INT i, iTotal REPEAT CMHDZ_PLAYER_WEAPON_TYPE_MAX i iTotal += CMHDZ_GET_PLAYER_TOTAL_AMMO_FOR_WEAPON_TYPE(INT_TO_ENUM(CMHDZ_PLAYER_WEAPON_TYPE, i)) ENDREPEAT RETURN iTotal ENDFUNC FUNC BOOL CMHDZ_DOES_PLAYER_WEAPON_HAVE_INFINITE_AMMO(CMHDZ_PLAYER_WEAPON weapon) // debug hack so I can test game in edit mode #IF IS_DEBUG_BUILD #IF CMHDZ_CMDLINE_EDITOR_NEW IF (sCMHDZData.sEditor.bPlayStage) RETURN TRUE ENDIF #ENDIF #ENDIF IF weapon = CMHDZ_PLAYER_WEAPON_REVOLVER RETURN TRUE ENDIF // IF weapon = CMHDZ_PLAYER_WEAPON_NAILGUN // RETURN TRUE // ENDIF RETURN FALSE ENDFUNC FUNC BOOL CMHDZ_DOES_PLAYER_CURRENT_WEAPON_HAVE_INFINITE_AMMO() RETURN CMHDZ_DOES_PLAYER_WEAPON_HAVE_INFINITE_AMMO(CMHDZ_GET_PLAYER_CURRENT_WEAPON()) ENDFUNC FUNC INT CMHDZ_GET_PLAYER_CURRENT_WEAPON_CLIP_SIZE() CMHDZ_PLAYER_WEAPON weapon = CMHDZ_GET_PLAYER_CURRENT_WEAPON() CMHDZ_PLAYER_WEAPON_DATA data = CMHDZ_GET_PLAYER_WEAPON_DATA(weapon) RETURN data.iClipSize ENDFUNC FUNC INT CMHDZ_GET_PLAYER_AMMO_IN_CLIP_FOR_CURRENT_WEAPON() RETURN CMHDZ_GET_PLAYER_AMMO_IN_CLIP_FOR_WEAPON_TYPE(sCMHDZData.sPlayerData[0].weaponType) ENDFUNC FUNC INT CMHDZ_GET_PLAYER_TOTAL_AMMO_IN_CURRENT_WEAPON(BOOL bIncludeInClip = FALSE) RETURN CMHDZ_GET_PLAYER_TOTAL_AMMO_FOR_WEAPON_TYPE(sCMHDZData.sPlayerData[0].weaponType, bIncludeInClip) ENDFUNC PROC CMHDZ_STOP_LOOPING_WEAPON_AUDIO() CMHDZ_STOP_SOUND(CMHDZ_AUDIO_EFFECT_RIFLE_FIRE) CMHDZ_STOP_SOUND(CMHDZ_AUDIO_EFFECT_RAT_IDLE_LOOP) ENDPROC PROC CMHDZ_HANDLE_PLAYER_SHOOTING_AUDIO(BOOL bInMenu = FALSE) IF bInMenu CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_Shoot_Option) EXIT ENDIF CMHDZ_PLAYER_WEAPON weapon = CMHDZ_GET_PLAYER_CURRENT_WEAPON() INT iAmmoInClip = CMHDZ_GET_PLAYER_AMMO_IN_CLIP_FOR_CURRENT_WEAPON() IF iAmmoInClip > 0 SWITCH weapon CASE CMHDZ_PLAYER_WEAPON_REVOLVER CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_REVOLVER_FIRE) BREAK CASE CMHDZ_PLAYER_WEAPON_RIFLE CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_RIFLE_FIRE) BREAK CASE CMHDZ_PLAYER_WEAPON_SHOTGUN CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_SHOTGUN_FIRE) BREAK CASE CMHDZ_PLAYER_WEAPON_NAILGUN CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_NAILGUN_FIRE) BREAK ENDSWITCH ELSE // Weapon empty SWITCH weapon CASE CMHDZ_PLAYER_WEAPON_REVOLVER // IF CMHDZ_HAS_SOUND_FINISHED(CMHDZ_AUDIO_EFFECT_REVOLVER_EMPTY) CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_REVOLVER_EMPTY) // ENDIF BREAK CASE CMHDZ_PLAYER_WEAPON_RIFLE // IF CMHDZ_HAS_SOUND_FINISHED(CMHDZ_AUDIO_EFFECT_RIFLE_EMPTY) CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_RIFLE_EMPTY) // ENDIF BREAK CASE CMHDZ_PLAYER_WEAPON_SHOTGUN // IF CMHDZ_HAS_SOUND_FINISHED(CMHDZ_AUDIO_EFFECT_SHOTGUN_EMPTY) CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_SHOTGUN_EMPTY) // ENDIF BREAK ENDSWITCH ENDIF ENDPROC PROC CMHDZ_HANDLE_PLAYER_RELOADING_WEAPON_AUDIO(BOOL bIsFirst, BOOL bIsSingle, BOOL bIsLast) CMHDZ_PLAYER_WEAPON weapon = CMHDZ_GET_PLAYER_CURRENT_WEAPON() #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_HANDLE_PLAYER_RELOADING_WEAPON_AUDIO] Weapon: ", CMHDZ_PLAYER_WEAPON_TO_STRING(weapon), " bIsFirst: ", bIsFirst, " bIsSingle: ", bIsSingle, " bIsLast: ", bIsLast) #ENDIF SWITCH weapon CASE CMHDZ_PLAYER_WEAPON_REVOLVER IF bIsFirst CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_REVOLVER_RELOAD_FIRST) ELIF bIsSingle CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_REVOLVER_RELOAD_SINGLE) ELIF bIsLast CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_REVOLVER_RELOAD_LAST) ENDIF BREAK CASE CMHDZ_PLAYER_WEAPON_RIFLE IF bIsFirst CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_RIFLE_RELOAD_SINGLE) ELIF bIsSingle CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_RIFLE_RELOAD_SINGLE) ELIF bIsLast CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_RIFLE_RELOAD_LAST) ENDIF BREAK CASE CMHDZ_PLAYER_WEAPON_SHOTGUN IF bIsFirst CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_SHOTGUN_RELOAD_SINGLE) ELIF bIsSingle CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_SHOTGUN_RELOAD_SINGLE) ELIF bIsLast CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_SHOTGUN_RELOAD_SINGLE) ENDIF BREAK ENDSWITCH ENDPROC PROC CMHDZ_REDUCE_PLAYER_AMMO_IN_CLIP(INT iAmount = 1) CMHDZ_PLAYER_WEAPON_TYPE type = sCMHDZData.sPlayerData[0].weaponType sCMHDZData.sPlayerData[0].weaponData[type].iAmmoInClip -= iAmount IF sCMHDZData.sPlayerData[0].weaponData[type].iAmmoInClip < 0 sCMHDZData.sPlayerData[0].weaponData[type].iAmmoInClip = 0 ENDIF IF CMHDZ_DOES_PLAYER_CURRENT_WEAPON_HAVE_INFINITE_AMMO() EXIT ENDIF sCMHDZData.sPlayerData[0].weaponData[type].iTotalAmmo -= iAmount IF sCMHDZData.sPlayerData[0].weaponData[type].iTotalAmmo <= 0 // IF sCMHDZData.sPlayerData[0].activeWeapon != CMHDZ_PLAYER_WEAPON_REVOLVER // CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Reload) // ENDIF IF sCMHDZData.sPlayerData[0].weaponData[type].iTotalAmmo < 0 sCMHDZData.sPlayerData[0].weaponData[type].iTotalAmmo = 0 ENDIF ENDIF //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_REDUCE_PLAYER_AMMO_IN_CLIP] {DSW} Weapon type: ", ENUM_TO_INT(type), " Ammo in clip now: ", sCMHDZData.sPlayerData[0].weaponData[type].iAmmoInClip, " Ammo remaining: ",sCMHDZData.sPlayerData[0].weaponData[type].iTotalAmmo) ENDPROC PROC CMHDZ_SET_CURRENT_PLAYER_WEAPON_AMMO(INT iClip, INT iWeapon) CMHDZ_PLAYER_WEAPON_TYPE weaponType = sCMHDZData.sPlayerData[0].weaponType sCMHDZData.sPlayerData[0].weaponData[weaponType].iAmmoInClip = iClip sCMHDZData.sPlayerData[0].weaponData[weaponType].iTotalAmmo = iWeapon //CDEBUG2LN(DEBUG_MINIGAME, "{DSW} [CMHDZ_SET_CURRENT_PLAYER_WEAPON_AMMO] Set ammo in clip: ", iClip, " In weapon: ", iWeapon) ENDPROC //PROC CMHDZ_SET_SHOULD_SHOW_RELOAD_PROMPT() // sCMHDZData.sPlayerData[0].bShouldShowReloadPrompt = TRUE //ENDPROC FUNC BOOL CMHDZ_IS_PLAYER_SHOOTING() IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) RETURN (IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_ATTACK)) ENDIF RETURN (IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_RT) OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)) ENDFUNC FUNC BOOL CMHDZ_IS_PLAYER_HOLDING_SHOOT() IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) RETURN (IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_ATTACK)) ENDIF RETURN (IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_RT) OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)) ENDFUNC FUNC BOOL CMHDZ_IS_PLAYER_THROWING() IF NOT IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) RETURN IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_LB) ELSE // Using keyboard IF IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_DUCK) OR IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_SPRINT) OR IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_PHONE) RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC FUNC BOOL CMHDZ_SHOULD_SHOW_RELOAD_PROMPT() IF CMHDZ_GET_PLAYER_AMMO_IN_CLIP_FOR_CURRENT_WEAPON() > 0 IF sCMHDZData.sPlayerData[0].bShouldShowReloadPrompt sCMHDZData.sPlayerData[0].bShouldShowReloadPrompt = FALSE sCMHDZData.sPlayerData[0].bDoneReloadEffect = FALSE sCMHDZData.sPlayerData[0].iReloadPromptShowTime = 0 ENDIF RETURN FALSE ELSE // // // IF CMHDZ_IS_PLAYER_SHOOTING() // IF sCMHDZData.sPlayerData[0].iReloadPromptShowTime = 0 // sCMHDZData.sPlayerData[0].iReloadPromptShowTime = GET_GAME_TIMER() // RETURN FALSE // ENDIF // // IF GET_GAME_TIMER() - sCMHDZData.sPlayerData[0].iReloadPromptShowTime > 100 sCMHDZData.sPlayerData[0].bShouldShowReloadPrompt = TRUE IF NOT sCMHDZData.sPlayerData[0].bDoneReloadEffect // CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_RELOAD) CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_PLAYER_RELOAD) CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Reload) sCMHDZData.sPlayerData[0].bDoneReloadEffect = TRUE ENDIF // ENDIF ENDIF RETURN sCMHDZData.sPlayerData[0].bShouldShowReloadPrompt ENDFUNC /// PURPOSE: /// Some weapons have infinite ammo /// RETURNS: /// FUNC BOOL CMHDZ_CAN_PLAYER_CURRNT_WEAPON_BE_RELOADED() CMHDZ_PLAYER_WEAPON weapon = CMHDZ_GET_PLAYER_CURRENT_WEAPON() SWITCH weapon CASE CMHDZ_PLAYER_WEAPON_NONE //CASE CMHDZ_PLAYER_WEAPON_NAILGUN RETURN FALSE ENDSWITCH CMHDZ_PLAYER_WEAPON_DATA data = CMHDZ_GET_PLAYER_WEAPON_DATA(weapon) INT iAmmoInClip = CMHDZ_GET_PLAYER_AMMO_IN_CLIP_FOR_CURRENT_WEAPON() IF iAmmoInClip = data.iClipSize //-- Clip full RETURN FALSE ENDIF RETURN TRUE ENDFUNC FUNC BOOL CMHDZ_DOES_PLAYER_NEED_TO_RELOAD() RETURN CMHDZ_GET_PLAYER_AMMO_IN_CLIP_FOR_CURRENT_WEAPON() = 0 ENDFUNC PROC CMHDZ_RELOAD_PLAYER_WEAPON() CMHDZ_PLAYER_WEAPON_TYPE weaponType = sCMHDZData.sPlayerData[0].weaponType // // IF NOT CMHDZ_CAN_PLAYER_CURRNT_WEAPON_BE_RELOADED() // IF sCMHDZData.sPlayerData[0].bIsReloading[weaponType] // sCMHDZData.sPlayerData[0].bIsReloading[weaponType] = FALSE // ENDIF // EXIT // ENDIF CMHDZ_PLAYER_WEAPON weapon = CMHDZ_GET_PLAYER_CURRENT_WEAPON() CMHDZ_PLAYER_WEAPON_DATA data = CMHDZ_GET_PLAYER_WEAPON_DATA(weapon) BOOL bPlayFirst IF sCMHDZData.sPlayerData[0].weaponData[weaponType].iReloadSingleBulletTime = 0 OR GET_GAME_TIMER() - sCMHDZData.sPlayerData[0].weaponData[weaponType].iReloadSingleBulletTime >= data.iMinTimeReloadSingleBullet INT iAmmoInClip = CMHDZ_GET_PLAYER_AMMO_IN_CLIP_FOR_CURRENT_WEAPON() INT iTotalAmmo = CMHDZ_GET_PLAYER_TOTAL_AMMO_IN_CURRENT_WEAPON(FALSE) INT iBulletsToAdd = 1 // data.iClipSize - iAmmoInClip IF iAmmoInClip < iTotalAmmo IF iBulletsToAdd > iTotalAmmo iBulletsToAdd = iTotalAmmo ENDIF // CMHDZ_HANDLE_PLAYER_RELOADING_WEAPON_AUDIO() #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "{DSW} [CMHDZ_RELOAD_PLAYER_WEAPON] Weapon: ", CMHDZ_PLAYER_WEAPON_TO_STRING(weapon), "In clip: ", iAmmoInClip, " Weapon size: ", data.iClipSize) #ENDIF bPlayFirst = (iAmmoInClip < data.iClipSize - 2) AND NOT CMHDZ_IS_PLAYER_BIT_SET(CMHDZ_PLAYER_BIT_RELOADED_FIRST_BULLET) CMHDZ_SET_CURRENT_PLAYER_WEAPON_AMMO(iAmmoInClip+iBulletsToAdd, iTotalAmmo) IF bPlayFirst //- -First bullet in clip (but not also last) CMHDZ_SET_PLAYER_BIT(CMHDZ_PLAYER_BIT_RELOADED_FIRST_BULLET) CMHDZ_HANDLE_PLAYER_RELOADING_WEAPON_AUDIO(TRUE, FALSE, FALSE) ELIF CMHDZ_GET_PLAYER_AMMO_IN_CLIP_FOR_CURRENT_WEAPON() = data.iClipSize //-- Last bullet in clip CMHDZ_HANDLE_PLAYER_RELOADING_WEAPON_AUDIO(FALSE, FALSE, TRUE) ELSE CMHDZ_HANDLE_PLAYER_RELOADING_WEAPON_AUDIO(FALSE, TRUE, FALSE) ENDIF sCMHDZData.sPlayerData[0].weaponData[weaponType].iReloadSingleBulletTime = GET_GAME_TIMER() ENDIF ENDIF ENDPROC PROC CMHDZ_SET_PLAYER_WEAPON_TYPE(CMHDZ_PLAYER_WEAPON_TYPE type) #IF IS_DEBUG_BUILD // STRING sOld = CMHDZ_PLAYER_WEAPON_TYPE_TO_STRING(sCMHDZData.sPlayerData[0].weaponType) // STRING sNew = CMHDZ_PLAYER_WEAPON_TYPE_TO_STRING(type) //CDEBUG2LN(DEBUG_MINIGAME, "{DSW} [CMHDZ_SET_PLAYER_WEAPON_TYPE] Setting weapon type ", sOld, " -> ", sNew) #ENDIF sCMHDZData.sPlayerData[0].weaponType = type ENDPROC PROC CMHDZ_INIT_PLAYER_SPECIAL_WEAPON() CMHDZ_PLAYER_WEAPON weapon = sCMHDZData.sPlayerData[0].activeWeapon CMHDZ_PLAYER_WEAPON_DATA data = CMHDZ_GET_PLAYER_WEAPON_DATA(weapon) sCMHDZData.sPlayerData[0].weaponData[CMHDZ_PLAYER_WEAPON_TYPE_SPECIAL].iAmmoInClip = data.iClipSize sCMHDZData.sPlayerData[0].weaponData[CMHDZ_PLAYER_WEAPON_TYPE_SPECIAL].iTotalAmmo = data.iMaxAmmo sCMHDZData.sPlayerData[0].weaponData[CMHDZ_PLAYER_WEAPON_TYPE_SPECIAL].iLastShotTime = 0 sCMHDZData.sPlayerData[0].weaponData[CMHDZ_PLAYER_WEAPON_TYPE_SPECIAL].iReloadSingleBulletTime = 0 sCMHDZData.sPlayerData[0].bIsReloading[CMHDZ_PLAYER_WEAPON_TYPE_SPECIAL] = FALSE ENDPROC PROC CMHDZ_SET_PLAYER_SPECIAL_WEAPON(CMHDZ_PLAYER_WEAPON weapon, BOOL bSwapToSpecial = TRUE) // #IF IS_DEBUG_BUILD // STRING sOld = CMHDZ_PLAYER_WEAPON_TO_STRING(sCMHDZData.sPlayerData[0].activeWeapon) // STRING sNew = CMHDZ_PLAYER_WEAPON_TO_STRING(weapon) // //CDEBUG2LN(DEBUG_MINIGAME, "{DSW} [CMHDZ_SET_PLAYER_SPECIAL_WEAPON] Setting special weapon ", sOld, " -> ", sNew, " Swap? ", bSwapToSpecial) // #ENDIF sCMHDZData.sPlayerData[0].weaponData[CMHDZ_PLAYER_WEAPON_TYPE_DEFAULT].iLastShotTime = 0 sCMHDZData.sPlayerData[0].weaponData[CMHDZ_PLAYER_WEAPON_TYPE_DEFAULT].iReloadSingleBulletTime = 0 sCMHDZData.sPlayerData[0].activeWeapon = weapon IF bSwapToSpecial CMHDZ_SET_PLAYER_WEAPON_TYPE(CMHDZ_PLAYER_WEAPON_TYPE_SPECIAL) CMHDZ_INIT_PLAYER_SPECIAL_WEAPON() CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_SWAP_WEAPON) CMHDZ_SET_LEVEL_BIT_FOR_CURRENT_LEVEL(CMHDZ_LEVELS_BIT_USED_SPECIAL_WEAPON) ENDIF ENDPROC PROC CMHDZ_INIT_PLAYER_WEAPON() sCMHDZData.sPlayerData[0].weaponType = CMHDZ_PLAYER_WEAPON_TYPE_DEFAULT sCMHDZData.sPlayerData[0].activeWeapon = CMHDZ_PLAYER_WEAPON_NONE CMHDZ_PLAYER_WEAPON_DATA data = CMHDZ_GET_PLAYER_WEAPON_DATA(CMHDZ_PLAYER_WEAPON_REVOLVER) sCMHDZData.sPlayerData[0].weaponData[CMHDZ_PLAYER_WEAPON_TYPE_DEFAULT].iAmmoInClip = data.iClipSize sCMHDZData.sPlayerData[0].weaponData[CMHDZ_PLAYER_WEAPON_TYPE_DEFAULT].iReloadSingleBulletTime = 0 sCMHDZData.sPlayerData[0].weaponData[CMHDZ_PLAYER_WEAPON_TYPE_DEFAULT].iTotalAmmo = ciCMHDZ_PLAYER_START_AMMO sCMHDZData.sPlayerData[0].weaponData[CMHDZ_PLAYER_WEAPON_TYPE_DEFAULT].iLastShotTime = 0 sCMHDZData.sPlayerData[0].bIsReloading[CMHDZ_PLAYER_WEAPON_TYPE_DEFAULT] = FALSE CMHDZ_SET_PLAYER_SPECIAL_WEAPON(CMHDZ_PLAYER_WEAPON_NONE, FALSE) CMHDZ_INIT_PLAYER_SPECIAL_WEAPON() ENDPROC FUNC INT CMHDZ_GET_RIVAL_PLAYER_PART_ID() RETURN sCMHDZData.iRivalPart ENDFUNC PROC CMHDZ_INIT_PLAY_VARIABLES() sCMHDZData.eLevelState = CMHDZ_PLAY ENDPROC ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Level / Hi scores ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// FUNC INT CMHDZ_GET_TOTAL_SHOTS_FIRED_IN_LEVEL(CMHDZ_LEVELS eLevel) RETURN sCMHDZData.iTotalLevelShots[eLevel] ENDFUNC FUNC INT CMHDZ_GET_TOTAL_SHOTS_FIRED_IN_ALL_LEVELS() INT iTotal INT i REPEAT CMHDZ_MAX_LEVELS i iTotal += CMHDZ_GET_TOTAL_SHOTS_FIRED_IN_LEVEL(INT_TO_ENUM(CMHDZ_LEVELS, i)) ENDREPEAT RETURN iTotal ENDFUNC FUNC INT CMHDZ_GET_CURRENT_LEVEL_SCREEN() RETURN sCMHDZData.iCurrentScreen ENDFUNC PROC CMHDZ_INCREASE_SHOT_FIRED_FOR_CURRENT_LEVEL() IF CMHDZ_GET_PLAYER_SPECIAL_WEAPON() = CMHDZ_PLAYER_WEAPON_NAILGUN IF (sCMHDZData.sPlayerData[0].weaponData[CMHDZ_PLAYER_WEAPON_TYPE_SPECIAL].iAmmoInClip %6) = 0 sCMHDZData.iTotalLevelShots[CMHDZ_GET_CURRENT_LEVEL()]++ ENDIF EXIT ENDIF sCMHDZData.iTotalLevelShots[CMHDZ_GET_CURRENT_LEVEL()]++ ENDPROC FUNC INT CMHDZ_GET_TOTAL_SHOTS_FIRED_IN_CURRENT_LEVEL() RETURN sCMHDZData.iTotalLevelShots[CMHDZ_GET_CURRENT_LEVEL()] ENDFUNC FUNC INT CMHDZ_GET_TOTAL_ENEMY_HITS_FOR_LEVEL(CMHDZ_LEVELS eLevel) RETURN sCMHDZData.iTotalLevelEnemyHits[eLevel] ENDFUNC PROC CMHDZ_INCREASE_ENEMY_HIT_COUNT_FOR_CURRENT_LEVEL(BOOL bHitEnemy) IF CMHDZ_IS_LEVEL_BIT_SET_FOR_CURRENT_LEVEL(CMHDZ_LEVELS_BIT_STOPPED) sCMHDZData.iTotalNumberOfEnemiesKilledForScreen++ ENDIF IF bHitEnemy EXIT ENDIF sCMHDZData.iTotalLevelEnemyHits[CMHDZ_GET_CURRENT_LEVEL()]++ ENDPROC FUNC INT CMHDZ_GET_TOTAL_ENEMY_HITS_FOR_CURRENT_LEVEL() RETURN CMHDZ_GET_TOTAL_ENEMY_HITS_FOR_LEVEL(CMHDZ_GET_CURRENT_LEVEL()) ENDFUNC FUNC INT CMHDZ_GET_TOTAL_ENEMY_HITS_FOR_ALL_LEVELS() INT iTotal INT i REPEAT CMHDZ_MAX_LEVELS i iTotal += CMHDZ_GET_TOTAL_ENEMY_HITS_FOR_LEVEL(INT_TO_ENUM(CMHDZ_LEVELS, i)) ENDREPEAT RETURN iTotal ENDFUNC PROC CMHDZ_INCREASE_ENEMY_HEADSHOT_COUNT_FOR_CURRENT_LEVEL() sCMHDZData.iTotalLevelEnemyHeadShots[CMHDZ_GET_CURRENT_LEVEL()]++ ENDPROC FUNC INT CMHDZ_GET_TOTAL_NUMBER_OF_POWERUPS_COLLECTED_FOR_LEVEL(CMHDZ_LEVELS eLevel) RETURN sCMHDZData.iTotalPowerupsCollected[eLevel] ENDFUNC FUNC INT CMHDZ_GET_TOTAL_NUMBER_OF_POWERUPS_COLLECTED_FOR_CURRENT_LEVEL() RETURN CMHDZ_GET_TOTAL_NUMBER_OF_POWERUPS_COLLECTED_FOR_LEVEL(CMHDZ_GET_CURRENT_LEVEL()) ENDFUNC FUNC INT CMHDZ_GET_TOTAL_NUMBER_OF_POWERUPS_COLLECTED_FOR_ALL_LEVELS() INT iTotal INT i REPEAT CMHDZ_MAX_LEVELS i iTotal += CMHDZ_GET_TOTAL_NUMBER_OF_POWERUPS_COLLECTED_FOR_LEVEL(INT_TO_ENUM(CMHDZ_LEVELS, i)) ENDREPEAT RETURN iTotal ENDFUNC PROC CMHDZ_INCREASE_POWERUPS_COLLECTED_FOR_CURRENT_LEVEL() sCMHDZData.iTotalPowerupsCollected[CMHDZ_GET_CURRENT_LEVEL()]++ #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_INCREASE_POWERUPS_COLLECTED_FOR_CURRENT_LEVEL] Powerups collected now: ",sCMHDZData.iTotalPowerupsCollected[CMHDZ_GET_CURRENT_LEVEL()], " level: ", CMHDZ_LEVELS_TO_STRING(sCMHDZData.eCurrentLevel)) #ENDIF ENDPROC FUNC FLOAT CMHDZ_GET_PLAYER_ACCURACY_FOR_LEVEL(CMHDZ_LEVELS level) FLOAT fNumberOfShots = TO_FLOAT(CMHDZ_GET_TOTAL_SHOTS_FIRED_IN_LEVEL(level)) FLOAT fEnemiesShot = TO_FLOAT(CMHDZ_GET_TOTAL_ENEMY_HITS_FOR_LEVEL(level)) FLOAT fTotalHits = fEnemiesShot IF (fTotalHits > fNumberOfShots) fTotalHits = fNumberOfShots ENDIF RETURN 100.0 * (fTotalHits / fNumberOfSHots) ENDFUNC FUNC FLOAT CMHDZ_GET_PLAYER_ACCURACY_FOR_CURRENT_LEVEL() FLOAT fNumberOfShots = TO_FLOAT(CMHDZ_GET_TOTAL_SHOTS_FIRED_IN_CURRENT_LEVEL()) FLOAT fEnemiesShot = TO_FLOAT(CMHDZ_GET_TOTAL_ENEMY_HITS_FOR_CURRENT_LEVEL()) FLOAT fTotalHits = fEnemiesShot IF (fTotalHits > fNumberOfShots) fTotalHits = fNumberOfShots ENDIF RETURN 100.0 * (fTotalHits / fNumberOfSHots) ENDFUNC FUNC FLOAT CMHDZ_GET_PLAYER_ACCURACY_FOR_ALL_LEVELS() FLOAT fTotalShots = TO_FLOAT(CMHDZ_GET_TOTAL_SHOTS_FIRED_IN_ALL_LEVELS()) FLOAT fTotalEnemyHits = TO_FLOAT(CMHDZ_GET_TOTAL_ENEMY_HITS_FOR_ALL_LEVELS()) FLOAT fAccuracy = 100.0 * (fTotalEnemyHits) / fTotalShots IF (fAccuracy > 100) fAccuracy = 100.0 ENDIF RETURN fAccuracy ENDFUNC FUNC INT CMHDZ_GET_PLAYER_SUCESSIVE_HITS() RETURN sCMHDZData.sPlayerData[0].iSuccessiveHits ENDFUNC PROC CMHDZ_INCREASE_PLAYER_SUCCESSIVE_HITS() sCMHDZData.sPlayerData[0].iSuccessiveHits += 1 //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_INCREASE_PLAYER_SUCCESSIVE_HITS] Score mulitplier now: ", sCMHDZData.sPlayerData[0].iSuccessiveHits) ENDPROC PROC CMHDZ_INCREASE_PLAYER_CHAINED_SCORE(INT iScore) sCMHDZData.sPlayerData[0].iChainedScore += iScore //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_INCREASE_PLAYER_CHAINED_SCORE] Chained score now: ", sCMHDZData.sPlayerData[0].iChainedScore, " Chained Shots: ",CMHDZ_GET_PLAYER_SUCESSIVE_HITS() - 1 ) DEBUG_PRINTCALLSTACK() ENDPROC FUNC INT CMHDZ_GET_PLAYER_CHAINED_SCORE() RETURN sCMHDZData.sPlayerData[0].iChainedScore ENDFUNC FUNC INT CMHDZ_GET_LOCAL_PLAYER_SCORE_FOR_LEVEL(INT iLevel) RETURN playerBd[PARTICIPANT_ID_TO_INT()].iPlayerScore[iLevel] ENDFUNC FUNC INT CMHDZ_GET_LOCAL_PLAYER_HI_SCORE_FOR_LEVEL(INT iLevel) RETURN playerBd[PARTICIPANT_ID_TO_INT()].iPlayerHiScore[iLevel] ENDFUNC FUNC FLOAT CMHDZ_GET_LOCAL_PLAYER_STAR_RATING_FOR_LEVEL(INT iLevel) RETURN playerBd[PARTICIPANT_ID_TO_INT()].fPlayerStarRating[iLevel] ENDFUNC FUNC BOOL CMHDZ_IS_STAR_RATING_5_FOR_ALL_LEVELS() INT i FOR i = 0 TO (ENUM_TO_INT(CMHDZ_MAX_LEVELS) - 1) IF CMHDZ_GET_LOCAL_PLAYER_STAR_RATING_FOR_LEVEL(i) < 5.0 RETURN FALSE ENDIF ENDFOR RETURN TRUE ENDFUNC FUNC INT CMHDZ_GET_PARTICIPANT_HI_SCORE_FOR_LEVEL_FROM_HOST(INT iPart, INT iLevel) RETURN cmhdzServerBd.sPlayerScores[iPart].iHiScoreForLevel[iLevel] RETURN 0 ENDFUNC FUNC INT CMHDZ_GET_RIVAL_HI_SCORE_FOR_LEVEL(INT iLevel) RETURN cmhdzServerBd.sPlayerScores[sCMHDZData.iRivalPart].iHiScoreForLevel[iLevel] ENDFUNC FUNC INT CMHDZ_GET_RIVAL_SCORE_FOR_LEVEL(INT iLevel) RETURN cmhdzServerBd.sPlayerScores[sCMHDZData.iRivalPart].iCurrentScoreForLevel[iLevel] ENDFUNC FUNC FLOAT CMHDZ_GET_RIVAL_STAR_RATING_FOR_LEVEL(INT iLevel) RETURN cmhdzServerBd.sPlayerScores[sCMHDZData.iRivalPart].fStarRatingForLevel[iLevel] ENDFUNC FUNC INT CMHDZ_GET_LOCAL_PLAYER_HI_SCORE_FOR_ALL_LEVELS() INT i, iScore REPEAT CMHDZ_MAX_LEVELS i iScore += CMHDZ_GET_LOCAL_PLAYER_HI_SCORE_FOR_LEVEL(i) ENDREPEAT RETURN iScore ENDFUNC FUNC INT CMHDZ_GET_LOCAL_PLAYER_HI_SCORE() RETURN CMHDZ_GET_LOCAL_PLAYER_HI_SCORE_FOR_LEVEL(CMHDZ_GET_CURRENT_LEVEL_AS_INT()) ENDFUNC FUNC INT GET_LOCAL_PLAYER_SCORE() INT iCurrentLevel = CMHDZ_GET_CURRENT_LEVEL_AS_INT() RETURN CMHDZ_GET_LOCAL_PLAYER_SCORE_FOR_LEVEL(iCurrentLevel) ENDFUNC FUNC INT CMHDZ_GET_PARTICIPANT_WITH_HIGHEST_HI_SCORE_FOR_CURRENT_LEVEL() INT iCurrentLevel = CMHDZ_GET_CURRENT_LEVEL_AS_INT() INT iRivalHiScore = CMHDZ_GET_RIVAL_HI_SCORE_FOR_LEVEL(iCurrentLevel) INT iMyHiScore = cmhdzServerBd.sPlayerScores[PARTICIPANT_ID_TO_INT()].iHiScoreForLevel[iCurrentLevel] IF iRivalHiScore > iMyHiScore RETURN CMHDZ_GET_RIVAL_PLAYER_PART_ID() ENDIF RETURN PARTICIPANT_ID_TO_INT() ENDFUNC FUNC INT CMHDZ_GET_LOCAL_PLAYER_TOTAL_SCORE() INT i, iScore REPEAT CMHDZ_MAX_LEVELS i iScore += CMHDZ_GET_LOCAL_PLAYER_HI_SCORE_FOR_LEVEL(i) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_GET_LOCAL_PLAYER_TOTAL_SCORE] Hi Score for level ", i, ": ", CMHDZ_GET_LOCAL_PLAYER_SCORE_FOR_LEVEL(i), " Total so far: ", iScore) ENDREPEAT RETURN iScore ENDFUNC FUNC INT CMHDZ_GET_SCORE_FOR_TYPE(CMHDZ_SCORE_TYPE score) SWITCH score CASE CMHDZ_SCORE_TYPE_ENEMY RETURN 100 CASE CMHDZ_SCORE_TYPE_ENEMY_HEADSHOT RETURN 150 CASE CMHDZ_SCORE_TYPE_ANIMAL RETURN 250 CASE CMHDZ_SCORE_TYPE_SCENERY RETURN 10 CASE CMHDZ_SCORE_TYPE_ENEMY_EXPLOSION RETURN 100 CASE CMHDZ_SCORE_TYPE_CASH RETURN 1000 CASE CMHDZ_SCORE_TYPE_TAPE RETURN 10000 CASE CMHDZ_SCORE_TYPE_BEARSY RETURN 5 CASE CMHDZ_SCORE_TYPE_BEARSY_KILL RETURN 10000 ENDSWITCH //CDEBUG2LN(DEBUG_MINIGAME, "[GET_SCORE_FOR_TYPE] {DSW} Unknown score type") RETURN 0 ENDFUNC FUNC INT CMHDZ_GET_PARTICIPANT_HI_SCORE_FOR_LEVEL(INT iPart, INT iLevel) IF NETWORK_IS_PARTICIPANT_ACTIVE(INT_TO_PARTICIPANTINDEX(iPart)) RETURN playerBd[iPart].iPlayerHiScore[iLevel] ENDIF RETURN 0 ENDFUNC FUNC INT CMHDZ_GET_PARTICIPANT_SCORE_FOR_LEVEL(INT iPart, INT iLevel) IF NETWORK_IS_PARTICIPANT_ACTIVE(INT_TO_PARTICIPANTINDEX(iPart)) RETURN playerBd[iPart].iPlayerScore[iLevel] ENDIF RETURN 0 ENDFUNC PROC CMHDZ_RESET_LOCAL_PLAYER_SCORE_FOR_LEVEL(INT iLevel) IF playerBd[PARTICIPANT_ID_TO_INT()].iPlayerScore[iLevel] != 0 playerBd[PARTICIPANT_ID_TO_INT()].iPlayerScore[iLevel] = 0 #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_RESET_LOCAL_PLAYER_SCORE_FOR_LEVEL] {DSW} Called for level ", iLevel) DEBUG_PRINTCALLSTACK() #ENDIF ENDIF ENDPROC PROC CMHDZ_RESET_LOCAL_PLAYER_SCORE_FOR_CURRENT_LEVEL() CMHDZ_RESET_LOCAL_PLAYER_SCORE_FOR_LEVEL(CMHDZ_GET_CURRENT_LEVEL_AS_INT()) ENDPROC PROC CMHDZ_ADD_TO_LOCAL_PLAYER_SCORE(CMHDZ_SCORE_TYPE score) INT iScoreToAdd = CMHDZ_GET_SCORE_FOR_TYPE(score) INT iCurrentLevel = CMHDZ_GET_CURRENT_LEVEL_AS_INT() //INT iChainBonus = 0 CMHDZ_INCREASE_PLAYER_SUCCESSIVE_HITS() INT iHits = CMHDZ_GET_PLAYER_SUCESSIVE_HITS() FLOAT fScoreMultiplier = 0.0 IF iHits > 1 fScoreMultiplier = TO_FLOAT(iHits) / 10.0 ENDIF CMHDZ_INCREASE_PLAYER_CHAINED_SCORE(iScoreToAdd) INT iChainedScore = CMHDZ_GET_PLAYER_CHAINED_SCORE() // Director dialogue triggers. IF iHits = 10 CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak) ENDIF IF iHits = 15 CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak_Long) ENDIF IF iHits = 25 CMHDZ_PLAY_DIRECTOR_DIALOGUE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Kill_Streak_Extreme) ENDIF IF iHits = 1 playerBd[PARTICIPANT_ID_TO_INT()].iPlayerScore[iCurrentLevel] += iScoreToAdd CMHDZ_SET_PREVIOUS_TARGET_SCORE(iScoreToAdd) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ADD_TO_LOCAL_PLAYER_SCORE] {dsw} No Chain. New score: ", playerBd[PARTICIPANT_ID_TO_INT()].iPlayerScore[iCurrentLevel]) CMHDZ_CLEAR_PLAYER_BIT(CMHDZ_PLAYER_BIT_INIT_NEW_CHAIN) ELSE IF NOT CMHDZ_IS_PLAYER_BIT_SET(CMHDZ_PLAYER_BIT_INIT_NEW_CHAIN) CMHDZ_SET_PLAYER_BIT(CMHDZ_PLAYER_BIT_INIT_NEW_CHAIN) CMHDZ_SET_PLAYER_NO_CHAIN_SCORE(playerBd[PARTICIPANT_ID_TO_INT()].iPlayerScore[iCurrentLevel] - CMHDZ_GET_PREVIOUS_TARGET_SCORE()) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ADD_TO_LOCAL_PLAYER_SCORE] New Chain started, storing score: ", CMHDZ_GET_PLAYER_NO_CHAIN_SCORE()) ENDIF iScoreToAdd = iChainedScore + ROUND(TO_FLOAT(iChainedScore) * fScoreMultiplier) playerBd[PARTICIPANT_ID_TO_INT()].iPlayerScore[iCurrentLevel] = CMHDZ_GET_PLAYER_NO_CHAIN_SCORE() + iScoreToAdd //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ADD_TO_LOCAL_PLAYER_SCORE] {dsw} New amount to add: ", iScoreToAdd, " Chained score: ", iChainedScore, " After multi applied: ", (iChainedScore * fScoreMultiplier), " New score: ", playerBd[PARTICIPANT_ID_TO_INT()].iPlayerScore[iCurrentLevel]) ENDIF IF CMHDZ_GET_LOCAL_PLAYER_HI_SCORE() < playerBd[PARTICIPANT_ID_TO_INT()].iPlayerScore[iCurrentLevel] playerBd[PARTICIPANT_ID_TO_INT()].iPlayerHiScore[iCurrentLevel] = playerBd[PARTICIPANT_ID_TO_INT()].iPlayerScore[iCurrentLevel] endif ENDPROC FUNC BOOL CMHDZ_IS_LOCAL_PLAYER_IN_LEFT_HAND_CABINET() RETURN GET_ARCADE_CABINET_LOCATE_PLAYER_SLOT_PLAYER_IS_IN(PLAYER_ID()) <= 0 ENDFUNC FUNC INT CMHDZ_GET_RED_PLAYER_SCORE_FOR_LEVEL(INT iLevel) IF GET_ARCADE_CABINET_LOCATE_PLAYER_SLOT_PLAYER_IS_IN(PLAYER_ID()) <= 0 RETURN CMHDZ_GET_LOCAL_PLAYER_SCORE_FOR_LEVEL(iLevel) ELSE RETURN CMHDZ_GET_RIVAL_SCORE_FOR_LEVEL(iLevel) ENDIF RETURN 0 ENDFUNC FUNC INT CMHDZ_GET_RED_PLAYER_HI_SCORE_FOR_LEVEL_FROM_HOST(INT iLevel) IF GET_ARCADE_CABINET_LOCATE_PLAYER_SLOT_PLAYER_IS_IN(PLAYER_ID()) <= 0 RETURN CMHDZ_GET_PARTICIPANT_HI_SCORE_FOR_LEVEL_FROM_HOST(PARTICIPANT_ID_TO_INT(), iLevel) ELSE RETURN CMHDZ_GET_PARTICIPANT_HI_SCORE_FOR_LEVEL_FROM_HOST(sCMHDZData.iRivalPart, iLevel) ENDIF RETURN 0 ENDFUNC FUNC INT CMHDZ_GET_BLUE_PLAYER_SCORE_FOR_LEVEL(INT iLevel) IF GET_ARCADE_CABINET_LOCATE_PLAYER_SLOT_PLAYER_IS_IN(PLAYER_ID()) = 1 RETURN CMHDZ_GET_LOCAL_PLAYER_SCORE_FOR_LEVEL(iLevel) ELSE RETURN CMHDZ_GET_RIVAL_SCORE_FOR_LEVEL(iLevel) ENDIF RETURN 0 ENDFUNC FUNC INT CMHDZ_GET_BLUE_PLAYER_HI_SCORE_FOR_LEVEL_FROM_HOST(INT iLevel) IF GET_ARCADE_CABINET_LOCATE_PLAYER_SLOT_PLAYER_IS_IN(PLAYER_ID()) = 1 RETURN CMHDZ_GET_PARTICIPANT_HI_SCORE_FOR_LEVEL_FROM_HOST(PARTICIPANT_ID_TO_INT(), iLevel) ELSE RETURN CMHDZ_GET_PARTICIPANT_HI_SCORE_FOR_LEVEL_FROM_HOST(sCMHDZData.iRivalPart, iLevel) ENDIF RETURN 0 ENDFUNC FUNC INT CMHDZ_GET_RED_PLAYER_HI_SCORE_FOR_ALL_LEVELS_FROM_HOST() INT i, iScore REPEAT CMHDZ_MAX_LEVELS i iScore += CMHDZ_GET_RED_PLAYER_HI_SCORE_FOR_LEVEL_FROM_HOST(i) ENDREPEAT RETURN iScore ENDFUNC FUNC INT CMHDZ_GET_BLUE_PLAYER_HI_SCORE_FOR_ALL_LEVELS_FROM_HOST() INT i, iScore REPEAT CMHDZ_MAX_LEVELS i iScore += CMHDZ_GET_BLUE_PLAYER_HI_SCORE_FOR_LEVEL_FROM_HOST(i) ENDREPEAT RETURN iScore ENDFUNC ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Levels Util ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// FUNC FLOAT CMHDZ_GET_LOCAL_PLAYER_HEALTH() #IF IS_DEBUG_BUILD IF GET_COMMANDLINE_PARAM_EXISTS("sc_BadlandsNoDeath") OR (CMHDZ_CMDLINE_NO_DEATH = 1) RETURN 1.0 ENDIF #ENDIF RETURN sCMHDZData.sPlayerData[0].fHealth ENDFUNC PROC CMHDZ_CLEAR_LEVEL_BIT_FOR_LEVEL(CMHDZ_LEVELS eLevel, CMHDZ_LEVELS_BITSET eBit) IF CMHDZ_IS_LEVEL_BIT_SET_FOR_LEVEL(eLevel, eBit) // #IF IS_DEBUG_BUILD // STRING sBit = CMHDZ_LEVELS_BITSET_TO_STRING(eBit) // STRING sLevel = CMHDZ_LEVELS_TO_STRING(eLevel) // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_CLEAR_LEVEL_BIT_FOR_LEVEL] {DSW} Set bit ", sBit, " For Level ", sLevel) // #ENDIF CLEAR_BIT(sCMHDZData.iLevelBitset[ENUM_TO_INT(sCMHDZData.eCurrentLevel)], ENUM_TO_INT(eBit)) ENDIF ENDPROC FUNC BOOL CMHDZ_IS_LEVEL_STOPPED() RETURN CMHDZ_IS_LEVEL_BIT_SET_FOR_CURRENT_LEVEL(CMHDZ_LEVELS_BIT_STOPPED) ENDFUNC FUNC BOOL CMHDZ_IS_LEADERBOARD_ACTIVE() IF (sCMHDZData.eClientState = CMHDZ_ARCADE_CLIENT_STATE_VIEW_LEADERBOARD) OR (sCMHDZData.eClientState = CMHDZ_ARCADE_CLIENT_STATE_EDIT_LEADERBOARD) RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL IS_MOVING_LEVEL() #IF IS_DEBUG_BUILD IF sCMHDZData.bStopMovingLevel OR sCMHDZData.bDebugPause RETURN FALSE ENDIF #ENDIF IF CMHDZ_GET_LOCAL_PLAYER_HEALTH() <= 0.0 RETURN FALSE ENDIF IF CMHDZ_IS_LEADERBOARD_ACTIVE() RETURN FALSE ENDIF IF NOT CMHDZ_IS_LEVEL_STOPPED() RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL CMHDZ_COVER_UTIL_IS_TYPE_LARGE_BUILDING(CMHDZ_ASSET_TYPES eCover) SWITCH eCover CASE CMHDZ_ASSET_CITY_BUILDING_1 CASE CMHDZ_ASSET_CITY_BUILDING_2 CASE CMHDZ_ASSET_CITY_BUILDING_3 CASE CMHDZ_ASSET_SCRAPYARD_MD_VAN_1 CASE CMHDZ_ASSET_THEMEPARK_BUILDING_3 CASE CMHDZ_ASSET_THEMEPARK_BUILDING_4 RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL CMHDZ_COVER_UTIL_IS_TYPE_SMALL_BUILDING(CMHDZ_ASSET_TYPES eCover) SWITCH eCover CASE CMHDZ_ASSET_SCRAPYARD_MD_VAN_2 CASE CMHDZ_ASSET_SCRAPYARD_MD_VAN_3 CASE CMHDZ_ASSET_SCRAPYARD_MD_VAN_4 CASE CMHDZ_ASSET_THEMEPARK_BUILDING_1 CASE CMHDZ_ASSET_THEMEPARK_BUILDING_2 RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC INT CMHDZ_GET_FINAL_SCREEN_IN_LEVEL(CMHDZ_LEVELS eLevel) SWITCH eLevel CASE CMHDZ_LEVEL_CITY RETURN 7 CASE CMHDZ_LEVEL_SCRAPYARD RETURN 6 CASE CMHDZ_LEVEL_ASYLUM RETURN 7 CASE CMHDZ_LEVEL_PARK RETURN 9 BREAK CASE CMHDZ_LEVEL_SLAUGHTERHOUSE RETURN 8 BREAK ENDSWITCH RETURN 0 ENDFUNC FUNC INT CMHDZ_GET_FINAL_SCREEN_IN_CURRENT_LEVEL() RETURN CMHDZ_GET_FINAL_SCREEN_IN_LEVEL(sCMHDZData.eCurrentLevel) ENDFUNC FUNC BOOL CMHDZ_IS_LEVEL_SCREEN_STATIONARY(CMHDZ_LEVELS eLevel, INT iScreen) IF (iScreen >= sCMHDZData.iLastScreenToStopOn) RETURN TRUE ENDIF //RETURN sCMHDZData.sStageEndData[iScreen].bStationary SWITCH eLevel // CASE CMHDZ_LEVEL_CITY // SWITCH iScreen // CASE 5 // RETURN TRUE // ENDSWITCH // BREAK CASE CMHDZ_LEVEL_SCRAPYARD SWITCH iScreen CASE 2 // Testing. Needs to be changed later. RETURN TRUE ENDSWITCH BREAK // CASE CMHDZ_LEVEL_ASYLUM SWITCH iScreen CASE 4 //(1855/cfCMHDZ_SCREEN_LENGTH) RETURN TRUE ENDSWITCH BREAK // CASE CMHDZ_LEVEL_PARK // SWITCH iScreen // CASE 5 // //CASE 12 // RETURN TRUE // ENDSWITCH // BREAK // // CASE CMHDZ_LEVEL_SLAUGHTERHOUSE // SWITCH iScreen // CASE 5 // //CASE 16 // RETURN TRUE // ENDSWITCH // BREAK ENDSWITCH RETURN (iScreen >= CMHDZ_GET_FINAL_SCREEN_IN_LEVEL(eLevel)) ENDFUNC FUNC BOOL CMHDZ_IS_CURRENT_LEVEL_SCREEN_STATIONARY() CMHDZ_LEVELS level = sCMHDZData.eCurrentLevel INT iScreen = sCMHDZData.iCurrentScreen RETURN CMHDZ_IS_LEVEL_SCREEN_STATIONARY(level, iScreen) ENDFUNC /// PURPOSE: /// Define the static screen phases for each stationary point. /// RETURNS: /// Always return 1 more than all the phases FUNC INT CMHDZ_GET_STATIC_SCREEN_PHASE_COUNT() IF CMHDZ_IS_LEVEL_SCREEN_STATIONARY(sCMHDZData.eCurrentLevel, sCMHDZData.iCurrentScreen) SWITCH sCMHDZData.eCurrentLevel CASE CMHDZ_LEVEL_CITY RETURN 4 CASE CMHDZ_LEVEL_SCRAPYARD RETURN 4 CASE CMHDZ_LEVEL_ASYLUM SWITCH sCMHDZData.iCurrentScreen CASE 3 RETURN 4 ENDSWITCH RETURN 4 // Final screen BREAK CASE CMHDZ_LEVEL_PARK RETURN 6 BREAK ENDSWITCH RETURN 3 ENDIF RETURN 0 ENDFUNC FUNC BOOL CMHDZ_IS_MOVING_LEVEL_ABOUT_TO_STOP() IF CMHDZ_IS_LEVEL_SCREEN_STATIONARY(sCMHDZData.eCurrentLevel, sCMHDZData.iCurrentScreen + 1) OR CMHDZ_GET_FINAL_SCREEN_IN_CURRENT_LEVEL() = (sCMHDZData.iCurrentScreen + 3) RETURN TRUE ENDIF RETURN FALSE ENDFUNC PROC CMHDZ_RESET_SCREEN_TO_STOP_ON() sCMHDZData.iLastScreenToStopOn = CMHDZ_GET_FINAL_SCREEN_IN_CURRENT_LEVEL() #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "{dsw} [CMHDZ_RESET_SCREEN_TO_STOP_ON] Called. last screen to stop on: ", sCMHDZData.iLastScreenToStopOn, " Callstack...") DEBUG_PRINTCALLSTACK() #ENDIF ENDPROC FUNC BOOL CMHDZ_IS_LEVEL_COMPLETED(CMHDZ_LEVELS level) RETURN sCMHDZData.bLevelsCompleted[ENUM_TO_INT(level)] ENDFUNC FUNC BOOL CMHDZ_ARE_FIRST_FOUR_LEVELS_COMPLETE() IF NOT CMHDZ_IS_LEVEL_COMPLETED(CMHDZ_LEVEL_CITY) OR NOT CMHDZ_IS_LEVEL_COMPLETED(CMHDZ_LEVEL_SCRAPYARD) OR NOT CMHDZ_IS_LEVEL_COMPLETED(CMHDZ_LEVEL_PARK) OR NOT CMHDZ_IS_LEVEL_COMPLETED(CMHDZ_LEVEL_ASYLUM) RETURN FALSE ENDIF RETURN TRUE ENDFUNC FUNC BOOL CMHDZ_ARE_ALL_LEVELS_COMPLETE() INT i REPEAT CMHDZ_MAX_LEVELS i IF NOT CMHDZ_IS_LEVEL_COMPLETED(INT_TO_ENUM(CMHDZ_LEVELS, i)) RETURN FALSE ENDIF ENDREPEAT RETURN TRUE ENDFUNC FUNC BOOL CMHDZ_WAS_ANY_LEVEL_REPLAYED() INT i REPEAT CMHDZ_MAX_LEVELS i IF CMHDZ_IS_LEVEL_BIT_SET_FOR_LEVEL(CMHDZ_GET_CURRENT_LEVEL(), CMHDZ_LEVELS_BIT_REPLAYING_LEVEL) #IF IS_DEBUG_BUILD CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_INCREASE_CURRENT_LEVEL_SCREEN] {DSW} This level was replayed: ", CMHDZ_LEVELS_TO_STRING(sCMHDZData.eCurrentLevel)) #ENDIF RETURN TRUE ENDIF ENDREPEAT RETURN FALSE ENDFUNC FUNC BOOL CMHDZ_WAS_A_SPECIAL_WEAPON_USED_ON_ANY_LEVEL() INT i REPEAT CMHDZ_MAX_LEVELS i IF CMHDZ_IS_LEVEL_BIT_SET_FOR_LEVEL(INT_TO_ENUM(CMHDZ_LEVELS, i), CMHDZ_LEVELS_BIT_USED_SPECIAL_WEAPON) #IF IS_DEBUG_BUILD CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_WAS_A_SPECIAL_WEAPON_USED_ON_ANY_LEVEL] {DSW} Special weapon was used on level: ", CMHDZ_LEVELS_TO_STRING(sCMHDZData.eCurrentLevel)) #ENDIF RETURN TRUE ENDIF ENDREPEAT RETURN FALSE ENDFUNC FUNC BOOL IS_LEVEL_UNLOCKED(CMHDZ_LEVELS level) #IF IS_DEBUG_BUILD IF GET_COMMANDLINE_PARAM_EXISTS("sc_BadlandsUnlockLvls") OR (CMHDZ_CMDLINE_UNLOCK_ALL_LEVELS = 1) RETURN TRUE ENDIF #ENDIF SWITCH level CASE CMHDZ_LEVEL_CITY CASE CMHDZ_LEVEL_SCRAPYARD RETURN TRUE BREAK CASE CMHDZ_LEVEL_ASYLUM RETURN TRUE // IF sCMHDZData.bLevelsCompleted[0] // OR sCMHDZData.bLevelsCompleted[1] // RETURN TRUE // ENDIF BREAK CASE CMHDZ_LEVEL_PARK // IF sCMHDZData.bLevelsCompleted[1] // OR sCMHDZData.bLevelsCompleted[2] RETURN TRUE // ENDIF BREAK CASE CMHDZ_LEVEL_SLAUGHTERHOUSE IF sCMHDZData.bLevelsCompleted[0] AND sCMHDZData.bLevelsCompleted[1] AND sCMHDZData.bLevelsCompleted[2] AND sCMHDZData.bLevelsCompleted[3] RETURN TRUE ENDIF BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL CMHDZ_IS_MENU_OPTION_UNLOCKED(CMHDZ_MENU_OPTIONS option) SWITCH option CASE CMHDZ_WANTED_3 RETURN IS_LEVEL_UNLOCKED(CMHDZ_LEVEL_ASYLUM) CASE CMHDZ_WANTED_4 RETURN IS_LEVEL_UNLOCKED(CMHDZ_LEVEL_PARK) CASE CMHDZ_WANTED_5 RETURN IS_LEVEL_UNLOCKED(CMHDZ_LEVEL_SLAUGHTERHOUSE) ENDSWITCH RETURN TRUE ENDFUNC PROC CMHDZ_SET_PLAYER_PED_ANIM_STATE(CMHDZ_PLAYER_PED_ANIM_STATE eNewState) //#IF IS_DEBUG_BUILD // STRING sCurrentState = CMHDZ_PLAYER_PED_ANIM_STATE_TO_STRING(sCMHDZData.ePlayerPedAnimState) // STRING sNewState = CMHDZ_PLAYER_PED_ANIM_STATE_TO_STRING(eNewState) // // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {BAZ} [CMHDZ_PROCESS_PLAYER_PED_ANIMS] CMHDZ_SET_PLAYER_PED_ANIM_STATE: ", sCurrentState, " -> ", sNewState ) //#ENDIF sCMHDZData.ePlayerPedAnimState = eNewState ENDPROC FUNC INT CMHDZ_GET_NUMBER_OF_PLAYERS() RETURN cmhdzServerBd.iNumPlayers ENDFUNC PROC CMHDZ_STORE_RIVAL_PLAYER_PART_ID() CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {BAZ} [CMHDZ_STORE_LOCAL_PLAYER_PART_ID] :", PARTICIPANT_ID_TO_INT()) IF PARTICIPANT_ID_TO_INT() = 0 //IF CMHDZ_IS_LOCAL_PLAYER_IN_LEFT_HAND_CABINET() sCMHDZData.iRivalPart = 1 ELSE sCMHDZData.iRivalPart = 0 ENDIF CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {BAZ} [CMHDZ_STORE_RIVAL_PLAYER_PART_ID] :", sCMHDZData.iRivalPart) ENDPROC PROC CMHDZ_INIT_SOUND() INT i REPEAT CMHDZ_AUDIO_EFFECT_MAX i sCMHDZData.iSoundId[i] = -1 ENDREPEAT ENDPROC ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Audio scenes ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// PROC CMHDZ_START_AUDIO_SCENE(CMHDZ_AUDIO_SCENE scene) SWITCH scene CASE CMHDZ_AUDIO_SCENE_MENUS //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_AUDIO_SCENE] [CMHDZ_START_AUDIO_SCENE] Starting scene CMHDZ_AUDIO_SCENE_MENUS / dlc_ch_am_CamH_in_menus_scene") START_AUDIO_SCENE("DLC_Tuner_AM_ch_in_menus_scene") BREAK CASE CMHDZ_AUDIO_SCENE_GAMEPLAY //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_AUDIO_SCENE] [CMHDZ_START_AUDIO_SCENE] Starting scene CMHDZ_AUDIO_SCENE_GAMEPLAY / dlc_ch_am_CamH_in_gameplay_scene") START_AUDIO_SCENE("DLC_Tuner_AM_ch_in_gameplay_scene") BREAK CASE CMHDZ_AUDIO_SCENE_POWERUP_ACTIVE //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_AUDIO_SCENE] [CMHDZ_START_AUDIO_SCENE] Starting scene CMHDZ_AUDIO_SCENE_POWERUP_ACTIVE / dlc_ch_badlands_revenge_powerup_active_scene") START_AUDIO_SCENE("DLC_Tuner_AM_ch_powerup_active_scene") BREAK #IF IS_DEBUG_BUILD CASE CMHDZ_AUDIO_SCENE_FORCE_MACHINE CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {BAZ} [CMHDZ_AUDIO_SCENE] [CMHDZ_START_AUDIO_SCENE] Starting scene CMHDZ_AUDIO_SCENE_FORCE_MACHINE / dlc_ch_arcade_machine_in_use_scene") START_AUDIO_SCENE("dlc_ch_arcade_machine_in_use_scene") BREAK #ENDIF ENDSWITCH ENDPROC PROC CMHDZ_STOP_AUDIO_SCENE(CMHDZ_AUDIO_SCENE scene) SWITCH scene CASE CMHDZ_AUDIO_SCENE_MENUS //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_AUDIO_SCENE] [CMHDZ_STOP_AUDIO_SCENE] Stopping scene CMHDZ_AUDIO_SCENE_MENUS / dlc_ch_am_CamH_in_menus_scene") STOP_AUDIO_SCENE("DLC_Tuner_AM_ch_in_menus_scene") BREAK CASE CMHDZ_AUDIO_SCENE_GAMEPLAY //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_AUDIO_SCENE] [CMHDZ_STOP_AUDIO_SCENE] Stopping scene CMHDZ_AUDIO_SCENE_GAMEPLAY / dlc_ch_am_CamH_in_gameplay_scene") STOP_AUDIO_SCENE("DLC_Tuner_AM_ch_in_gameplay_scene") BREAK CASE CMHDZ_AUDIO_SCENE_POWERUP_ACTIVE //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_AUDIO_SCENE] [CMHDZ_STOP_AUDIO_SCENE] Stopping scene CMHDZ_AUDIO_SCENE_GAMEPLAY / dlc_ch_am_CamH_in_gameplay_scene") STOP_AUDIO_SCENE("DLC_Tuner_AM_ch_powerup_active_scene") BREAK ENDSWITCH ENDPROC ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Help Text ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// FUNC BOOL CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BITS eHelp) RETURN IS_BIT_SET(sCMHDZData.iHelpTextBitset, ENUM_TO_INT(eHelp)) ENDFUNC PROC CMHDZ_SET_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BITS eHelp) IF NOT CMHDZ_IS_HELP_TEXT_BIT_SET(eHelp) // #IF IS_DEBUG_BUILD // STRING sHelp = CMHDZ_HELP_TEXT_BITS_TO_STRING(eHelp) // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SET_HELP_TEXT_BIT] Setting bit ", sHelp) // #ENDIF SET_BIT(sCMHDZData.iHelpTextBitset, ENUM_TO_INT(eHelp)) ENDIF ENDPROC PROC CMHDZ_CLEAR_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BITS eHelp) IF CMHDZ_IS_HELP_TEXT_BIT_SET(eHelp) // #IF IS_DEBUG_BUILD // STRING sHelp = CMHDZ_HELP_TEXT_BITS_TO_STRING(eHelp) // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_CLEAR_HELP_TEXT_BIT] Clearing bit ", sHelp) // #ENDIF CLEAR_BIT(sCMHDZData.iHelpTextBitset, ENUM_TO_INT(eHelp)) ENDIF ENDPROC FUNC FLOAT CMHDZ_GET_TTK_AWARD_TARGET_ACCURACY() RETURN TO_FLOAT(g_sMptunables.iARCADE_CMHDZ_TTK_SCORE) ENDFUNC FUNC INT CMHDZ_GET_FACES_OF_DEATH_AWARD_BRONZE_TARGET_SCORE() RETURN g_sMptunables.iARCADE_CMHDZ_FACES_OF_DEATH_BRONZE_SCORE // RETURN 5 ENDFUNC FUNC INT CMHDZ_GET_FACES_OF_DEATH_AWARD_SILVER_TARGET_SCORE() RETURN g_sMptunables.iARCADE_CMHDZ_FACES_OF_DEATH_SILVER_SCORE // RETURN 10 ENDFUNC FUNC INT CMHDZ_GET_FACES_OF_DEATH_AWARD_GOLD_TARGET_SCORE() RETURN g_sMptunables.iARCADE_CMHDZ_FACES_OF_DEATH_GOLD_SCORE // RETURN 20 ENDFUNC FUNC INT CMHDZ_GET_FACES_OF_DEATH_AWARD_PLATINUM_TARGET_SCORE() RETURN g_sMptunables.iARCADE_CMHDZ_FACES_OF_DEATH_PLATINUM_SCORE //RETURN 30 // RETURN CMHDZ_FACES_OF_DEATH_AWARD_PLATINUM_TARGET_SCORE ENDFUNC PROC CMHDZ_MAINTAIN_HELP_TEXT() // IF sCMHDZData.eClientState = CMHDZ_ARCADE_CLIENT_STATE_TITLE_SCREEN // OR sCMHDZData.eClientState = CMHDZ_ARCADE_CLIENT_STATE_LEVEL_SELECTION_MENU //ARCADE_GAMES_HELP_TEXT_PRINT_FOREVER(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_BEARSY) // Stop help dump // IF sAGHelpText.bDisplayingHelp // EXIT // ENDIF IF sCMHDZData.eClientState = CMHDZ_ARCADE_CLIENT_STATE_PLAYING // Don't process if the timer isn't 0. IF(sAGHelpText.iCurrentHelpTextExpiry - NATIVE_TO_INT(GET_NETWORK_TIME())) > 0.0 EXIT ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_SHOOT_AIM) //-- Aim / shoot //ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_TLGS_AIM_SHOOT) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_HELP_HOW_TO_FIRE) CMHDZ_CLEAR_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_SHOOT_AIM) // PLay after main controls are done. EXIT ENDIF //-- Reload IF NOT CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_RELOAD) AND sCMHDZData.sPlayerData[0].bShouldShowReloadPrompt ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_RELOAD) CMHDZ_SET_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_RELOAD) EXIT ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_THROW) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_THROWING_WEAPONS) CMHDZ_CLEAR_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_THROW) // PLay after main controls are done. EXIT ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_AT_LEAST_ONE_HEADSHOT) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_HEADSHOT) CMHDZ_CLEAR_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_AT_LEAST_ONE_HEADSHOT) // PLay after main controls are done. EXIT ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_DYNAMITE) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_DYNAMITE) CMHDZ_CLEAR_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_DYNAMITE) // PLay after main controls are done. EXIT ENDIF // Only fire microaim help if screen is static. IF NOT IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_MICROAIM) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_MICRO_AIM_EXPLANATION) CMHDZ_CLEAR_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_MICROAIM) // PLay after main controls are done. EXIT ENDIF ENDIF // POWER UPS // Weapons IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_SHOTGUN) AND NOT IS_ARRAYED_BIT_ENUM_SET(sAGHelpText.iHelpTextBitset, ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_WEAPON_SHOTGUN) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_WEAPON_SHOTGUN) ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_RIFLE) AND NOT IS_ARRAYED_BIT_ENUM_SET(sAGHelpText.iHelpTextBitset, ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_WEAPON_RIFLE) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_WEAPON_RIFLE) ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_NAIL) AND NOT IS_ARRAYED_BIT_ENUM_SET(sAGHelpText.iHelpTextBitset, ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_WEAPON_NAIL) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_WEAPON_NAIL) ENDIF // Projectiles IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_MOLOTOV) AND NOT IS_ARRAYED_BIT_ENUM_SET(sAGHelpText.iHelpTextBitset, ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_THROWING_MOLOTOV) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_THROWING_MOLOTOV) ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_NAILBOMB) AND NOT IS_ARRAYED_BIT_ENUM_SET(sAGHelpText.iHelpTextBitset, ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_THROWING_NAILBOMB) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_THROWING_NAILBOMB) ENDIF // Powerups IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_PAINKILLERS) AND NOT IS_ARRAYED_BIT_ENUM_SET(sAGHelpText.iHelpTextBitset, ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_POWER_PAINKILLER) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_POWER_PAINKILLER) ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_PILLS) AND NOT IS_ARRAYED_BIT_ENUM_SET(sAGHelpText.iHelpTextBitset, ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_POWER_PILLS) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_POWER_PILLS) ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_BUFF) AND NOT IS_ARRAYED_BIT_ENUM_SET(sAGHelpText.iHelpTextBitset, ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_POWER_BUFF) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_POWER_BUFF) ENDIF // Pickups IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_CASH) AND NOT IS_ARRAYED_BIT_ENUM_SET(sAGHelpText.iHelpTextBitset, ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_POWER_CASH) ARCADE_GAMES_HELP_TEXT_PRINT_WITH_NUMBER(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_POWER_CASH, CMHDZ_GET_SCORE_FOR_TYPE(CMHDZ_SCORE_TYPE_CASH)) ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_VIDEO) AND NOT IS_ARRAYED_BIT_ENUM_SET(sAGHelpText.iHelpTextBitset, ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_POWER_VIDEO) ARCADE_GAMES_HELP_TEXT_PRINT_WITH_NUMBER(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_POWER_VIDEO, CMHDZ_GET_SCORE_FOR_TYPE(CMHDZ_SCORE_TYPE_TAPE)) ENDIF // Final boss IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_BEARSY) AND NOT IS_ARRAYED_BIT_ENUM_SET(sAGHelpText.iHelpTextBitset, ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_BEARSY) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_BEARSY) ENDIF ENDIF // Awards IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_STRAIGHT_TO_VIDEO) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_STV) CMHDZ_CLEAR_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_STRAIGHT_TO_VIDEO) EXIT ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_TRAINED_TO_KILL) ARCADE_GAMES_HELP_TEXT_PRINT_WITH_NUMBER(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_TTK, ROUND(CMHDZ_GET_TTK_AWARD_TARGET_ACCURACY())) CMHDZ_CLEAR_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_TRAINED_TO_KILL) EXIT ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_MONKEY) ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_MONKEY) CMHDZ_CLEAR_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_MONKEY) EXIT ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_FOD_GOLD) ARCADE_GAMES_HELP_TEXT_PRINT_WITH_NUMBER(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_FOD, CMHDZ_GET_FACES_OF_DEATH_AWARD_GOLD_TARGET_SCORE()) CMHDZ_CLEAR_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_FOD_GOLD) EXIT ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_FOD_SILVER) ARCADE_GAMES_HELP_TEXT_PRINT_WITH_NUMBER(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_FOD, CMHDZ_GET_FACES_OF_DEATH_AWARD_SILVER_TARGET_SCORE()) CMHDZ_CLEAR_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_FOD_SILVER) EXIT ENDIF IF CMHDZ_IS_HELP_TEXT_BIT_SET(CMHDZ_HELP_TEXT_BIT_FOD_BRONZE) ARCADE_GAMES_HELP_TEXT_PRINT_WITH_NUMBER(ARCADE_GAMES_HELP_TEXT_ENUM_CMHDZ_FOD, CMHDZ_GET_FACES_OF_DEATH_AWARD_BRONZE_TARGET_SCORE()) CMHDZ_CLEAR_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_FOD_BRONZE) EXIT ENDIF ENDPROC ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Awards ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// PROC CMHDZ_AWARD_TRAINED_TO_KILL() SET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_TRAINED_TO_KILL, TRUE) SET_BIT(sCMHDZData.iChallengesBitsetForTelemetry, ENUM_TO_INT(CMHDZ_CHALLENGE_TRAINED_TO_KILL)) CMHDZ_PLAY_DIRECTOR_DIALOGUE_NO_RELEASE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_TTK) ARCADE_CABINET_FLOW_NOTIFICATIONS_SET_SHOW_TSHIRT_HELP(ARCADE_GAME_TSHIRTS_CAMHEDZ_TTK) CMHDZ_SET_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_TRAINED_TO_KILL) //SCRIPT_ASSERT("[CMHDZ][BAZ] CMHDZ_AWARD_TRAINED_TO_KILL") ENDPROC PROC CMHDZ_AWARD_STRAIGHT_TO_VIDEO() SET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_STRAIGHT_TO_VIDEO, TRUE) SET_BIT(sCMHDZData.iChallengesBitsetForTelemetry, ENUM_TO_INT(CMHDZ_CHALLENGE_STRAIGHT_TO_VIDEO)) IF NOT CMHDZ_HAS_SOUND_BEEN_TRIGGERED(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_TTK) CMHDZ_PLAY_DIRECTOR_DIALOGUE_NO_RELEASE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_STV) ENDIF ARCADE_CABINET_FLOW_NOTIFICATIONS_SET_SHOW_TSHIRT_HELP(ARCADE_GAME_TSHIRTS_CAMHEDZ_STV) CMHDZ_SET_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_STRAIGHT_TO_VIDEO) //SCRIPT_ASSERT("[CMHDZ][BAZ] CMHDZ_AWARD_STRAIGHT_TO_VIDEO") ENDPROC PROC CMHDZ_AWARD_FACES_OF_DEATH(INT iValue, BOOL bWonPlatinum) //SCRIPT_ASSERT("[CMHDZ][BAZ] CMHDZ_AWARD_FACES_OF_DEATH") SET_MP_INT_CHARACTER_AWARD(MP_AWARD_FACES_OF_DEATH,iValue) IF bWonPlatinum ARCADE_CABINET_FLOW_NOTIFICATIONS_SET_SHOW_TSHIRT_HELP(ARCADE_GAME_TSHIRTS_CAMHEDZ_FOD) IF NOT CMHDZ_HAS_SOUND_BEEN_TRIGGERED(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_STV) AND NOT CMHDZ_HAS_SOUND_BEEN_TRIGGERED(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_TTK) CMHDZ_PLAY_DIRECTOR_DIALOGUE_NO_RELEASE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_FOD) ENDIF ENDIF ENDPROC PROC CMHDZ_AWARD_MONKEY_C_MONKEY_DIE() //SCRIPT_ASSERT("[CMHDZ][BAZ] CMHDZ_AWARD_MONKEY_C_MONKEY_DIE") SET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_MONKEY_C_MONKEY_DO, TRUE) IF NOT CMHDZ_HAS_SOUND_BEEN_TRIGGERED(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_FOD) AND NOT CMHDZ_HAS_SOUND_BEEN_TRIGGERED(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_STV) AND NOT CMHDZ_HAS_SOUND_BEEN_TRIGGERED(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_TTK) CMHDZ_PLAY_DIRECTOR_DIALOGUE_NO_RELEASE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_MSMD) ENDIF CMHDZ_SET_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_MONKEY) ARCADE_CABINET_FLOW_NOTIFICATIONS_SET_SHOW_TSHIRT_HELP(ARCADE_GAME_TSHIRTS_CAMHEDZ_MCM) ENDPROC PROC CMHDZ_AWARD_THE_DIRECTOR() //SCRIPT_ASSERT("[CMHDZ][BAZ] CMHDZ_AWARD_THE_DIRECTOR") ARCADE_CABINET_FLOW_NOTIFICATIONS_SET_SHOW_TSHIRT_HELP(ARCADE_GAME_TSHIRTS_CAMHEDZ_TD) SET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_DIRECTOR, TRUE) IF NOT CMHDZ_HAS_SOUND_BEEN_TRIGGERED(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_MSMD) AND NOT CMHDZ_HAS_SOUND_BEEN_TRIGGERED(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_FOD) AND NOT CMHDZ_HAS_SOUND_BEEN_TRIGGERED(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_STV) AND NOT CMHDZ_HAS_SOUND_BEEN_TRIGGERED(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_TTK) CMHDZ_PLAY_DIRECTOR_DIALOGUE_NO_RELEASE(CMHDZ_AUDIO_EFFECT_DIRECTOR_Award_TD) ENDIF CMHDZ_SET_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_DIRECTOR) ENDPROC PROC CMHDZ_MAINTAIN_PLAYER_AWARDS() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Called...") //-- Kev says the rp is handled at his side BOOL bMonkeyAwarded = FALSE BOOL bTrainedToKillAwarded = FALSE BOOL bStraightToVideoAwarded = FALSE BOOL bTheDirectorAwarded = FALSE BOOL bFacesOfDeathAwarded = FALSE //-- SET_MP_INT_CHARACTER_AWARD(MP_AWARD_FACES_OF_DEATH) // // Kill X Eagles across all levels of ‘Light Gun Game’. //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Check MP_AWARD_FACES_OF_DEATH:") //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Bronze target: ", CMHDZ_GET_FACES_OF_DEATH_AWARD_BRONZE_TARGET_SCORE()) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Silver target: ", CMHDZ_GET_FACES_OF_DEATH_AWARD_SILVER_TARGET_SCORE()) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Gold target: ", CMHDZ_GET_FACES_OF_DEATH_AWARD_GOLD_TARGET_SCORE()) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Platinum target: ", CMHDZ_GET_FACES_OF_DEATH_AWARD_PLATINUM_TARGET_SCORE()) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Birds killed: ", iBirdsShot) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Stat value: ", iFACES_OF_DEATH) BOOL bCanAwardGold, bAwardGold BOOL bCanAwardSilver, bAwardSilver BOOL bCanAwardBronze, bAwardBronze FLOAT fAccuracy = CMHDZ_GET_PLAYER_ACCURACY_FOR_ALL_LEVELS() FLOAT fTargetAccuracy = CMHDZ_GET_TTK_AWARD_TARGET_ACCURACY() IF NOT GET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_TRAINED_TO_KILL) //IF CMHDZ_ARE_ALL_LEVELS_COMPLETE() IF NOT CMHDZ_WAS_ANY_LEVEL_REPLAYED() IF fAccuracy > fTargetAccuracy CMHDZ_AWARD_TRAINED_TO_KILL() //bTrainedToKillAwarded = TRUE //CMHDZ_SET_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_TRAINED_TO_KILL) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] {DSW} Awarding MP_AWARD_DEADEYE fAccuracy: ", fAccuracy) ELSE //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Not awarding MP_AWARD_DEADEYE as accuracy:", fAccuracy) ENDIF ELSE //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Not awarding MP_AWARD_DEADEYE as a level was replayed") ENDIF // ELSE // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Not awarding MP_AWARD_DEADEYE as not CMHDZ_ARE_ALL_LEVELS_COMPLETE") // ENDIF ENDIF bTrainedToKillAwarded = GET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_TRAINED_TO_KILL) //-- Complete ‘Light Gun Game’ using only pistols. //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS]") //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Check MP_AWARD_PISTOLSATDAWN:") IF NOT GET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_STRAIGHT_TO_VIDEO) IF CMHDZ_ARE_ALL_LEVELS_COMPLETE() IF NOT CMHDZ_WAS_ANY_LEVEL_REPLAYED() IF NOT CMHDZ_WAS_A_SPECIAL_WEAPON_USED_ON_ANY_LEVEL() CMHDZ_AWARD_STRAIGHT_TO_VIDEO() //CMHDZ_SET_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_STRAIGHT_TO_VIDEO) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] {DSW} Awarding MP_AWARD_PISTOLSATDAWN. ") ELSE //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Not awarding MP_AWARD_PISTOLSATDAWN as CMHDZ_WAS_A_SPECIAL_WEAPON_USED_ON_ANY_LEVEL") ENDIF ELSE //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Not awarding MP_AWARD_PISTOLSATDAWN as CMHDZ_WAS_ANY_LEVEL_REPLAYED") ENDIF ELSE //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Not awarding MP_AWARD_PISTOLSATDAWN as not CMHDZ_ARE_ALL_LEVELS_COMPLETE") ENDIF //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Already awarded MP_AWARD_PISTOLSATDAWN") ENDIF bStraightToVideoAwarded = GET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_STRAIGHT_TO_VIDEO) // Faces of Death INT iHeadshotCount iHeadshotCount += sCMHDZData.iTotalLevelEnemyHeadShots[CMHDZ_LEVEL_CITY] iHeadshotCount += sCMHDZData.iTotalLevelEnemyHeadShots[CMHDZ_LEVEL_SCRAPYARD] iHeadshotCount += sCMHDZData.iTotalLevelEnemyHeadShots[CMHDZ_LEVEL_ASYLUM] iHeadshotCount += sCMHDZData.iTotalLevelEnemyHeadShots[CMHDZ_LEVEL_PARK] iHeadshotCount += sCMHDZData.iTotalLevelEnemyHeadShots[CMHDZ_LEVEL_SLAUGHTERHOUSE] INT iFODOldValue = GET_MP_INT_CHARACTER_AWARD(MP_AWARD_FACES_OF_DEATH) CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] FACES_OF_DEATH new total: ", iHeadshotCount, " Old: ",iFODOldValue) IF iHeadshotCount > iFODOldValue IF iHeadshotCount >= CMHDZ_GET_FACES_OF_DEATH_AWARD_PLATINUM_TARGET_SCORE() SET_BIT(sCMHDZData.iChallengesBitsetForTelemetry, ENUM_TO_INT(CMHDZ_CHALLENGE_FACES_OF_DEATH_PLATINUM)) CMHDZ_AWARD_FACES_OF_DEATH(iHeadshotCount, TRUE) ELSE //-- Can only give an award if the old toltal was below the threshhold score for that award IF iFODOldValue < CMHDZ_GET_FACES_OF_DEATH_AWARD_GOLD_TARGET_SCORE() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Sharshooter: bCanAwardGold set") bCanAwardGold = TRUE ENDIF IF iFODOldValue < CMHDZ_GET_FACES_OF_DEATH_AWARD_SILVER_TARGET_SCORE() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Sharshooter: bCanAwardSilver set") bCanAwardSilver = TRUE ENDIF IF iFODOldValue < CMHDZ_GET_FACES_OF_DEATH_AWARD_BRONZE_TARGET_SCORE() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Sharshooter: bCanAwardBronze Set") bCanAwardBronze = TRUE ENDIF IF bCanAwardGold IF iHeadshotCount >= CMHDZ_GET_FACES_OF_DEATH_AWARD_GOLD_TARGET_SCORE() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Sharshooter: bAwardGold set") bAwardGold = TRUE ENDIF ENDIF IF bCanAwardSilver IF iHeadshotCount >= CMHDZ_GET_FACES_OF_DEATH_AWARD_SILVER_TARGET_SCORE() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Sharshooter: bAwardSilver set") bAwardSilver = TRUE ENDIF ENDIF IF bCanAwardBronze IF iHeadshotCount >= CMHDZ_GET_FACES_OF_DEATH_AWARD_BRONZE_TARGET_SCORE() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Sharshooter: bAwardBronze set") bAwardBronze = TRUE ENDIF ENDIF IF bAwardGold CMHDZ_SET_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_FOD_GOLD) SET_BIT(sCMHDZData.iChallengesBitsetForTelemetry, ENUM_TO_INT(CMHDZ_CHALLENGE_FACES_OF_DEATH_GOLD)) ELIF bAwardSilver CMHDZ_SET_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_FOD_SILVER) SET_BIT(sCMHDZData.iChallengesBitsetForTelemetry, ENUM_TO_INT(CMHDZ_CHALLENGE_FACES_OF_DEATH_SILVER)) ELIF bAwardBronze CMHDZ_SET_HELP_TEXT_BIT(CMHDZ_HELP_TEXT_BIT_FOD_BRONZE) SET_BIT(sCMHDZData.iChallengesBitsetForTelemetry, ENUM_TO_INT(CMHDZ_CHALLENGE_FACES_OF_DEATH_BRONZE)) ENDIF CMHDZ_AWARD_FACES_OF_DEATH(iHeadshotCount, FALSE) ENDIF ENDIF // Passed the platinum threshold. IF GET_MP_INT_CHARACTER_AWARD(MP_AWARD_FACES_OF_DEATH) > CMHDZ_GET_FACES_OF_DEATH_AWARD_PLATINUM_TARGET_SCORE() bFacesOfDeathAwarded = TRUE ENDIF // IF NOT GET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_FACES_OF_DEATH) // GET_MP_INT_CHARACTER_AWARD(MP_AWARD_FACES_OF_DEATH) // ENDIF IF CMHDZ_IS_LEVEL_BIT_SET_FOR_LEVEL(CMHDZ_LEVEL_CITY, CMHDZ_LEVELS_BIT_CHALLENGE_MONKEY_C_MONKEY_DIE_MONKEY_KILL) AND CMHDZ_IS_LEVEL_BIT_SET_FOR_LEVEL(CMHDZ_LEVEL_SCRAPYARD, CMHDZ_LEVELS_BIT_CHALLENGE_MONKEY_C_MONKEY_DIE_BUNNY_KILL) AND CMHDZ_IS_LEVEL_BIT_SET_FOR_LEVEL(CMHDZ_LEVEL_ASYLUM, CMHDZ_LEVELS_BIT_CHALLENGE_MONKEY_C_MONKEY_DIE_BUNNY_KILL) AND CMHDZ_IS_LEVEL_BIT_SET_FOR_LEVEL(CMHDZ_LEVEL_PARK, CMHDZ_LEVELS_BIT_CHALLENGE_MONKEY_C_MONKEY_DIE_MONKEY_KILL) IF NOT GET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_MONKEY_C_MONKEY_DO) CMHDZ_AWARD_MONKEY_C_MONKEY_DIE() SET_BIT(sCMHDZData.iChallengesBitsetForTelemetry, ENUM_TO_INT(CMHDZ_CHALLENGE_MONKEY_C_MONKEY_DIE)) ENDIF ENDIF // Check reward bMonkeyAwarded = GET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_MONKEY_C_MONKEY_DO) // The Director IF CMHDZ_IS_STAR_RATING_5_FOR_ALL_LEVELS() IF NOT GET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_DIRECTOR) CMHDZ_AWARD_THE_DIRECTOR() SET_BIT(sCMHDZData.iChallengesBitsetForTelemetry, ENUM_TO_INT(CMHDZ_CHALLENGE_THE_DIRECTOR)) ENDIF ENDIF bTheDirectorAwarded = GET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_DIRECTOR) //-- T-shirt / trophy for completing everything BOOL bOwnsPenthouse IF bStraightToVideoAwarded AND bTrainedToKillAwarded AND bTheDirectorAwarded AND bMonkeyAwarded AND bFacesOfDeathAwarded bOwnsPenthouse = DOES_PLAYER_OWN_A_CASINO_APARTMENT(PLAYER_ID()) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_MAINTAIN_PLAYER_AWARDS] Everything achieved, unlocking final t-shirt / trophy. Penthouse? ", bOwnsPenthouse) IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_AWARD_BEARSY_MASK) ARCADE_CABINET_FLOW_NOTIFICATIONS_SET_SHOW_TROPHY_HELP(ARCADE_GAME_TROPHY_CAMHEDZ, bOwnsPenthouse) SET_PACKED_STAT_BOOL(PACKED_MP_AWARD_BEARSY_MASK, TRUE) ENDIF sCMHDZData.bWonTrophyThisSession = TRUE ENDIF ENDPROC ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Util ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// FUNC BOOL CMHDZ_SHOULD_REMOVE_COVER_WHEN_OFF_SCREEN(INT iCover) UNUSED_PARAMETER(iCover) //CMHDZ_ASSET_TYPES eType = sCMHDZData.sCoverData[iCover].eType // Delete if from repeat if we're near the end of the loop IF sCMHDZData.iCurrentScreen + 2 >= CMHDZ_GET_FINAL_SCREEN_IN_CURRENT_LEVEL() RETURN TRUE ENDIF IF IS_BITMASK_ENUM_AS_ENUM_SET(sCMHDZData.sCoverData[iCover].eDataBits, CMHDZ_COVER_DATA_BITS_REMOVE_OFF_SCREEN) RETURN TRUE ENDIF SWITCH sCMHDZData.sCoverData[iCover].eType // CASE CMHDZ_ASSET_OUTHOUSE CASE CMHDZ_ASSET_PIG IF sCMHDZData.sCoverData[iCover].iHitCount > 0 RETURN TRUE ENDIF BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL CMHDZ_COVER_UTIL_IS_TYPE_BUILDING(CMHDZ_ASSET_TYPES eCover) RETURN (CMHDZ_COVER_UTIL_IS_TYPE_LARGE_BUILDING(eCover) OR CMHDZ_COVER_UTIL_IS_TYPE_SMALL_BUILDING(eCover)) ENDFUNC FUNC BOOL CMHDZ_COVER_UTIL_SHOULD_CHECK_FOR_PED_BEHIND_TYPE(CMHDZ_ASSET_TYPES eCover) SWITCH eCover CASE CMHDZ_ASSET_PIG CASE CMHDZ_ASSET_WATER_TOWER CASE CMHDZ_ASSET_CITY_BUILDING_1 CASE CMHDZ_ASSET_CITY_BUILDING_2 CASE CMHDZ_ASSET_CITY_BUILDING_3 CASE CMHDZ_ASSET_SCRAPYARD_MD_VAN_1 CASE CMHDZ_ASSET_THEMEPARK_TREE_1 CASE CMHDZ_ASSET_THEMEPARK_TREE_2 CASE CMHDZ_ASSET_THEMEPARK_TREE_3 CASE CMHDZ_ASSET_THEMEPARK_TREE_4 CASE CMHDZ_ASSET_BARRIER CASE CMHDZ_ASSET_MEATGRINDER_1 CASE CMHDZ_ASSET_MEATGRINDER_2 CASE CMHDZ_ASSET_BODYBAG_3 CASE CMHDZ_ASSET_BODYBAG_2 CASE CMHDZ_ASSET_BODYBAG_1 // CASE CMHDZ_ASSET_SCRAPYARD_MD_VAN_2 // CASE CMHDZ_ASSET_SCRAPYARD_MD_VAN_3 // CASE CMHDZ_ASSET_SCRAPYARD_MD_VAN_4 // CASE CMHDZ_ASSET_THEMEPARK_BUILDING_1 RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC FLOAT CMHDZ_COVER_UTIL_GET_TYPE_SCALE_FOR_LANE(CMHDZ_ASSET_TYPES eType, INT iLane) FLOAT fScale = 1.0 UNUSED_PARAMETER(eType) SWITCH iLane CASE ciCMHDZ_LANE_BACKGROUND fScale = 0.75 BREAK CASE ciCMHDZ_LANE_FOREGROUND fScale = 2.5 BREAK CASE ciCMHDZ_LANE_POPUP_RHS CASE ciCMHDZ_LANE_POPUP_LHS fScale = 0.75 BREAK ENDSWITCH RETURN fScale ENDFUNC PROC SET_ENEMY_NEW_STOPPING_POINT_AFTER_BLOCKED_COVER(INT iEnemy, INT iBlockingCover) FLOAT fCoverWidth = sCMHDZData.sCoverData[iBlockingCover].fCoverWidth FLOAT fNewXOffset //FLOAT fScale // FLOAT fTemp1 //FLOAT fTemp2 // FLOAT fEnemyX = sCMHDZData.sEnemyData[iEnemy].vSpritePos.x // FLOAT fEnemyWidth = sCMHDZData.sEnemyData[iEnemy].vSize.x INT iLane = sCMHDZData.sEnemyData[iEnemy].iEnemyLane BOOL bReverse = CMHDZ_ENEMY_DATA_IS_BITMASK_SET(iEnemy, CMHDZ_ENEMY_DATA_BITS_REVERSE) #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_HANDLE_ENEMIES] [CMHDZ_ENEMY_STATE_ACTIVE] [SET_ENEMY_NEW_STOPPING_POINT_AFTER_BLOCKED_COVER] {dsw} ") //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_HANDLE_ENEMIES] [CMHDZ_ENEMY_STATE_ACTIVE] [SET_ENEMY_NEW_STOPPING_POINT_AFTER_BLOCKED_COVER] {dsw} Enemy: ",iEnemy, " Old Stopping pos: ", sCMHDZData.sEnemyData[iEnemy].fStoppingX, " Lane: ",sCMHDZData.sEnemyData[iEnemy].iEnemyLane, " Type:", CMHDZ_ENEMY_TYPES_TO_STRING(sCMHDZData.sEnemyData[iEnemy].iEnemyType)," Blocked by cover. ", iBlockingCover, " Cover Type: ", CMHDZ_ASSET_TYPES_TO_STRING(sCMHDZData.sCoverData[iBlockingCover].eType), " Width / 2: ", (fCoverWidth/2.0)) #ENDIF SWITCH CMHDZ_GET_CURRENT_LEVEL() CASE CMHDZ_LEVEL_ASYLUM fNewXOffset = cfBASE_SCREEN_WIDTH IF NOT bReverse sCMHDZData.sEnemyData[iEnemy].fStoppingX -= fNewXOffset ELSE sCMHDZData.sEnemyData[iEnemy].fStoppingX += fNewXOffset ENDIF BREAK CASE CMHDZ_LEVEL_SLAUGHTERHOUSE IF iLane = ciCMHDZ_LANE_BACKGROUND IF bReverse sCMHDZData.sEnemyData[iEnemy].fStoppingX += 16.0 //(fEnemyX - fTemp2) - fEnemyWidth ELSE sCMHDZData.sEnemyData[iEnemy].fStoppingX -= 20.0 //(fTemp1 - fEnemyX) + fEnemyWidth ENDIF ELIF iLane = ciCMHDZ_LANE_MIDDLE IF bReverse sCMHDZData.sEnemyData[iEnemy].fStoppingX += 11.0 //(fEnemyX - fTemp2) - fEnemyWidth ELSE sCMHDZData.sEnemyData[iEnemy].fStoppingX -= 15.0 //(fTemp1 - fEnemyX) + fEnemyWidth ENDIF ENDIF BREAK DEFAULT fNewXOffset = fCoverWidth * 0.75 IF NOT bReverse sCMHDZData.sEnemyData[iEnemy].fStoppingX -= fNewXOffset ELSE sCMHDZData.sEnemyData[iEnemy].fStoppingX += fNewXOffset ENDIF BREAK ENDSWITCH #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_HANDLE_ENEMIES] [CMHDZ_ENEMY_STATE_ACTIVE] [SET_ENEMY_NEW_STOPPING_POINT_AFTER_BLOCKED_COVER] {dsw} Reverse: ", bReverse, " New stopping pos: ", sCMHDZData.sEnemyData[iEnemy].fStoppingX, " Current Pos: ", sCMHDZData.sEnemyData[iEnemy].vSpritePos.x) #ENDIF ENDPROC FUNC BOOL CMHDZ_IS_COORD_BLOCKED_BY_COVER(INT iLane, FLOAT fXCoord, INT &iBlockingCover) INT i #IF IS_DEBUG_BUILD // FLOAT fTemp1, fTemp2 #ENDIF FLOAT fScale REPEAT ciCMHDZ_MAX_COVER i IF sCMHDZData.sCoverData[i].iCoverLane = iLane IF CMHDZ_COVER_UTIL_SHOULD_CHECK_FOR_PED_BEHIND_TYPE(sCMHDZData.sCoverData[i].eType) fScale = CMHDZ_COVER_UTIL_GET_TYPE_SCALE_FOR_LANE(sCMHDZData.sCoverData[i].eType, iLane) #IF IS_DEBUG_BUILD IF sCMHDZData.sCoverData[i].eType = CMHDZ_ASSET_PIG // fTemp1 = sCMHDZData.sCoverData[i].vSpritePos.x + ((sCMHDZData.sCoverData[i].fCoverWidth * fScale) / 2.0) // fTemp2 = sCMHDZData.sCoverData[i].vSpritePos.x - ((sCMHDZData.sCoverData[i].fCoverWidth * fScale) / 2.0) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_IS_COORD_BLOCKED_BY_COVER] Checking PIG ", i, " Lane: ", iLane, " Pos: ", sCMHDZData.sCoverData[i].vSpritePos.x, " +Width/2: ", fTemp1, " -Width/2: ", fTemp2, " Compare with ", fXCoord) ELIF sCMHDZData.sCoverData[i].eType = CMHDZ_ASSET_THEMEPARK_TREE_2 // fTemp1 = sCMHDZData.sCoverData[i].vSpritePos.x + ((sCMHDZData.sCoverData[i].fCoverWidth * fScale) / 2.0) // fTemp2 = sCMHDZData.sCoverData[i].vSpritePos.x - ((sCMHDZData.sCoverData[i].fCoverWidth * fScale) / 2.0) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_IS_COORD_BLOCKED_BY_COVER] Checking TREE2 ", i, " Lane: ", iLane, " Pos: ", sCMHDZData.sCoverData[i].vSpritePos.x, " +Width/2: ", fTemp1, " -Width/2: ", fTemp2, " Compare with ", fXCoord) ENDIF #ENDIF FLOAT fMaxCover = sCMHDZData.sCoverData[i].vSpritePos.x + ((sCMHDZData.sCoverData[i].fCoverWidth * fScale) / 2.0) FLOAT fMinCover = sCMHDZData.sCoverData[i].vSpritePos.x - ((sCMHDZData.sCoverData[i].fCoverWidth * fScale) / 2.0) IF fXCoord >= fMinCover AND fXCoord <= fMaxCover #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_IS_COORD_BLOCKED_BY_COVER] {DSW} X Coord ", fXCoord, " Lane: ", iLane, " Blocked by cover ", i, " Type: ", CMHDZ_ASSET_TYPES_TO_STRING(sCMHDZData.sCoverData[i].eType), " Cover X pos:", sCMHDZData.sCoverData[i].vSpritePos.x, " Width / 2: ", ((sCMHDZData.sCoverData[i].fCoverWidth * fScale) / 2.0)) #ENDIF iBlockingCover = i RETURN TRUE ENDIF ENDIF #IF IS_DEBUG_BUILD ELSE IF sCMHDZData.sCoverData[i].eType = CMHDZ_ASSET_PIG // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_IS_COORD_BLOCKED_BY_COVER] Not Checking CMHDZ_ASSET_PIG", i, " as cover lane ", sCMHDZData.sCoverData[i].iCoverLane, " <> ", iLane) ELIF sCMHDZData.sCoverData[i].eType = CMHDZ_ASSET_THEMEPARK_TREE_2 // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_IS_COORD_BLOCKED_BY_COVER] Not Checking TREE2", i, " as cover lane ", sCMHDZData.sCoverData[i].iCoverLane, " <> ", iLane) ENDIF #ENDIF ENDIF ENDREPEAT RETURN FALSE ENDFUNC FUNC BOOL CMHDZ_COVER_UTIL_IS_TYPE_SUITABLE_FOR_COVER(CMHDZ_ASSET_TYPES eType) SWITCH eType CASE CMHDZ_ASSET_BARRELS CASE CMHDZ_ASSET_FENCE CASE CMHDZ_ASSET_ROCK_SMALL CASE CMHDZ_ASSET_ROCK_LARGE CASE CMHDZ_ASSET_BUSH_2 CASE CMHDZ_ASSET_SPECIAL_TNT_BARREL_1 CASE CMHDZ_ASSET_FOREGROUND_TRASH RETURN TRUE BREAK CASE CMHDZ_ASSET_MEATGRINDER_1 CASE CMHDZ_ASSET_MEATGRINDER_2 RETURN TRUE BREAK CASE CMHDZ_ASSET_BUSH_1 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL CMHDZ_IS_POSITION_ON_SCREEN(VECTOR_2D vPos, FLOAT fTolerance = 0.0) FLOAT fMinOnScreen = cfLEFT_SCREEN_LIMIT + fTolerance FLOAT fMaxOnScreen = cfRIGHT_SCREEN_LIMIT - fTolerance // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_IS_POSITION_ON_SCREEN] ") // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_IS_POSITION_ON_SCREEN] fMinOnScreen: ",fMinOnScreen, " fMaxOnScreen: ", fMaxOnScreen) // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_IS_POSITION_ON_SCREEN] vPos.x : ", vPos.x ) RETURN (vPos.x > fMinOnScreen AND vPos.x < fMaxOnScreen) ENDFUNC FUNC BOOL CMHDZ_IS_COVER_ON_SCREEN(INT iCover, FLOAT fTolerance = 0.0) RETURN CMHDZ_IS_POSITION_ON_SCREEN(sCMHDZData.sCoverData[iCover].vSpritePos, fTolerance) ENDFUNC FUNC BOOL CMHDZ_IS_ENEMY_ON_SCREEN(INT iEnemy, FLOAT fTolerance = 0.0) RETURN CMHDZ_IS_POSITION_ON_SCREEN(sCMHDZData.sEnemyData[iEnemy].vSpritePos, fTolerance) ENDFUNC /// PURPOSE: /// As the enemy ped passes scenery, check if the scenery can be used as 'cover' /// PARAMS: /// iCover - /// iEnemy - /// RETURNS: /// FUNC BOOL CMHDZ_IS_COVER_SUITABLE_FOR_ENEMY_TO_USE(INT iCover, INT iEnemy) IF sCMHDZData.sEnemyData[iEnemy].iEnemyLane = ciCMHDZ_LANE_FOREGROUND RETURN FALSE ENDIF IF CMHDZ_COVER_DATA_IS_BITMASK_SET(iCover, CMHDZ_COVER_DATA_BITS_IS_FAR_BG) RETURN FALSE ENDIF // //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_IS_COVER_SUITABLE_FOR_ENEMY_TO_USE] Enemy ", iEnemy, " Cover: ", iCover) CMHDZ_ASSET_TYPES eCover = sCMHDZData.sCoverData[iCover].eType //-- Can't use cover that's in a different lane IF sCMHDZData.sEnemyData[iEnemy].iEnemyLane != sCMHDZData.sCoverData[iCOver].iCoverLane ////CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_IS_COVER_SUITABLE_FOR_ENEMY_TO_USE] Enemy ", iEnemy, " NOT Stopping to use cover ", iCover, " Cover type: ", CMHDZ_ASSET_TYPES_TO_STRING(eCover), " Lane doesn't match. Enemy Lane: ", sCMHDZData.sEnemyData[iEnemy].iEnemyLane, " Cover Lane :", sCMHDZData.sCoverData[iCOver].iCoverLane) RETURN FALSE ENDIF //-- Some cover types not suitable for cover IF NOT CMHDZ_COVER_UTIL_IS_TYPE_SUITABLE_FOR_COVER(eCover) ////CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_IS_COVER_SUITABLE_FOR_ENEMY_TO_USE] Enemy ", iEnemy, " NOT Stopping to use cover ", iCover, " Cover type: ", CMHDZ_ASSET_TYPES_TO_STRING(eCover), " Type not suitable for cover ") RETURN FALSE ENDIF VECTOR_2D vEnemy = sCMHDZData.sEnemyData[iEnemy].vSpritePos VECTOR_2D vCover = sCMHDZData.sCoverData[iCover].vSpritePos FLOAT fCoverWidth = sCMHDZData.sCoverData[iCover].fCoverWidth FLOAT fMaxCover FLOAT fMinCover FLOAT fScale = CMHDZ_COVER_UTIL_GET_TYPE_SCALE_FOR_LANE(eCover, sCMHDZData.sCoverData[iCOver].iCoverLane) fCoverWidth *= fScale FLOAT fYDiff = ABSF(vEnemy.y - vCover.y) IF NOT CMHDZ_IS_COVER_ON_SCREEN(iCover) ////CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_IS_COVER_SUITABLE_FOR_ENEMY_TO_USE] Enemy ", iEnemy, " NOT Stopping to use cover ", iCover, " Cover type: ", CMHDZ_ASSET_TYPES_TO_STRING(eCover), " Cover not on screen") RETURN FALSE ENDIF BOOL bFromLeft = CMHDZ_ENEMY_DATA_IS_BITMASK_SET(iEnemy, CMHDZ_ENEMY_DATA_BITS_REVERSE) //-- Don't stop too close to cover that's just appeared / about to leave the screen IF bFromLeft IF vCover.x < cfBASE_SCREEN_WIDTH / 3.0 ////CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_IS_COVER_SUITABLE_FOR_ENEMY_TO_USE] Enemy ", iEnemy, " NOT Stopping to use cover ", iCover, " Cover type: ", CMHDZ_ASSET_TYPES_TO_STRING(eCover), " as enemy coming from left and cover < cfBASE_SCREEN_WIDTH / 3") RETURN FALSE ENDIF ELSE IF vCover.x > cfRIGHT_SCREEN_LIMIT - 100 ////CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_IS_COVER_SUITABLE_FOR_ENEMY_TO_USE] Enemy ", iEnemy, " NOT Stopping to use cover ", iCover, " Cover type: ", CMHDZ_ASSET_TYPES_TO_STRING(eCover), " as enemy coming from right and cover nearly at RHS") RETURN FALSE ENDIF ENDIF //-- Cover in the same lane should have a similar Y position to enemies in the same lane. Occasionally doesn't, mainly for draw-order reasons, //-- so don't use any cover where there is a large difference in the y position IF fYDiff > 175.0 ////CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_IS_COVER_SUITABLE_FOR_ENEMY_TO_USE] Enemy ", iEnemy, " NOT Stopping to use cover ", iCover, " Cover type: ", CMHDZ_ASSET_TYPES_TO_STRING(eCover), " Y Diff too great: ", fYDiff) RETURN FALSE ENDIF //-- Check if we're actually passing any cover fMaxCover = (vCover.x + ( fCoverWidth / 2.0) )// + 10.0 fMinCover = (vCover.x - ( fCoverWidth / 2.0 ))// - 10.0 IF vEnemy.x > fMinCover AND vEnemy.x < fMaxCover #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_IS_COVER_SUITABLE_FOR_ENEMY_TO_USE] [CMHDZ_HANDLE_ENEMIES] Enemy ", iEnemy, " Stopping to use cover ", iCover, " Cover type: ", CMHDZ_ASSET_TYPES_TO_STRING(eCover), " Enemy pos: ", sCMHDZData.sEnemyData[iEnemy].vSpritePos.x) #ENDIF RETURN TRUE ELSE ////CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_IS_COVER_SUITABLE_FOR_ENEMY_TO_USE] Enemy ", iEnemy, " NOT Stopping to use cover ", iCover, " Cover type: ", CMHDZ_ASSET_TYPES_TO_STRING(eCover), " Xpos not sufficient. Enemy x: ", vEnemy.x, " Cover Min: ", fMinCover, " Cover Max: ", fMaxCover) ENDIF RETURN FALSE ENDFUNC FUNC BOOL CMHDZ_SHOULD_COUNT_ENEMY_AS_ALIVE(INT iEnemy) IF sCMHDZData.sEnemyData[iEnemy].eState != CMHDZ_ENEMY_STATE_INACTIVE RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC INT CMHDZ_GET_TOTAL_NUMBER_OF_ENEMIES_LEFT_ALIVE_FOR_CURRENT_SCREEN() INT i, iCount FOR i = 0 TO ciCMHDZ_MAX_ENEMIES - 1 // IF CMHDZ_SHOULD_COUNT_ENEMY_AS_ALIVE(i) // CDEBUG2LN(DEBUG_MINIGAME, "[BAZ] CMHDZ_GET_TOTAL_NUMBER_OF_ENEMIES_LEFT_ALIVE_FOR_CURRENT_SCREEN - Enemy Alive position X", sCMHDZData.sEnemyData[i].vSpritePos.x) // ENDIF IF sCMHDZData.sEnemyData[i].fPointToAppear <= sCMHDZData.fOverallLevelProgression //AND sCMHDZData.sEnemyData[i].fPointToAppear >= sCMHDZData.fOverallLevelProgression + ((cfRIGHT_SCREEN_LIMIT + cfLEFT_SCREEN_LIMIT)/2) AND CMHDZ_SHOULD_COUNT_ENEMY_AS_ALIVE(i) iCount ++ ENDIF ENDFOR RETURN iCount ENDFUNC FUNC INT CMHDZ_GET_TOTAL_NUMBER_OF_ENEMIES_LEFT_ALIVE_FOR_LEVEL() INT i, iCount FOR i = 0 TO ciCMHDZ_MAX_ENEMIES - 1 IF CMHDZ_SHOULD_COUNT_ENEMY_AS_ALIVE(i) iCount ++ ENDIF ENDFOR RETURN iCount ENDFUNC FUNC INT CMHDZ_GET_TOTAL_NUMBER_OF_ENEMIES_LEFT_ALIVE_FOR_SCREEN() INT i, iCount FOR i = 0 TO ciCMHDZ_MAX_ENEMIES - 1 IF CMHDZ_SHOULD_COUNT_ENEMY_AS_ALIVE(i) AND sCMHDZData.iCurrentScreen = FLOOR(sCMHDZData.sEnemyData[i].fPointToAppear / cfCMHDZ_SCREEN_LENGTH) AND CMHDZ_ENEMY_DATA_IS_BITMASK_SET(i, CMHDZ_ENEMY_DATA_BITS_WAIT_UNTIL_LEVEL_STATIONARY) iCount ++ ENDIF IF sCMHDZData.iCurrentScreen >= CMHDZ_GET_FINAL_SCREEN_IN_CURRENT_LEVEL() - 1 AND CMHDZ_ENEMY_DATA_IS_BITMASK_SET(i, CMHDZ_ENEMY_DATA_BITS_WAIT_UNTIL_LEVEL_STATIONARY) CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ][BAZ] CMHDZ_GET_TOTAL_NUMBER_OF_ENEMIES_LEFT_ALIVE_FOR_SCREEN - ", iCount) ENDIF ENDFOR // Adding 1 for if Boss enemy is alive IF sCMHDZData.eCurrentLevel = CMHDZ_LEVEL_SLAUGHTERHOUSE AND sCMHDZData.sBossData.eCurrentBossState != CMHDZ_BOSS_STATE_FINAL AND sCMHDZData.iCurrentScreen >= CMHDZ_GET_FINAL_SCREEN_IN_LEVEL(CMHDZ_LEVEL_SLAUGHTERHOUSE) iCount ++ CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ][BAZ] CMHDZ_GET_TOTAL_NUMBER_OF_ENEMIES_LEFT_ALIVE_FOR_SCREEN - Adding Boss iCount: ", iCount) ENDIF RETURN iCount ENDFUNC FUNC INT CMHDZ_GET_TOTAL_NUMBER_OF_ENEMIES_LEFT_ALIVE_FOR_CURRENT_PHASE() IF sCMHDZData.eCurrentLevel = CMHDZ_LEVEL_SLAUGHTERHOUSE AND CMHDZ_GET_CURRENT_LEVEL_SCREEN() >= CMHDZ_GET_FINAL_SCREEN_IN_CURRENT_LEVEL() AND sCMHDZData.sBossData.eCurrentBossState != CMHDZ_BOSS_STATE_WAIT_FOR_ALL_ENEMIES_DEAD RETURN 1 ENDIF INT i, iCount FOR i = 0 TO ciCMHDZ_MAX_ENEMIES - 1 IF sCMHDZData.sEnemyData[i].iStaticScreenPhase > 0 AND sCMHDZData.iStaticScreenPhase = sCMHDZData.sEnemyData[i].iStaticScreenPhase AND sCMHDZData.iCurrentScreen = FLOOR(sCMHDZData.sEnemyData[i].fPointToAppear / cfCMHDZ_SCREEN_LENGTH) AND CMHDZ_ENEMY_DATA_IS_BITMASK_SET(i, CMHDZ_ENEMY_DATA_BITS_WAIT_UNTIL_LEVEL_STATIONARY) AND CMHDZ_SHOULD_COUNT_ENEMY_AS_ALIVE(i) iCount ++ ENDIF ENDFOR IF iCount > 0 CDEBUG2LN(DEBUG_MINIGAME, "CMHDZ_GET_TOTAL_NUMBER_OF_ENEMIES_LEFT_ALIVE_FOR_CURRENT_PHASE - iCount: ", iCount) ENDIF RETURN iCount ENDFUNC FUNC FLOAT CMHDZ_GET_ENEMY_TYPE_SCALE_FOR_LANE(INT iLane) FLOAT fScale = 1.0 IF iLane = ciCMHDZ_LANE_BACKGROUND fScale = 0.9 ELIF iLane = ciCMHDZ_LANE_MIDDLE fScale = 1.2 ELIF iLane = ciCMHDZ_LANE_FOREGROUND fScale = 1.2 ELIF iLane = ciCMHDZ_LANE_POPUP_RHS OR iLane = ciCMHDZ_LANE_POPUP_LHS fScale = 0.9 ENDIF RETURN fScale ENDFUNC PROC CMHDZ_KILL_ALL_ENEMIES_IN_RANGE(VECTOR_2D vPos, FLOAT fMaxDist = 250.0) INT i VECTOR_2D vEnemyPos FLOAT fXDist FLOAT fYDist FLOAT fDist2 BOOL bKilledEnemy REPEAT ciCMHDZ_MAX_ENEMIES i IF sCMHDZData.sEnemyData[i].eState = CMHDZ_ENEMY_STATE_ACTIVE OR sCMHDZData.sEnemyData[i].eState = CMHDZ_ENEMY_STATE_ATTACKING // IF sCMHDZData.sEnemyData[i].iEnemyType != CMHDZ_OUTHOUSE_ENEMY vEnemyPos = sCMHDZData.sEnemyData[i].vSpritePos fXDist = vEnemyPos.x - vPos.x fYDist = vEnemyPos.y - vPos.y fDist2 = (fXDist * fXDist) + (fYDist * fYDist) //CPRINTLN(DEBUG_MINIGAME, "[CMHDZ_KILL_ALL_ENEMIES_IN_RANGE] {DSW} Checking Enemy ", i, " Dist: ", SQRT(fDist2)) IF (fDist2 <= (fMaxDist * fMaxDist)) // IF vEnemyPos.x >= x1 AND vEnemyPos.y >= y1 // IF vEnemyPos.x <= x2 AND vEnemyPos.y <= y2 sCMHDZData.sEnemyData[i].iHealth = 0 sCMHDZData.sEnemyData[i].fAnimTimer = 0.0 sCMHDZData.sEnemyData[i].eState = CMHDZ_ENEMY_STATE_DYING_BURNING // If the projectile type is a Molotov CMHDZ_ADD_TO_LOCAL_PLAYER_SCORE(CMHDZ_SCORE_TYPE_ENEMY_EXPLOSION) bKilledEnemy = TRUE #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_KILL_ALL_ENEMIES_IN_RANGE] {dsw} Enemy ", i, " set as Dying as killed by explosion. Type: ", CMHDZ_ENEMY_TYPES_TO_STRING(sCMHDZData.sEnemyData[i].iEnemyType)) #ENDIF // ENDIF ENDIF // ENDIF ENDIF ENDREPEAT // Just one to avoid sound clipping IF bKilledEnemy CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_ENEMY_ON_FIRE) ENDIF ENDPROC PROC CMHDZ_KILL_ALL_ENEMIES_IN_RANGE_NO_SCORE(VECTOR_2D vPos, FLOAT fMaxDist = 2000.0) INT i VECTOR_2D vEnemyPos FLOAT fXDist FLOAT fYDist FLOAT fDist2 REPEAT ciCMHDZ_MAX_ENEMIES i IF sCMHDZData.sEnemyData[i].eState = CMHDZ_ENEMY_STATE_ACTIVE OR sCMHDZData.sEnemyData[i].eState = CMHDZ_ENEMY_STATE_ATTACKING // IF sCMHDZData.sEnemyData[i].iEnemyType != CMHDZ_OUTHOUSE_ENEMY vEnemyPos = sCMHDZData.sEnemyData[i].vSpritePos fXDist = vEnemyPos.x - vPos.x fYDist = vEnemyPos.y - vPos.y fDist2 = (fXDist * fXDist) + (fYDist * fYDist) //CPRINTLN(DEBUG_MINIGAME, "[CMHDZ_KILL_ALL_ENEMIES_IN_RANGE] {DSW} Checking Enemy ", i, " Dist: ", SQRT(fDist2)) IF (fDist2 <= (fMaxDist * fMaxDist)) // IF vEnemyPos.x >= x1 AND vEnemyPos.y >= y1 // IF vEnemyPos.x <= x2 AND vEnemyPos.y <= y2 sCMHDZData.sEnemyData[i].iHealth = 0 sCMHDZData.sEnemyData[i].fAnimTimer = 0.0 sCMHDZData.sEnemyData[i].eState = CMHDZ_ENEMY_STATE_DYING // If the projectile type is a Molotov //CMHDZ_ADD_TO_LOCAL_PLAYER_SCORE(CMHDZ_SCORE_TYPE_ENEMY_EXPLOSION) #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_KILL_ALL_ENEMIES_IN_RANGE] {dsw} Enemy ", i, " set as Dying as killed by explosion. Type: ", CMHDZ_ENEMY_TYPES_TO_STRING(sCMHDZData.sEnemyData[i].iEnemyType)) #ENDIF // ENDIF ENDIF // ENDIF ENDIF ENDREPEAT ENDPROC PROC CMHDZ_STUN_ENEMIES_IN_RANGE(VECTOR_2D vPos, FLOAT fMaxDist = 250.0) INT i VECTOR_2D vEnemyPos FLOAT fXDist FLOAT fYDist FLOAT fDist2 REPEAT ciCMHDZ_MAX_ENEMIES i IF sCMHDZData.sEnemyData[i].eState = CMHDZ_ENEMY_STATE_ACTIVE OR sCMHDZData.sEnemyData[i].eState = CMHDZ_ENEMY_STATE_ATTACKING // IF sCMHDZData.sEnemyData[i].iEnemyType != CMHDZ_OUTHOUSE_ENEMY vEnemyPos = sCMHDZData.sEnemyData[i].vSpritePos fXDist = vEnemyPos.x - vPos.x fYDist = vEnemyPos.y - vPos.y fDist2 = (fXDist * fXDist) + (fYDist * fYDist) //CPRINTLN(DEBUG_MINIGAME, "[CMHDZ_KILL_ALL_ENEMIES_IN_RANGE] {DSW} Checking Enemy ", i, " Dist: ", SQRT(fDist2)) IF (fDist2 <= (fMaxDist * fMaxDist)) AND sCMHDZData.sEnemyData[i].iHealth > 0 IF sCMHDZData.sEnemyData[i].iEnemyLane != ciCMHDZ_LANE_POPUP_LHS AND sCMHDZData.sEnemyData[i].iEnemyLane != ciCMHDZ_LANE_POPUP_RHS sCMHDZData.sEnemyData[i].eState = CMHDZ_ENEMY_STATE_STUNNED // If the projectile type is a Nailbomb sCMHDZData.sEnemyData[i].fAnimTimer = 4000.0 CMHDZ_PLAY_ENEMY_TYPE_SOUND_AND_RELEASE(sCMHDZData.sEnemyData[i].iEnemyType, CMHDZ_AUDIO_EFFECT_ENEMY_INJURED, sCMHDZData.sEnemyData[i].vSpritePos, sCMHDZData.sEnemyData[i].iEnemyVoiceID) ELSE // Just kill popup enemies sCMHDZData.sEnemyData[i].iHealth = 0 sCMHDZData.sEnemyData[i].fAnimTimer = 0.0 sCMHDZData.sEnemyData[i].eState = CMHDZ_ENEMY_STATE_DYING // If the projectile type is a Molotov CMHDZ_ADD_TO_LOCAL_PLAYER_SCORE(CMHDZ_SCORE_TYPE_ENEMY) ENDIF ENDIF ENDIF ENDREPEAT ENDPROC FUNC INT CMHDZ_GET_CLOSEST_PROP_TO_COORD(VECTOR_2D vCoord) FLOAT distanceX, distanceY, fDistance FLOAT fDistanceToCheck = 120.0 FLOAT fClosest = 99999999.0 INT iClosest = -1 INT i REPEAT ciCMHDZ_MAX_COVER i distanceX = vCoord.x - sCMHDZData.sCoverData[i].vSpritePos.x distanceY = vCoord.y - sCMHDZData.sCoverData[i].vSpritePos.y fDistance = SQRT(distanceX * distanceX + distanceY * distanceY) IF fDistance <= fDistanceToCheck IF fDistance <= fClosest fClosest = fDistance iClosest = i ENDIF ENDIF ENDREPEAT RETURN iClosest ENDFUNC FUNC BOOL CMHDZ_IS_PLAYER_PLAYING() RETURN sCMHDZData.eClientState = CMHDZ_ARCADE_CLIENT_STATE_PLAYING ENDFUNC FUNC FLOAT CMHDZ_GET_PLAYER_DAMAGE_FOR_TYPE(CMHDZ_DAMAGE_PLAYER_TYPES eType) SWITCH eType CASE CMHDZ_DAMAGE_PLAYER_TYPE_BULLET RETURN 0.1 CASE CMHDZ_DAMAGE_PLAYER_TYPE_DYNAMITE RETURN 0.3 CASE CMHDZ_DAMAGE_PLAYER_TYPE_SLASH RETURN 0.2 ENDSWITCH RETURN 0.0 ENDFUNC PROC CMHDZ_DAMAGE_PLAYER(CMHDZ_DAMAGE_PLAYER_TYPES eType, FLOAT fModifier = 1.0) #IF IS_DEBUG_BUILD IF (sCMHDZData.bDebugInvunerablePlayer) sCMHDZData.fSyncOffsetY = 0.0 EXIT ENDIF #ENDIF // No damage if in Tutorial stage IF CMHDZ_IS_LEADERBOARD_ACTIVE() EXIT ENDIF IF CMHDZ_IS_PLAYER_BIT_SET(CMHDZ_PLAYER_BIT_INVULNERABILE) #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_DAMAGE_PLAYER] Not Damaging as CMHDZ_PLAYER_BIT_INVULNERABILE is set") #ENDIF EXIT ENDIF // Already being damaged. Don't process. IF eType = CMHDZ_DAMAGE_PLAYER_TYPE_BULLET AND sCMHDZData.sPlayerData[0].fHitCountdown > 0 EXIT ENDIF // Reset score combo IF CMHDZ_GET_PLAYER_SUCESSIVE_HITS() != 1 CMHDZ_RESET_PLAYER_SUCCESSIVE_HITS() ENDIF FLOAT fDamage = CMHDZ_GET_PLAYER_DAMAGE_FOR_TYPE(eType) #IF IS_DEBUG_BUILD //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_DAMAGE_PLAYER] Called. Type: ", CMHDZ_DAMAGE_PLAYER_TYPES_TO_STRING(eType), " Damage: ", fDamage, " Modifier: ", fModifier) #ENDIF fDamage *= fModifier sCMHDZData.sPlayerData[0].fHealth = CLAMP(sCMHDZData.sPlayerData[0].fHealth - fDamage, 0.0, 1.0) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_DAMAGE_PLAYER] New health: ", sCMHDZData.sPlayerData[0].fHealth) //-- Play audio for player taking damage IF sCMHDZData.sPlayerData[0].fHealth > 0.0 CMHDZ_PLAY_PLAYER_TAKE_DAMAGE_AUDIO(sCMHDZData.sPlayerData[0].fHealth) ENDIF CMHDZ_PLAY_SOUND_AND_RELEASE_NO_POSITION(CMHDZ_AUDIO_EFFECT_MUSIC_TRANSITION) // Play music event for getting hit CMHDZ_TRIGGER_MUSIC_EVENT_HIT_RANDOM() // Will likely need decreasing in final. SWITCH eType CASE CMHDZ_DAMAGE_PLAYER_TYPE_BULLET sCMHDZData.sPlayerData[0].fHitCountdown = 100.0 sCMHDZData.fSyncOffsetY = 80.0 BREAK CASE CMHDZ_DAMAGE_PLAYER_TYPE_DYNAMITE sCMHDZData.sPlayerData[0].fHitCountdown = 150.0 sCMHDZData.fSyncOffsetY = 200.0 sCMHDZData.sPlayerData[0].bHeavyDamageState = TRUE BREAK CASE CMHDZ_DAMAGE_PLAYER_TYPE_SLASH sCMHDZData.sPlayerData[0].fHitCountdown = 100.0 sCMHDZData.fSyncOffsetY = 200.0 sCMHDZData.sPlayerData[0].bHeavyDamageState = TRUE BREAK ENDSWITCH IF sCMHDZData.sPlayerData[0].fHealth = 0 sCMHDZData.sPlayerData[0].fHitCountdown = 1000.0 // ELSE // sCMHDZData.sPlayerData[0].fHitCountdown = 200.0 ENDIF ENDPROC FUNC BOOL CMHDZ_SHOULD_SKIP_LEADERBOARD() // url:bugstar:6153380 - [R4062] Arcade Games - Badlands Revenge II - A UGC restricted sub account can view the high score initials posted by another player (and vice versa) IF NOT IS_ACCOUNT_OVER_17_FOR_UGC() //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SHOULD_SKIP_LEADERBOARD] True - IS_ACCOUNT_OVER_17_FOR_UGC") RETURN TRUE ENDIF RETURN FALSE ENDFUNC PROC CMHDZ_SEND_TELEMETRY() IF NOT NETWORK_IS_GAME_IN_PROGRESS() EXIT ENDIF // url:bugstar:6118446 - Telemetry - Script - Please add a new metric that triggers at the end of the new arcade game[Badlands Revenge II] added for Casino Heist STRUCT_ARCADE_CABINET sTelemetry INT i sTelemetry.gameType = HASH("ARCADE_CABINET_SE_CAMHEDZ") sTelemetry.matchId = cmhdzServerBd.iMatchId IF PLAYER_ID() != INVALID_PLAYER_INDEX() SWITCH GET_SIMPLE_INTERIOR_TYPE_LOCAL_PLAYER_IS_IN() CASE SIMPLE_INTERIOR_TYPE_ARCADE sTelemetry.location = HASH("SIMPLE_INTERIOR_TYPE_ARCADE") BREAK CASE SIMPLE_INTERIOR_TYPE_AUTO_SHOP sTelemetry.location = HASH("SIMPLE_INTERIOR_TYPE_AUTO_SHOP") BREAK #IF FEATURE_FIXER #IF FEATURE_MUSIC_STUDIO CASE SIMPLE_INTERIOR_TYPE_MUSIC_STUDIO sTelemetry.location = HASH("SIMPLE_INTERIOR_TYPE_MUSIC_STUDIO") BREAK #ENDIF #ENDIF DEFAULT CDEBUG1LN(DEBUG_MINIGAME, "[[CMHDZ_ARCADE] [CMHDZ_SEND_TELEMETRY] not in valid arcade location, setting sRoadArcadeTelemetry.location = 0") sTelemetry.location = 0 BREAK ENDSWITCH ELSE CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] [CMHDZ_SEND_TELEMETRY] Invalid Player ID, setting sTelemetry.location = 0") sTelemetry.location = 0 ENDIF IF IS_BIT_SET(cmhdzServerBd.iServerBitset, ENUM_TO_INT(CMHDZ_SERVER_BIT_TWO_PLAYERS_JOINED)) sTelemetry.numPlayers = 2 ELSE sTelemetry.numPlayers = 1 ENDIF IF CMHDZ_ARE_ALL_LEVELS_COMPLETE() sTelemetry.level = 5 ELSE REPEAT CMHDZ_MAX_LEVELS i IF CMHDZ_GET_LOCAL_PLAYER_HI_SCORE_FOR_LEVEL(i) = 0 sTelemetry.level = i - 1 IF sTelemetry.level < 1 sTelemetry.level = 1 ENDIF BREAKLOOP ENDIF ENDREPEAT ENDIF sTelemetry.kills = CMHDZ_GET_TOTAL_ENEMY_HITS_FOR_ALL_LEVELS() //+ CMHDZ_GET_TOTAL_NUMBER_OF_BIRDS_KILLED_FOR_ALL_LEVELS() sTelemetry.timePlayed = GET_GAME_TIMER() - sCMHDZData.iTotalTimePlayed sTelemetry.score = CMHDZ_GET_LOCAL_PLAYER_HI_SCORE_FOR_ALL_LEVELS() // CMHDZ_CHALLENGE_FACES_OF_DEATH = 0 // CMHDZ_CHALLENGE_TRAINED_TO_KILL, // CMHDZ_CHALLENGE_STRAIGHT_TO_VIDEO sTelemetry.challenges = sCMHDZData.iChallengesBitsetForTelemetry sTelemetry.powerUps = CMHDZ_GET_TOTAL_NUMBER_OF_POWERUPS_COLLECTED_FOR_ALL_LEVELS() IF sCMHDZData.bWonTrophyThisSession sTelemetry.reward = ARCADE_GAME_GET_TROPHY_ID_FOR_TELEMETRY(ARCADE_GAME_TROPHY_CAMHEDZ) ELSE sTelemetry.reward = 0 ENDIf //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SEND_TELEMETRY]") //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SEND_TELEMETRY] sTelemetry.gameType: ", sTelemetry.gameType) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SEND_TELEMETRY] sTelemetry.matchId: ", sTelemetry.matchId) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SEND_TELEMETRY] sTelemetry.numPlayers: ", sTelemetry.numPlayers) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SEND_TELEMETRY] sTelemetry.level: ", sTelemetry.level) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SEND_TELEMETRY] sTelemetry.kills: ", sTelemetry.kills) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SEND_TELEMETRY] sTelemetry.timePlayed: ", sTelemetry.timePlayed) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SEND_TELEMETRY] sTelemetry.score: ", sTelemetry.score) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SEND_TELEMETRY] sTelemetry.challenges: ", sTelemetry.score) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SEND_TELEMETRY] sTelemetry.powerUps: ", sTelemetry.powerUps) //CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ_ARCADE] {DSW} [CMHDZ_SEND_TELEMETRY] sTelemetry.reward: ", sTelemetry.reward) PLAYSTATS_ARCADE_CABINET(sTelemetry) ENDPROC // Boss Control FUNC VECTOR_2D CMHDZ_BOSS_GET_SPRITE_SIZES(CMHDZ_SPRITE eSprite) SWITCH eSprite CASE CMHDZ_SPRITE_BEARSY_WALK_FRAME_01 CASE CMHDZ_SPRITE_BEARSY_WALK_FRAME_02 CASE CMHDZ_SPRITE_BEARSY_WALK_FRAME_03 CASE CMHDZ_SPRITE_BEARSY_WALK_FRAME_04 CASE CMHDZ_SPRITE_BEARSY_WALK_FRAME_05 CASE CMHDZ_SPRITE_BEARSY_WALK_FRAME_IDLE CASE CMHDZ_SPRITE_BEARSY_THROWING_01 CASE CMHDZ_SPRITE_BEARSY_THROWING_02 CASE CMHDZ_SPRITE_BEARSY_THROWING_03 CASE CMHDZ_SPRITE_BEARSY_BACKGROUND_STAGGERED RETURN INIT_VECTOR_2D(340, 544) CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_01 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_02 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_03 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_04 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_IDLE_05 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_STAGGERED RETURN INIT_VECTOR_2D(708, 600) CASE CMHDZ_SPRITE_BEARSY_DEATH_01 CASE CMHDZ_SPRITE_BEARSY_DEATH_02 RETURN INIT_VECTOR_2D(900, 600) CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_01 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_02 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_03 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_04 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_05 RETURN INIT_VECTOR_2D(708, 784) CASE CMHDZ_SPRITE_BEARSY_FORE_PAIN_1 CASE CMHDZ_SPRITE_BEARSY_FORE_PAIN_2 CASE CMHDZ_SPRITE_BEARSY_FORE_PAIN_3 CASE CMHDZ_SPRITE_BEARSY_FORE_PAIN_4 CASE CMHDZ_SPRITE_BEARSY_FORE_PAIN_5 CASE CMHDZ_SPRITE_BEARSY_FORE_PAIN_6 RETURN INIT_VECTOR_2D(708, 784) CASE CMHDZ_SPRITE_BEARSY_BONE_HIT_01 CASE CMHDZ_SPRITE_BEARSY_BONE_HIT_02 CASE CMHDZ_SPRITE_BEARSY_LEG_HIT_01 CASE CMHDZ_SPRITE_BEARSY_LEG_HIT_02 CASE CMHDZ_SPRITE_BEARSY_TROTTER_HIT_01 CASE CMHDZ_SPRITE_BEARSY_TROTTER_HIT_02 RETURN INIT_VECTOR_2D(520, 504) CASE CMHDZ_SPRITE_BEARSY_BONE_LARGE_01 CASE CMHDZ_SPRITE_BEARSY_BONE_LARGE_02 CASE CMHDZ_SPRITE_BEARSY_LEG_LARGE_01 CASE CMHDZ_SPRITE_BEARSY_LEG_LARGE_02 CASE CMHDZ_SPRITE_BEARSY_TROTTER_LARGE_01 CASE CMHDZ_SPRITE_BEARSY_TROTTER_LARGE_02 RETURN INIT_VECTOR_2D(472, 452) CASE CMHDZ_SPRITE_BEARSY_BONE_MED_01 CASE CMHDZ_SPRITE_BEARSY_BONE_MED_02 CASE CMHDZ_SPRITE_BEARSY_LEG_MED_01 CASE CMHDZ_SPRITE_BEARSY_LEG_MED_02 CASE CMHDZ_SPRITE_BEARSY_TROTTER_MED_01 CASE CMHDZ_SPRITE_BEARSY_TROTTER_MED_02 RETURN INIT_VECTOR_2D(316, 304) CASE CMHDZ_SPRITE_BEARSY_BONE_SMALL_01 CASE CMHDZ_SPRITE_BEARSY_BONE_SMALL_02 CASE CMHDZ_SPRITE_BEARSY_LEG_SMALL_01 CASE CMHDZ_SPRITE_BEARSY_LEG_SMALL_02 CASE CMHDZ_SPRITE_BEARSY_TROTTER_SMALL_01 CASE CMHDZ_SPRITE_BEARSY_TROTTER_SMALL_02 RETURN INIT_VECTOR_2D(212, 204) CASE CMHDZ_SPRITE_BEARSY_JOWL_HIT_01 CASE CMHDZ_SPRITE_BEARSY_JOWL_HIT_02 RETURN INIT_VECTOR_2D(560, 644) CASE CMHDZ_SPRITE_BEARSY_JOWL_LARGE_01 CASE CMHDZ_SPRITE_BEARSY_JOWL_LARGE_02 RETURN INIT_VECTOR_2D(472,556) CASE CMHDZ_SPRITE_BEARSY_JOWL_MED_01 CASE CMHDZ_SPRITE_BEARSY_JOWL_MED_02 RETURN INIT_VECTOR_2D(316, 360) CASE CMHDZ_SPRITE_BEARSY_JOWL_SMALL_01 CASE CMHDZ_SPRITE_BEARSY_JOWL_SMALL_02 RETURN INIT_VECTOR_2D(212, 240) CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_01 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_02 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_03 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_BLOOD_04 RETURN INIT_VECTOR_2D(268, 84) //CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SCREEN_CRACK CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_01 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_02 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_03 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_04 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_ATTACKING_SPARKS_05 RETURN INIT_VECTOR_2D(508, 196) CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_01 RETURN INIT_VECTOR_2D(356, 256) CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_02 RETURN INIT_VECTOR_2D(356, 488) CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_03 CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_04 RETURN INIT_VECTOR_2D(356, 212) CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_05 RETURN INIT_VECTOR_2D(356, 204) CASE CMHDZ_SPRITE_BEARSY_FOREGROUND_BLOOD_06 RETURN INIT_VECTOR_2D(356, 140) CASE CMHDZ_SPRITE_SCREEN_DAMAGE_RIP RETURN INIT_VECTOR_2D(264, 532) CASE CMHDZ_SPRITE_SCREEN_DAMAGE_BLOOD_SPLATTER RETURN INIT_VECTOR_2D(792, 800) // CASE CMHDZ_SPRITE_SCREEN_DAMAGE_BROKEN // RETURN INIT_VECTOR_2D(516, 472) ENDSWITCH RETURN INIT_VECTOR_2D(340, 544) ENDFUNC PROC CMHDZ_UPDATE_SOUND_GLITCH_LEVEL() FLOAT fHealthLevel = 0.5 - (sCMHDZData.sPlayerData[0].fHealth/2.0) IF sCMHDZData.iFade = 0 sCMHDZData.fSoundGlitchLevel = fHealthLevel + sCMHDZData.fSoundGlitchAdditional ENDIF IF sCMHDZData.fSoundGlitchLevel > 1.0 sCMHDZData.fSoundGlitchLevel = 1.0 ENDIF IF sCMHDZData.fSoundGlitchLevel < 0.0 sCMHDZData.fSoundGlitchLevel = 0.0 ENDIF sCMHDZData.fSoundGlitchAdditional = 0.0 ENDPROC PROC CMHDZ_STOP_TITLE_INTRO_MOVIE(BINK_MOVIE_ID &bmID) CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ] [BAZ] CMHDZ_STOP_TITLE_INTRO_MOVIE") STOP_BINK_MOVIE(bmID) RELEASE_BINK_MOVIE(bmID) ENDPROC /// PURPOSE: /// Ensures smooth trnasition from one bink video to another. FUNC BOOL CMHDZ_DRAW_MOVIE_SEQUENCE(BINK_MOVIE_ID &bmID, FLOAT fRatioWidth, FLOAT fRatioHeight) IF GET_BINK_MOVIE_TIME(bmID) >= 99.9 RETURN TRUE ELSE DRAW_BINK_MOVIE(bmID, cfSCREEN_CENTER, cfSCREEN_CENTER, fRatioWidth, fRatioHeight, 0.0, 255,255,255,255) ENDIF RETURN FALSE ENDFUNC PROC CMHDZ_START_MOVIE_FORCE(BINK_MOVIE_ID &bmID, STRING movieName) CDEBUG2LN(DEBUG_MINIGAME, "[CMHDZ][BAZ] CMHDZ_START_MOVIE_FORCE - Starting movie") STOP_BINK_MOVIE(bmID) RELEASE_BINK_MOVIE(bmID) bmID = SET_BINK_MOVIE(movieName) PLAY_BINK_MOVIE(bmID) SET_BINK_SHOULD_SKIP(bmID, TRUE) SET_BINK_MOVIE_AUDIO_FRONTEND(bmID, TRUE) ENDPROC