move options_table to the inventory list; implement rotation flags

This commit is contained in:
Trxye 2021-06-11 02:47:23 -05:00
parent 0bfedd8466
commit c31a98c9bc
2 changed files with 300 additions and 463 deletions

View file

@ -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;

View file

@ -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[];