diff --git a/TR5Main/Game/newinv2.cpp b/TR5Main/Game/newinv2.cpp index 5f3cb2eaa..83a11a03b 100644 --- a/TR5Main/Game/newinv2.cpp +++ b/TR5Main/Game/newinv2.cpp @@ -117,7 +117,17 @@ short optmessages[] = #define phd_winymax g_Configuration.Height #define phd_centerx 400 #define phd_centery phd_winymax / 2 -#define max_combines 60//update this if you add anything to the combine table otherwise it wont work since the relative functions use it! +#define max_combines 60 + +/* +if you wanna add an object to the inventory, edit the inv_objects array then edit THIS inventry_objects_list array with the object IN THE RIGHT PLACE +the #s MUST MATCH. +i.e if uzi item is #2 in inv_objects (starting count from 0), IT HAS TO BE THE THIRD ELEMENT IN inventry_objects_list. thank you. + +note: don't forget to add your object to the proper list construction function +and if it's a weapon, add its ammo handling shit. (look at vars at the beginning of the file) +if it's combineable, add its things to the combine_table and don't forget to increment max_combines!! +*/ COMBINELIST combine_table[max_combines] = { @@ -183,476 +193,256 @@ COMBINELIST combine_table[max_combines] = {combine_ClockWorkBeetle, INV_OBJECT_BEETLE_PART1, INV_OBJECT_BEETLE_PART2, INV_OBJECT_BEETLE} }; -/* -if you wanna add an object to the inventory, edit the inv_objects array then edit THIS inventry_objects_list array with the object IN THE RIGHT PLACE -the #s MUST MATCH. -i.e if uzi item is #2 in inv_objects (starting count from 0), IT HAS TO BE THE THIRD ELEMENT IN inventry_objects_list. thank you. -and the same thing for the options table too please! - -note: don't forget to add your object to the proper list construction function, and EDIT THE OPTIONS TABLE ALSO!!!! -and if it's a weapon, add its ammo handling shit. (look at vars at the beginning of the file) -if it's combineable, add its things to the combine_table. -*/ - INVOBJ inventry_objects_list[INVENTORY_TABLE_SIZE] = { //weps -{ID_PISTOLS_ITEM, 6, 0.5f, ANGLE(90), ANGLE(243.69873046875f), ANGLE(276.1328125), 2, STRING_PISTOLS, -1}, -{ID_PISTOLS_AMMO_ITEM, 4, 0.5f, 0, ANGLE(90), 0, 2, STRING_PISTOLS_AMMO, -1}, -{ID_UZI_ITEM, -4, 0.5f, ANGLE(-90) , ANGLE(135), ANGLE(90), 2, STRING_UZI , -1}, -{ID_UZI_AMMO_ITEM, 5, 0.5f, 0, 5384, 0, 2, STRING_UZI_AMMO, -1}, -{ID_SHOTGUN_ITEM, -6, 0.7f, ANGLE(-20), ANGLE(270), ANGLE(45), 2, STRING_SHOTGUN, 1}, -{ID_SHOTGUN_AMMO1_ITEM, 0, 0.5f, ANGLE(90), 0, 0, 2, STRING_SHOTGUN_AMMO1, -1}, -{ID_SHOTGUN_AMMO2_ITEM, 0, 0.5f, ANGLE(90), 0, 0, 2, STRING_SHOTGUN_AMMO2, -1}, -{ID_REVOLVER_ITEM, 0, 0.5f, ANGLE(-90), ANGLE(60), ANGLE(85), 2, STRING_REVOLVER , 1}, -{ID_REVOLVER_AMMO_ITEM, 0, 0.5f, ANGLE(90), ANGLE(-16), 0, 2, STRING_REVOLVER_AMMO, -1}, -{ID_REVOLVER_ITEM, 0, 0.5f, ANGLE(90), ANGLE(60), ANGLE(85), 2, STRING_REVOLVER_LASER, 3}, -{ID_CROSSBOW_ITEM, 0, 0.5f, ANGLE(-90), ANGLE(33), 0, 2, STRING_CROSSBOW, 1}, -{ID_CROSSBOW_ITEM, 0, 0.5f, ANGLE(-90), ANGLE(33), 0, 2, STRING_CROSSBOW_LASER, 3/*idk*/}, -{ID_CROSSBOW_AMMO1_ITEM, 0, 0.5f, ANGLE(90), 0, 0, 2, STRING_CROSSBOW_AMMO1, -1}, -{ID_CROSSBOW_AMMO2_ITEM, 0, 0.5f, ANGLE(90), 0, 0, 2, STRING_CROSSBOW_AMMO1, -1}, -{ID_CROSSBOW_AMMO3_ITEM, 0, 0.5f, ANGLE(90), 0, 0, 2, STRING_CROSSBOW_AMMO1, -1}, -{ID_HK_ITEM, 0, 0.5f, ANGLE(0), ANGLE(280), 0, 2, STRING_HK, 1}, -{ID_HK_ITEM, 0, 0.5f, ANGLE(-45), ANGLE(280), 0, 2, STRING_HK_SILENCED, -1}, -{ID_HK_AMMO_ITEM, 3, 0.5f, ANGLE(90), 0, 0, 2, STRING_HK_AMMO, 2}, -{ID_GRENADE_GUN_ITEM, 0, 0.5f, ANGLE(90), 0, ANGLE(65), 2, STRING_GRENADE_LAUNCHER, -1}, -{ID_GRENADE_AMMO1_ITEM, 3, 0.5f, ANGLE(90), 0, 0, 2, STRING_GRENADE_AMMO1, -1}, -{ID_GRENADE_AMMO2_ITEM, 3, 0.5f, ANGLE(90), 0, 0, 2, STRING_GRENADE_AMMO2, -1}, -{ID_GRENADE_AMMO3_ITEM, 3, 0.5f, ANGLE(90), 0, 0, 2, STRING_GRENADE_AMMO3, -1}, -{ID_HARPOON_ITEM, 0, 0.5f, 0, ANGLE(-65), ANGLE(-20), 2, STRING_HARPOON_GUN, -1}, -{ID_HARPOON_AMMO_ITEM, 3, 0.5f, 0, ANGLE(15), 0, 2, STRING_HARPOON_AMMO, -1}, -{ID_ROCKET_LAUNCHER_ITEM, 0, 0.5f, ANGLE(180), ANGLE(80), 0, 2, STRING_ROCKET_LAUNCHER, -1}, -{ID_ROCKET_LAUNCHER_AMMO_ITEM, 3, 0.5f, ANGLE(90), 0, ANGLE(15), 2, STRING_ROCKET_AMMO, -1}, +{ID_PISTOLS_ITEM, 6, 0.5f, ANGLE(90), ANGLE(243.69873046875f), ANGLE(276.1328125), OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_PISTOLS, STRING_PISTOLS, -1, INV_ROT_Y}, +{ID_PISTOLS_AMMO_ITEM, 4, 0.5f, 0, ANGLE(90), 0, OPT_USE, STRING_PISTOLS_AMMO, -1, INV_ROT_Y}, +{ID_UZI_ITEM, -4, 0.5f, ANGLE(-90) , ANGLE(135), ANGLE(90), OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_UZI, STRING_UZI , -1, INV_ROT_Y}, +{ID_UZI_AMMO_ITEM, 5, 0.5f, 0, 5384, 0, OPT_USE, STRING_UZI_AMMO, -1, INV_ROT_Y}, +{ID_SHOTGUN_ITEM, -6, 0.8f, ANGLE(-20), ANGLE(270), ANGLE(45), OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_SHOTGUN, STRING_SHOTGUN, 1, INV_ROT_Y}, +{ID_SHOTGUN_AMMO1_ITEM, 0, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_SHOTGUN_AMMO1, -1, INV_ROT_Y}, +{ID_SHOTGUN_AMMO2_ITEM, 0, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_SHOTGUN_AMMO2, -1, INV_ROT_Y}, +{ID_REVOLVER_ITEM, 0, 0.5f, ANGLE(-90), ANGLE(60), ANGLE(85), OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_REVOLVER, STRING_REVOLVER , 1, INV_ROT_Y}, +{ID_REVOLVER_AMMO_ITEM, 0, 0.5f, ANGLE(90), ANGLE(-16), 0, OPT_USE, STRING_REVOLVER_AMMO, -1, INV_ROT_Y}, +{ID_REVOLVER_ITEM, 0, 0.5f, ANGLE(90), ANGLE(60), ANGLE(85), OPT_EQUIP | OPT_SEPERATABLE | OPT_CHOOSEAMMO_REVOLVER, STRING_REVOLVER_LASER, 3, INV_ROT_Y}, +{ID_CROSSBOW_ITEM, 0, 0.5f, ANGLE(-90), ANGLE(33), 0, OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_CROSSBOW, STRING_CROSSBOW, 1, INV_ROT_Y}, +{ID_CROSSBOW_ITEM, 0, 0.5f, ANGLE(-90), ANGLE(33), 0, OPT_EQUIP | OPT_SEPERATABLE | OPT_CHOOSEAMMO_CROSSBOW, STRING_CROSSBOW_LASER, 3, INV_ROT_Y}, +{ID_CROSSBOW_AMMO1_ITEM, 0, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_CROSSBOW_AMMO1, -1, INV_ROT_Y}, +{ID_CROSSBOW_AMMO2_ITEM, 0, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_CROSSBOW_AMMO1, -1, INV_ROT_Y}, +{ID_CROSSBOW_AMMO3_ITEM, 0, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_CROSSBOW_AMMO1, -1, INV_ROT_Y}, +{ID_HK_ITEM, 0, 0.5f, ANGLE(0), ANGLE(280), 0, OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_HK, STRING_HK, 1, INV_ROT_Y}, +{ID_HK_ITEM, 0, 0.5f, ANGLE(-45), ANGLE(280), 0, OPT_EQUIP | OPT_SEPERATABLE | OPT_CHOOSEAMMO_HK, STRING_HK_SILENCED, -1, INV_ROT_Y}, +{ID_HK_AMMO_ITEM, 3, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_HK_AMMO, 2}, +{ID_GRENADE_GUN_ITEM, 0, 0.5f, ANGLE(90), 0, ANGLE(65), OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_GRENADEGUN, STRING_GRENADE_LAUNCHER, -1, INV_ROT_Y}, +{ID_GRENADE_AMMO1_ITEM, 3, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_GRENADE_AMMO1, -1, INV_ROT_Y}, +{ID_GRENADE_AMMO2_ITEM, 3, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_GRENADE_AMMO2, -1, INV_ROT_Y}, +{ID_GRENADE_AMMO3_ITEM, 3, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_GRENADE_AMMO3, -1, INV_ROT_Y}, +{ID_HARPOON_ITEM, 0, 0.5f, 0, ANGLE(-65), ANGLE(-20), OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_HARPOON, STRING_HARPOON_GUN, -1, INV_ROT_Y}, +{ID_HARPOON_AMMO_ITEM, 3, 0.5f, 0, ANGLE(15), 0, OPT_USE, STRING_HARPOON_AMMO, -1, INV_ROT_Y}, +{ID_ROCKET_LAUNCHER_ITEM, 0, 0.5f, ANGLE(180), ANGLE(80), 0, OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_ROCKET, STRING_ROCKET_LAUNCHER, -1, INV_ROT_Y}, +{ID_ROCKET_LAUNCHER_AMMO_ITEM, 3, 0.5f, ANGLE(90), 0, ANGLE(15), OPT_USE, STRING_ROCKET_AMMO, -1, INV_ROT_Y}, //misc -{ID_LASERSIGHT_ITEM, 2, 0.5f, ANGLE(90), ANGLE(10), 0, 2, STRING_LASERSIGHT, -1}, -{ID_SILENCER_ITEM, 1, 0.5f, 0, ANGLE(10), 0, 2, STRING_SILENCER, -1}, -{ID_BIGMEDI_ITEM, 2, 0.7f, ANGLE(180), 0, 0, 2, STRING_LARGE_MEDIPACK, -1}, -{ID_SMALLMEDI_ITEM, 0, 0.7f, ANGLE(180), ANGLE(112), 0, 2, STRING_SMALL_MEDIPACK, -1}, -{ID_BINOCULARS_ITEM, -1, 0.5f, ANGLE(180), ANGLE(10), 0, 2, STRING_BINOCULARS, -1}, -{ID_FLARE_INV_ITEM, 52, 0.8f, ANGLE(0), 0, 0, 2, STRING_FLARES, -1}, -{ID_TIMEX_ITEM, 2, 0.4f, 0, 0, 0, 2, STRING_TIMEX, -1}, -{ID_PC_LOAD_INV_ITEM, 52, 0.3f, ANGLE(180), 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PC_LOAD_SAVE_ITEM, 52, 0.3f, ANGLE(180), 0, 0, 2, STRING_SAVE_GAME, -1}, -{ID_BURNING_TORCH_ITEM, 14, 0.5f, 0, ANGLE(90), 0, 2, STRING_LOAD_GAME, -1}, -{ID_CROWBAR_ITEM, 4, 0.5f, 0, ANGLE(90), 0, 2, STRING_CROWBAR, -1}, -{ID_DIARY_ITEM, 0, 0.5f, 0, 0, 0, 2, STRING_DIARY, -1}, -{ID_COMPASS_ITEM, 0x0FFF2, 0.5f, 0, 0, 0, 0, STRING_LOAD_GAME, -1}, -{ID_CLOCKWORK_BEETLE, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_CLOCKWORK_BEETLE_COMBO1, 18, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_CLOCKWORK_BEETLE_COMBO2, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_WATERSKIN1_EMPTY, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 }, -{ID_WATERSKIN1_1, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 }, -{ID_WATERSKIN1_2, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 }, -{ID_WATERSKIN1_3, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 }, -{ID_WATERSKIN2_EMPTY, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 }, -{ID_WATERSKIN2_1, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 }, -{ID_WATERSKIN2_2, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 }, -{ID_WATERSKIN2_3, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 }, -{ID_WATERSKIN2_4, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 }, -{ID_WATERSKIN2_5, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 }, +{ID_LASERSIGHT_ITEM, 2, 0.5f, ANGLE(90), ANGLE(10), 0, OPT_USE | OPT_COMBINABLE, STRING_LASERSIGHT, -1, INV_ROT_Y}, +{ID_SILENCER_ITEM, 1, 0.5f, 0, ANGLE(10), 0, OPT_USE | OPT_COMBINABLE, STRING_SILENCER, -1, INV_ROT_Y}, +{ID_BIGMEDI_ITEM, 2, 0.7f, ANGLE(180), 0, 0, OPT_USE, STRING_LARGE_MEDIPACK, -1, INV_ROT_Y}, +{ID_SMALLMEDI_ITEM, 0, 0.7f, ANGLE(180), ANGLE(112), 0, OPT_USE, STRING_SMALL_MEDIPACK, -1, INV_ROT_Y}, +{ID_BINOCULARS_ITEM, -1, 0.5f, ANGLE(180), ANGLE(10), 0, OPT_USE, STRING_BINOCULARS, -1, INV_ROT_Y}, +{ID_FLARE_INV_ITEM, 52, 0.8f, ANGLE(0), 0, 0, OPT_USE, STRING_FLARES, -1, INV_ROT_Y}, +{ID_TIMEX_ITEM, 2, 0.4f, 0, 0, 0, OPT_STATS, STRING_TIMEX, -1, INV_ROT_Y}, +{ID_PC_LOAD_INV_ITEM, 52, 0.3f, ANGLE(180), 0, 0, OPT_LOAD, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PC_LOAD_SAVE_ITEM, 52, 0.3f, ANGLE(180), 0, 0, OPT_SAVE, STRING_SAVE_GAME, -1, INV_ROT_Y}, +{ID_BURNING_TORCH_ITEM, 14, 0.5f, 0, ANGLE(90), 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_CROWBAR_ITEM, 4, 0.5f, 0, ANGLE(90), 0, OPT_USE, STRING_CROWBAR, -1, INV_ROT_Y}, +{ID_DIARY_ITEM, 0, 0.5f, 0, 0, 0, OPT_USE, STRING_DIARY, -1, INV_ROT_Y}, +{ID_COMPASS_ITEM, 0x0FFF2, 0.5f, 0, 0, 0, 0, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_CLOCKWORK_BEETLE, 14, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_CLOCKWORK_BEETLE_COMBO1, 18, 0.5f, 0, 0, 0, OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_CLOCKWORK_BEETLE_COMBO2, 14, 0.5f, 0, 0, 0, OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_WATERSKIN1_EMPTY, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_WATERSKIN1_1, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_WATERSKIN1_2, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_WATERSKIN1_3, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_WATERSKIN2_EMPTY, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_WATERSKIN2_1, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_WATERSKIN2_2, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_WATERSKIN2_3, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_WATERSKIN2_4, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_WATERSKIN2_5, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, //puzzles -{ID_PUZZLE_ITEM1, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM2, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM3, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM4, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM5, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM6, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM7, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM8, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM9, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM10, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM11, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM12, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM13, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM14, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM15, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM16, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, +{ID_PUZZLE_ITEM1, 14, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM2, 14, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM3, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM4, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM5, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM6, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM7, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM8, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM9, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM10, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM11, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM12, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM13, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM14, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM15, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM16, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, //puzzle combos -{ID_PUZZLE_ITEM1_COMBO1, 18, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM1_COMBO2, 18, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM2_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM2_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM3_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM3_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM4_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM4_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM5_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM5_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM6_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM6_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM7_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM7_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM8_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM8_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM9_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM9_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM10_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM10_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM11_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM11_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM12_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM12_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM13_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM13_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM14_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM14_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM15_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM15_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM16_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PUZZLE_ITEM16_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, +{ID_PUZZLE_ITEM1_COMBO1, 18, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM1_COMBO2, 18, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM2_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM2_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM3_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM3_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM4_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM4_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM5_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM5_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM6_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM6_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM7_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM7_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM8_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM8_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM9_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM9_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM10_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM10_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM11_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM11_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM12_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM12_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM13_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM13_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM14_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM14_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM15_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM15_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM16_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PUZZLE_ITEM16_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, //keys -{ID_KEY_ITEM1, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM3, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM4, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM5, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM6, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM7, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM8, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM9, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM10, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM11, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM12, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM13, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM14, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM15, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM16, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, +{ID_KEY_ITEM1, 14, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM2, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM3, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM4, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM5, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM6, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM7, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM8, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM9, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM10, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM11, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM12, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM13, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM14, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM15, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM16, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, //key combos -{ID_KEY_ITEM1_COMBO1, 18, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM1_COMBO2, 18, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM2_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM2_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM3_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM3_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM4_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM4_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM5_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM5_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM6_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM6_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM7_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM7_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM8_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM8_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM9_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM9_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM10_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM10_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM11_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM11_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM12_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM12_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM13_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM13_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM14_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM14_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM15_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM15_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM16_COMBO1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_KEY_ITEM16_COMBO2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, +{ID_KEY_ITEM1_COMBO1, 18, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM1_COMBO2, 18, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM2_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM2_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM3_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM3_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM4_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM4_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM5_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM5_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM6_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM6_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM7_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM7_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM8_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM8_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM9_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM9_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM10_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM10_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM11_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM11_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM12_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM12_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM13_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM13_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM14_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM14_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM15_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM15_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM16_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_KEY_ITEM16_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, //pickups -{ID_PICKUP_ITEM1, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM2, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM3, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM4, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM5, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM6, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM7, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM8, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM9, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM10, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM11, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM12, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM13, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM14, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM15, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM16, 8, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, +{ID_PICKUP_ITEM1, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM2, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM3, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM4, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM5, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM6, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM7, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM8, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM9, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM10, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM11, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM12, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM13, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM14, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM15, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM16, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, -1, INV_ROT_Y}, //pickup combos -{ID_PICKUP_ITEM1_COMBO1, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM1_COMBO2, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM2_COMBO1, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM2_COMBO2, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM3_COMBO1, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM3_COMBO2, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM4_COMBO1, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_PICKUP_ITEM4_COMBO2, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, +{ID_PICKUP_ITEM1_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM1_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM2_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM2_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM3_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM3_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM4_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM4_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM5_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM5_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM6_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM6_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM7_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM7_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM8_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM8_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM9_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM9_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM10_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM10_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM11_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM11_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM12_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM12_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM13_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM13_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM14_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM14_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM15_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM15_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM16_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_PICKUP_ITEM16_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, //examines -{ID_EXAMINE1, 4, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_EXAMINE2, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_EXAMINE3, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_EXAMINE4, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_EXAMINE5, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_EXAMINE6, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_EXAMINE7, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_EXAMINE8, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, +{ID_EXAMINE1, 4, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE2, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE3, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE4, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE5, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE6, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE7, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE8, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, //examines combos -{ID_EXAMINE1_COMBO1, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_EXAMINE1_COMBO2, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_EXAMINE2_COMBO1, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_EXAMINE2_COMBO2, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_EXAMINE3_COMBO1, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -{ID_EXAMINE3_COMBO2, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1}, -}; - -//available options for each object in the list^^ -unsigned __int64 options_table[] = -{ - //Weps - OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_PISTOLS, //pistol item - OPT_USE, //pistol ammo - OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_UZI, //uzi item - OPT_USE, //uzi ammo - OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_SHOTGUN, //shotgun item - OPT_USE, //shotgun ammo1 - OPT_USE, //shotgun ammo2 - OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_REVOLVER, //revolver - OPT_USE, //revolver ammo - OPT_EQUIP | OPT_SEPERATABLE | OPT_CHOOSEAMMO_REVOLVER, //revolver lasersight - OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_CROSSBOW, //crossbow - OPT_EQUIP | OPT_SEPERATABLE | OPT_CHOOSEAMMO_CROSSBOW, //crossbow laser - OPT_USE, //crossbow ammo1 - OPT_USE, //crossbow ammo2 - OPT_USE, //crossbow ammo3 - OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_HK, //HK - OPT_EQUIP | OPT_SEPERATABLE | OPT_CHOOSEAMMO_HK, //HK silencer - OPT_USE, //HK ammo - OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_GRENADEGUN, //Grenade laucher - OPT_USE, //grenade launcher ammo1 - OPT_USE, //grenade launcher ammo2 - OPT_USE, //grenade launcher ammo3 - OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_HARPOON, //Harpoon gun - OPT_USE, //harpoon ammo - OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_ROCKET, //rocket launcher - OPT_USE, //rocket ammo - - //misc - OPT_USE | OPT_COMBINABLE, //lasersight - OPT_USE | OPT_COMBINABLE, //silencer - OPT_USE, //large med - OPT_USE, //small med - OPT_USE, //binocs - OPT_USE, //flares - OPT_STATS, //timex - OPT_LOAD, //load floppy - OPT_SAVE, //save floppy - OPT_USE, //torch? - OPT_USE, //crowbar - OPT_USE, //diary - 0, //compass - OPT_USE,//clockwork beetle - OPT_COMBINABLE,//clockwork beetle combo 1 - OPT_COMBINABLE,//clockwork beetle combo 2 - OPT_USE | OPT_COMBINABLE,//empty smol waterskin - OPT_USE | OPT_COMBINABLE,//smol waterskin 1L - OPT_USE | OPT_COMBINABLE,//smol waterskin 2L - OPT_USE | OPT_COMBINABLE,//smol waterskin 3L - OPT_USE | OPT_COMBINABLE,//empty big waterskin - OPT_USE | OPT_COMBINABLE,//big waterskin 1L - OPT_USE | OPT_COMBINABLE,//big waterskin 2L - OPT_USE | OPT_COMBINABLE,//big waterskin 3L - OPT_USE | OPT_COMBINABLE,//big waterskin 4L - OPT_USE | OPT_COMBINABLE,//big waterskin 5L - - //puzzles - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE,//16 puzzle items - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - - //puzzle combines - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE,//16 puzzle items, each one has 2 parts, so 32 - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - - //keys - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE,//16 key items - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - - //key combines - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE,//16 key items, each one has 2 parts, so 32 - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - - //pickups - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE,//16 of them - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - OPT_USE, - - //pickup combines - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE,//16 pickup items, each one has 2 parts, so 32 - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - - //examines - OPT_EXAMINABLE, - OPT_EXAMINABLE, - OPT_EXAMINABLE, - OPT_EXAMINABLE,//8 examines - OPT_EXAMINABLE, - OPT_EXAMINABLE, - OPT_EXAMINABLE, - OPT_EXAMINABLE, - - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE,//8 examine items, each one has 2 parts, so 16 - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, - OPT_USE | OPT_COMBINABLE, +{ID_EXAMINE1_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE1_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE2_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE2_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE3_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE3_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE4_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE4_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE5_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE5_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE6_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE6_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE7_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE7_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE8_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, +{ID_EXAMINE8_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, -1, INV_ROT_Y}, }; void DrawInv() @@ -2063,16 +1853,22 @@ void setup_ammo_selector() unsigned __int64 opts; num = 0; - opts = options_table[rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->curobjinlist].invitem]; + opts = inventry_objects_list[rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->curobjinlist].invitem].opts; ammo_selector_flag = 0; num_ammo_slots = 0; if (rings[RING_AMMO]->ringactive) return; - ammo_object_list[2].yrot = 0; - ammo_object_list[1].yrot = 0; + ammo_object_list[0].xrot = 0; ammo_object_list[0].yrot = 0; + ammo_object_list[0].zrot = 0; + ammo_object_list[1].xrot = 0; + ammo_object_list[1].yrot = 0; + ammo_object_list[1].zrot = 0; + ammo_object_list[2].xrot = 0; + ammo_object_list[2].yrot = 0; + ammo_object_list[2].zrot = 0; if (opts & (OPT_CHOOSEAMMO_UZI | OPT_CHOOSEAMMO_PISTOLS | OPT_CHOOSEAMMO_REVOLVER | OPT_CHOOSEAMMO_CROSSBOW | @@ -2182,19 +1978,25 @@ void setup_ammo_selector() void insert_object_into_list(int num) { rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->numobjectsinlist].invitem = num; + rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->numobjectsinlist].xrot = 0; rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->numobjectsinlist].yrot = 0; + rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->numobjectsinlist].zrot = 0; rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->numobjectsinlist].bright = 32; rings[RING_INVENTORY]->numobjectsinlist++; } void insert_object_into_list_v2(int num) { - if (options_table[num] & (OPT_COMBINABLE | OPT_ALWAYSCOMBINE)) + unsigned __int64 opts = inventry_objects_list[convert_obj_to_invobj(num)].opts; + + if (opts & (OPT_COMBINABLE | OPT_ALWAYSCOMBINE)) { if (rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->curobjinlist].invitem != num) { rings[RING_AMMO]->current_object_list[rings[RING_AMMO]->numobjectsinlist].invitem = num; + rings[RING_AMMO]->current_object_list[rings[RING_AMMO]->numobjectsinlist].xrot = 0; rings[RING_AMMO]->current_object_list[rings[RING_AMMO]->numobjectsinlist].yrot = 0; + rings[RING_AMMO]->current_object_list[rings[RING_AMMO]->numobjectsinlist].zrot = 0; rings[RING_AMMO]->current_object_list[rings[RING_AMMO]->numobjectsinlist++].bright = 32; } } @@ -2996,7 +2798,7 @@ void handle_inventry_menu() if (!ammo_active) { - opts = options_table[rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->curobjinlist].invitem]; + opts = inventry_objects_list[rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->curobjinlist].invitem].opts; if ((opts & OPT_LOAD)) { @@ -3079,7 +2881,9 @@ void handle_inventry_menu() current_options[1].text = g_GameFlow->GetString(inventry_objects_list[ammo_object_list[1].invitem].objname); n = 2; - if ((options_table[rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->curobjinlist].invitem] & (OPT_CHOOSEAMMO_CROSSBOW | OPT_CHOOSEAMMO_GRENADEGUN))) + opts = inventry_objects_list[rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->curobjinlist].invitem].opts; + + if (opts & (OPT_CHOOSEAMMO_CROSSBOW | OPT_CHOOSEAMMO_GRENADEGUN)) { n = 3; current_options[2].type = 8; @@ -3312,7 +3116,7 @@ void draw_ammo_selector() { int n; int xpos; - short yrot; + unsigned short xrot, yrot, zrot; INVOBJ* objme; char invTextBuffer[256]; int x, y; @@ -3335,13 +3139,25 @@ void draw_ammo_selector() if (n == *current_ammo_type) { - if ((objme->flags & 2)) + if (objme->rot_flags & INV_ROT_X) + ammo_object_list[n].xrot += 1022; + + if (objme->rot_flags & INV_ROT_Y) ammo_object_list[n].yrot += 1022; + + if (objme->rot_flags & INV_ROT_Z) + ammo_object_list[n].zrot += 1022; } else + { + spinback(&ammo_object_list[n].xrot); spinback(&ammo_object_list[n].yrot); + spinback(&ammo_object_list[n].zrot); + } + xrot = ammo_object_list[n].xrot; yrot = ammo_object_list[n].yrot; + zrot = ammo_object_list[n].zrot; x = phd_centerx - 300 + xpos; y = 430; short obj = convert_invobj_to_obj(ammo_object_list[n].invitem); @@ -3359,12 +3175,12 @@ void draw_ammo_selector() if (n == *current_ammo_type) - g_Renderer.drawObjectOn2DPosition(x, y, obj, 0, yrot, 0, scaler); + g_Renderer.drawObjectOn2DPosition(x, y, obj, xrot, yrot, zrot, scaler); else - g_Renderer.drawObjectOn2DPosition(x, y, obj, 0, yrot, 0, scaler); + g_Renderer.drawObjectOn2DPosition(x, y, obj, xrot, yrot, zrot, scaler); } else - g_Renderer.drawObjectOn2DPosition(x, y, obj, 0, yrot, 0, scaler); + g_Renderer.drawObjectOn2DPosition(x, y, obj, xrot, yrot, zrot, scaler); xpos += OBJLIST_SPACING; } @@ -3383,8 +3199,7 @@ void draw_current_object_list(int ringnum) int objmeup; int nummeup; short ymeup; - short yrot; - // INVOBJ* objme; + unsigned short xrot, yrot, zrot; int activenum; int count; @@ -3667,13 +3482,25 @@ void draw_current_object_list(int ringnum) if (!i && !rings[ringnum]->objlistmovement) { - if ((inventry_objects_list[rings[ringnum]->current_object_list[n].invitem].flags & 2)) + if (inventry_objects_list[rings[ringnum]->current_object_list[n].invitem].rot_flags & INV_ROT_X) + rings[ringnum]->current_object_list[n].xrot += 1022; + + if (inventry_objects_list[rings[ringnum]->current_object_list[n].invitem].rot_flags & INV_ROT_Y) rings[ringnum]->current_object_list[n].yrot += 1022; + + if (inventry_objects_list[rings[ringnum]->current_object_list[n].invitem].rot_flags & INV_ROT_Z) + rings[ringnum]->current_object_list[n].zrot += 1022; } else + { + spinback(&rings[ringnum]->current_object_list[n].xrot); spinback(&rings[ringnum]->current_object_list[n].yrot); + spinback(&rings[ringnum]->current_object_list[n].zrot); + } + xrot = rings[ringnum]->current_object_list[n].xrot; yrot = rings[ringnum]->current_object_list[n].yrot; + zrot = rings[ringnum]->current_object_list[n].zrot; if (rings[ringnum]->objlistmovement) { @@ -3708,7 +3535,7 @@ void draw_current_object_list(int ringnum) y2 = 430;//combine short obj = convert_invobj_to_obj(rings[ringnum]->current_object_list[n].invitem); float scaler = inventry_objects_list[rings[ringnum]->current_object_list[n].invitem].scale1; - g_Renderer.drawObjectOn2DPosition(x, ringnum == RING_INVENTORY ? y : y2, obj, 0, yrot, 0, scaler); + g_Renderer.drawObjectOn2DPosition(x, ringnum == RING_INVENTORY ? y : y2, obj, xrot, yrot, zrot, scaler); if (++n >= rings[ringnum]->numobjectsinlist) n = 0; diff --git a/TR5Main/Game/newinv2.h b/TR5Main/Game/newinv2.h index 6de2b4258..2255b3695 100644 --- a/TR5Main/Game/newinv2.h +++ b/TR5Main/Game/newinv2.h @@ -136,6 +136,13 @@ enum item_options OPT_CHOOSEAMMO_ROCKET = 1 << 17 }; +enum rotflags +{ + INV_ROT_X = 1, + INV_ROT_Y = 2, + INV_ROT_Z = 4 +}; + struct uhmG { int type; @@ -146,7 +153,9 @@ struct AMMOLIST { short invitem; short amount; + unsigned short xrot; unsigned short yrot; + unsigned short zrot; }; enum inv_objects @@ -436,7 +445,9 @@ enum pause_menus struct OBJLIST { short invitem; + unsigned short xrot; unsigned short yrot; + unsigned short zrot; unsigned short bright; }; @@ -451,10 +462,10 @@ struct RINGME struct COMBINELIST { - void(*combine_routine)(int flag); // size=0, offset=0 - short item1; // size=0, offset=4 - short item2; // size=0, offset=6 - short combined_item; // size=0, offset=8 + void(*combine_routine)(int flag); + short item1; + short item2; + short combined_item; }; struct INVOBJ @@ -465,9 +476,10 @@ struct INVOBJ short yrot; short xrot; short zrot; - short flags; + unsigned __int64 opts; short objname; unsigned long meshbits; + short rot_flags; }; extern int GLOBAL_invMode; @@ -478,7 +490,5 @@ extern int title_menu_to_display; extern int GLOBAL_inventoryitemchosen; extern int GLOBAL_lastinvitem; extern int GLOBAL_enterinventory; -extern RINGME pcring1;//items ring -extern RINGME pcring2;//other ring extern RINGME* rings[2]; extern INVOBJ inventry_objects_list[];