Merge branch 'errors'

# Conflicts:
#	TR5Main/Game/effects/flmtorch.cpp
#	TR5Main/Game/objects.cpp
#	TR5Main/Objects/Effects/enemy_missile.cpp
#	TR5Main/Objects/TR4/Entity/tr4_demigod.cpp
#	TR5Main/Objects/TR4/Entity/tr4_wraith.cpp
This commit is contained in:
MontyTRC89 2021-10-28 11:06:02 +02:00
commit e4329c4974
68 changed files with 509 additions and 564 deletions

View file

@ -421,7 +421,8 @@ void LaraControl(short itemNumber)
Lara.isDucked = false;
bool isWater = g_Level.Rooms[item->roomNumber].flags & (ENV_FLAG_WATER | ENV_FLAG_SWAMP);
bool isWater = g_Level.Rooms[item->roomNumber].flags & ENV_FLAG_WATER;
bool isSwamp = g_Level.Rooms[item->roomNumber].flags & ENV_FLAG_SWAMP;
int wd = GetWaterDepth(item->pos.xPos, item->pos.yPos, item->pos.zPos, item->roomNumber);
int wh = GetWaterHeight(item->pos.xPos, item->pos.yPos, item->pos.zPos, item->roomNumber);
@ -452,7 +453,7 @@ void LaraControl(short itemNumber)
{
item->goalAnimState = LS_STOP;
}
else if (isWater & ENV_FLAG_SWAMP)
else if (isSwamp)
{
if (item->currentAnimState == LS_SWANDIVE_START
|| item->currentAnimState == LS_SWANDIVE_END) // Is Lara swan-diving?
@ -464,7 +465,7 @@ void LaraControl(short itemNumber)
item->frameNumber = GF(LA_WADE, 0);
}
}
else if (!(isWater & ENV_FLAG_SWAMP))
else if (!isSwamp)
{
Lara.air = 1800;
Lara.waterStatus = LW_UNDERWATER;
@ -682,7 +683,7 @@ void LaraControl(short itemNumber)
Camera.targetElevation = -ANGLE(22);
if (hfw >= WADE_DEPTH)
{
if (hfw > SWIM_DEPTH && !(isWater & ENV_FLAG_SWAMP))
if (hfw > SWIM_DEPTH && !isSwamp)
{
Lara.waterStatus = LW_SURFACE;
item->pos.yPos += 1 - hfw;

View file

@ -454,10 +454,10 @@ void LaraGun()
case WEAPON_PISTOLS:
case WEAPON_REVOLVER:
case WEAPON_UZI:
if (Camera.type != CINEMATIC_CAMERA
&& Camera.type != LOOK_CAMERA
&& Camera.type != HEAVY_CAMERA)
Camera.type = COMBAT_CAMERA;
if (Camera.type != CAMERA_TYPE::CINEMATIC_CAMERA
&& Camera.type != CAMERA_TYPE::LOOK_CAMERA
&& Camera.type != CAMERA_TYPE::HEAVY_CAMERA)
Camera.type = CAMERA_TYPE::COMBAT_CAMERA;
draw_pistols(Lara.gunType);
break;
@ -467,10 +467,10 @@ void LaraGun()
case WEAPON_GRENADE_LAUNCHER:
case WEAPON_ROCKET_LAUNCHER:
case WEAPON_HARPOON_GUN:
if (Camera.type != CINEMATIC_CAMERA
&& Camera.type != LOOK_CAMERA
&& Camera.type != HEAVY_CAMERA)
Camera.type = COMBAT_CAMERA;
if (Camera.type != CAMERA_TYPE::CINEMATIC_CAMERA
&& Camera.type != CAMERA_TYPE::LOOK_CAMERA
&& Camera.type != CAMERA_TYPE::HEAVY_CAMERA)
Camera.type = CAMERA_TYPE::COMBAT_CAMERA;
draw_shotgun(Lara.gunType);
break;
@ -523,10 +523,10 @@ void LaraGun()
else
Lara.meshPtrs[LM_HEAD] = Objects[ID_LARA_SCREAM].meshIndex + LM_HEAD;
if (Camera.type != CINEMATIC_CAMERA
&& Camera.type != LOOK_CAMERA
&& Camera.type != HEAVY_CAMERA)
Camera.type = COMBAT_CAMERA;
if (Camera.type != CAMERA_TYPE::CINEMATIC_CAMERA
&& Camera.type != CAMERA_TYPE::LOOK_CAMERA
&& Camera.type != CAMERA_TYPE::HEAVY_CAMERA)
Camera.type = CAMERA_TYPE::COMBAT_CAMERA;
if (TrInput & IN_ACTION)
{

View file

@ -456,7 +456,7 @@ short TestMonkeyRight(ITEM_INFO* item, COLL_INFO* coll)
if (abs(coll->Middle.Ceiling - coll->Front.Ceiling) > 50)
return 0;
if (!coll->CollisionType)
if (coll->CollisionType == CT_NONE)
return 1;
oct = GetDirOctant(item->pos.yRot);
@ -494,7 +494,7 @@ short TestMonkeyLeft(ITEM_INFO* item, COLL_INFO* coll)
if (abs(coll->Middle.Ceiling - coll->Front.Ceiling) > 50)
return 0;
if (!coll->CollisionType)
if (coll->CollisionType == CT_NONE)
return 1;
oct = GetDirOctant(item->pos.yRot);

View file

@ -1126,7 +1126,7 @@ void AnimateShotgun(int weaponType)
if (weaponType == WEAPON_HARPOON_GUN)
{
FireHarpoon();
if (!(Lara.Weapons[WEAPON_HARPOON_GUN].Ammo[0] & 3))
if (!(Lara.Weapons[WEAPON_HARPOON_GUN].Ammo->getCount() & 3))
harpoonFired = true;
}
else if (weaponType == WEAPON_ROCKET_LAUNCHER)
@ -1211,7 +1211,7 @@ void AnimateShotgun(int weaponType)
if (weaponType == WEAPON_HARPOON_GUN)
{
FireHarpoon();
if (!(Lara.Weapons[WEAPON_HARPOON_GUN].Ammo[0] & 3))
if (!(Lara.Weapons[WEAPON_HARPOON_GUN].Ammo->getCount() & 3))
harpoonFired = true;
}
else if (weaponType == WEAPON_HK)// && (/*!(Lara.HKtypeCarried & 0x18) || */!HKTimer))
@ -1514,7 +1514,7 @@ void RifleHandler(int weaponType)
{
Lara.torsoXrot = Lara.leftArm.xRot;
Lara.torsoYrot = Lara.leftArm.yRot;
if (Camera.oldType != LOOK_CAMERA && !BinocularRange)
if (Camera.oldType != CAMERA_TYPE::LOOK_CAMERA && !BinocularRange)
{
Lara.headYrot = 0;
Lara.headXrot = 0;
@ -1786,7 +1786,7 @@ void SomeSparkEffect(int x, int y, int z, int count)
spark->dG = spark->sG >> 1;
spark->dB = spark->sB >> 1;
spark->sLife = 24;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->friction = 5;
int random = GetRandomControl() & 0xFFF;
spark->xVel = -128 * phd_sin(random << 4);

View file

@ -120,7 +120,7 @@ void AnimatePistols(LARA_WEAPON_TYPE weaponType)
angleRight[0] = Lara.rightArm.yRot + LaraItem->pos.yRot;
angleRight[1] = Lara.rightArm.xRot;
if (FireWeapon(weaponType, Lara.target, LaraItem, angleRight))
if (FireWeapon(weaponType, Lara.target, LaraItem, angleRight) != FireWeaponType::FW_NOAMMO)
{
SmokeCountR = 28;
SmokeWeapon = weaponType;
@ -208,7 +208,7 @@ void AnimatePistols(LARA_WEAPON_TYPE weaponType)
angleLeft[0] = Lara.leftArm.yRot + LaraItem->pos.yRot;
angleLeft[1] = Lara.leftArm.xRot;
if (FireWeapon(weaponType, Lara.target, LaraItem, angleLeft))
if (FireWeapon(weaponType, Lara.target, LaraItem, angleLeft) != FireWeaponType::FW_NOAMMO)
{
if (static_cast<LARA_WEAPON_TYPE>(weaponType) == LARA_WEAPON_TYPE::WEAPON_REVOLVER)
{
@ -298,7 +298,7 @@ void PistolHandler(LARA_WEAPON_TYPE weaponType)
Lara.torsoYrot = Lara.leftArm.yRot / 2;
Lara.torsoXrot = Lara.leftArm.xRot / 2;
if (Camera.oldType != LOOK_CAMERA)
if (Camera.oldType != CAMERA_TYPE::LOOK_CAMERA)
{
Lara.headYrot = Lara.torsoYrot;
Lara.headXrot = Lara.torsoXrot;
@ -309,7 +309,7 @@ void PistolHandler(LARA_WEAPON_TYPE weaponType)
Lara.torsoYrot = Lara.rightArm.yRot / 2;
Lara.torsoXrot = Lara.rightArm.xRot / 2;
if (Camera.oldType != LOOK_CAMERA)
if (Camera.oldType != CAMERA_TYPE::LOOK_CAMERA)
{
Lara.headYrot = Lara.torsoYrot;
Lara.headXrot = Lara.torsoXrot;
@ -320,7 +320,7 @@ void PistolHandler(LARA_WEAPON_TYPE weaponType)
Lara.torsoYrot = (Lara.leftArm.yRot + Lara.rightArm.yRot) / 4;
Lara.torsoXrot = (Lara.leftArm.xRot + Lara.rightArm.xRot) / 4;
if (Camera.oldType != LOOK_CAMERA)
if (Camera.oldType != CAMERA_TYPE::LOOK_CAMERA)
{
Lara.headYrot = Lara.torsoYrot;
Lara.headXrot = Lara.torsoXrot;

View file

@ -180,7 +180,7 @@ void InitialiseCamera()
Camera.targetDistance = 1536;
Camera.item = NULL;
Camera.numberFrames = 1;
Camera.type = CHASE_CAMERA;
Camera.type = CAMERA_TYPE::CHASE_CAMERA;
Camera.speed = 1;
Camera.flags = CF_FOLLOW_CENTER;
Camera.bounce = 0;
@ -672,7 +672,7 @@ void CombatCamera(ITEM_INFO* item)
CameraCollisionBounds(&ideal, 384, 1);
if (Camera.oldType == FIXED_CAMERA)
if (Camera.oldType == CAMERA_TYPE::FIXED_CAMERA)
{
Camera.speed = 1;
}
@ -1004,7 +1004,7 @@ void LookCamera(ITEM_INFO* item)
OldCam.pos.zPos == LaraItem->pos.zPos &&
OldCam.currentAnimState == LaraItem->currentAnimState &&
OldCam.goalAnimState == LaraItem->goalAnimState &&
Camera.oldType == LOOK_CAMERA)
Camera.oldType == CAMERA_TYPE::LOOK_CAMERA)
{
ideal.x = LookCamPosition.x;
ideal.y = LookCamPosition.y;
@ -1034,7 +1034,7 @@ void LookCamera(ITEM_INFO* item)
CameraCollisionBounds(&ideal, 224, 1);
if (Camera.oldType == FIXED_CAMERA)
if (Camera.oldType == CAMERA_TYPE::FIXED_CAMERA)
{
Camera.pos.x = ideal.x;
Camera.pos.y = ideal.y;
@ -1230,7 +1230,7 @@ void BinocularCamera(ITEM_INFO* item)
int ty = y - 20736 * phd_sin(headXrot);
int tz = z + l * phd_cos(LaraItem->pos.yRot + headYrot);
if (Camera.oldType == FIXED_CAMERA)
if (Camera.oldType == CAMERA_TYPE::FIXED_CAMERA)
{
Camera.target.x = tx;
Camera.target.y = ty;
@ -1554,8 +1554,8 @@ void CalculateCamera()
if (UseForcedFixedCamera != 0)
{
Camera.type = FIXED_CAMERA;
if (Camera.oldType != FIXED_CAMERA)
Camera.type = CAMERA_TYPE::FIXED_CAMERA;
if (Camera.oldType != CAMERA_TYPE::FIXED_CAMERA)
{
Camera.speed = 1;
}
@ -1583,7 +1583,7 @@ void CalculateCamera()
}
}
if (Camera.type == CINEMATIC_CAMERA)
if (Camera.type == CAMERA_TYPE::CINEMATIC_CAMERA)
{
//Legacy_do_new_cutscene_camera();
return;
@ -1591,7 +1591,7 @@ void CalculateCamera()
ITEM_INFO* item;
int fixedCamera = 0;
if (Camera.item != NULL && (Camera.type == FIXED_CAMERA || Camera.type == HEAVY_CAMERA))
if (Camera.item != NULL && (Camera.type == CAMERA_TYPE::FIXED_CAMERA || Camera.type == CAMERA_TYPE::HEAVY_CAMERA))
{
item = Camera.item;
fixedCamera = 1;
@ -1641,15 +1641,15 @@ void CalculateCamera()
Lara.headXrot += change;
Lara.torsoXrot = Lara.headXrot;
Camera.type = LOOK_CAMERA;
Camera.type = CAMERA_TYPE::LOOK_CAMERA;
Camera.item->lookedAt = 1;
}
}
}
if (Camera.type == LOOK_CAMERA || Camera.type == COMBAT_CAMERA)
if (Camera.type == CAMERA_TYPE::LOOK_CAMERA || Camera.type == CAMERA_TYPE::COMBAT_CAMERA)
{
if (Camera.type == COMBAT_CAMERA)
if (Camera.type == CAMERA_TYPE::COMBAT_CAMERA)
{
LastTarget.x = Camera.target.x;
LastTarget.y = Camera.target.y;
@ -1667,11 +1667,11 @@ void CalculateCamera()
else
{
Camera.target.y += (y - Camera.target.y) >> 2;
Camera.speed = Camera.type != LOOK_CAMERA ? 8 : 4;
Camera.speed = Camera.type != CAMERA_TYPE::LOOK_CAMERA ? 8 : 4;
}
Camera.fixedCamera = 0;
if (Camera.type == LOOK_CAMERA)
if (Camera.type == CAMERA_TYPE::LOOK_CAMERA)
LookCamera(item);
else
CombatCamera(item);
@ -1686,7 +1686,7 @@ void CalculateCamera()
Camera.target.roomNumber = item->roomNumber;
Camera.target.y = y;
if (Camera.type
if (Camera.type != CAMERA_TYPE::CHASE_CAMERA
&& Camera.flags != CF_CHASE_OBJECT
&& (Camera.number != -1 &&(SniperCamActive = g_Level.Cameras[Camera.number].flags & 3, g_Level.Cameras[Camera.number].flags & 2)))
{
@ -1725,7 +1725,7 @@ void CalculateCamera()
if (fixedCamera == Camera.fixedCamera)
{
Camera.fixedCamera = 0;
if (Camera.speed != 1 && Camera.oldType != LOOK_CAMERA && BinocularOn >= 0)
if (Camera.speed != 1 && Camera.oldType != CAMERA_TYPE::LOOK_CAMERA && BinocularOn >= 0)
{
if (TargetSnaps <= 8)
{
@ -1760,7 +1760,7 @@ void CalculateCamera()
Camera.target.z = LastTarget.z;
}
if (Camera.type && Camera.flags != CF_CHASE_OBJECT)
if (Camera.type != CAMERA_TYPE::CHASE_CAMERA && Camera.flags != CF_CHASE_OBJECT)
FixedCamera(item);
else
ChaseCamera(item);
@ -1769,9 +1769,9 @@ void CalculateCamera()
Camera.fixedCamera = fixedCamera;
Camera.last = Camera.number;
if (Camera.type != HEAVY_CAMERA || Camera.timer == -1)
if (Camera.type != CAMERA_TYPE::HEAVY_CAMERA || Camera.timer == -1)
{
Camera.type = CHASE_CAMERA;
Camera.type = CAMERA_TYPE::CHASE_CAMERA;
Camera.speed = 10;
Camera.number = -1;
Camera.lastItem = Camera.item;
@ -1786,7 +1786,7 @@ void CalculateCamera()
void LookLeftRight()
{
Camera.type = LOOK_CAMERA;
Camera.type = CAMERA_TYPE::LOOK_CAMERA;
if (TrInput & IN_LEFT)
{
TrInput &= ~IN_LEFT;
@ -1818,7 +1818,7 @@ void LookLeftRight()
void LookUpDown()
{
Camera.type = LOOK_CAMERA;
Camera.type = CAMERA_TYPE::LOOK_CAMERA;
if (TrInput & IN_FORWARD)
{
TrInput &= ~IN_FORWARD;
@ -1850,7 +1850,7 @@ void LookUpDown()
void ResetLook()
{
if (Camera.type != LOOK_CAMERA)
if (Camera.type != CAMERA_TYPE::LOOK_CAMERA)
{
if (Lara.headXrot <= -ANGLE(2.0f) || Lara.headXrot >= ANGLE(2.0f))
Lara.headXrot = Lara.headXrot / -8 + Lara.headXrot;

View file

@ -2,7 +2,7 @@
#include "Specific/phd_global.h"
#include "items.h"
enum CAMERA_TYPE
enum class CAMERA_TYPE
{
CHASE_CAMERA,
FIXED_CAMERA,

View file

@ -256,7 +256,7 @@ void CreatureKill(ITEM_INFO* item, int killAnim, int killState, short laraKillSt
Lara.air = -1;
Camera.pos.roomNumber = LaraItem->roomNumber;
Camera.type = CHASE_CAMERA;
Camera.type = CAMERA_TYPE::CHASE_CAMERA;
Camera.flags = CF_FOLLOW_CENTER;
Camera.targetAngle = ANGLE(170.0f);
Camera.targetElevation = -ANGLE(25.0f);

View file

@ -125,7 +125,7 @@ GAME_STATUS ControlPhase(int numFrames, int demoMode)
if (CurrentLevel != 0)
{
if (S_UpdateInput() == -1)
return GAME_STATUS_NONE;
return GAME_STATUS::GAME_STATUS_NONE;
}
// Has Lara control been disabled?
@ -148,7 +148,7 @@ GAME_STATUS ControlPhase(int numFrames, int demoMode)
g_Inventory.Set_invMode(IM_SAVE);
if (g_Inventory.S_CallInventory2(0))
return GAME_STATUS_LOAD_GAME;
return GAME_STATUS::GAME_STATUS_LOAD_GAME;
}
else if (TrInput & IN_LOAD && g_Inventory.Get_invMode() != IM_LOAD)
{
@ -157,7 +157,7 @@ GAME_STATUS ControlPhase(int numFrames, int demoMode)
g_Inventory.Set_invMode(IM_LOAD);
if (g_Inventory.S_CallInventory2(0))
return GAME_STATUS_LOAD_GAME;
return GAME_STATUS::GAME_STATUS_LOAD_GAME;
}
else if (TrInput & IN_PAUSE && g_Inventory.Get_invMode() != IM_PAUSE && LaraItem->hitPoints > 0)
{
@ -173,7 +173,7 @@ GAME_STATUS ControlPhase(int numFrames, int demoMode)
Sound_Stop();
if (g_Inventory.S_CallInventory2(1))
return GAME_STATUS_LOAD_GAME;
return GAME_STATUS::GAME_STATUS_LOAD_GAME;
}
}
@ -185,19 +185,19 @@ GAME_STATUS ControlPhase(int numFrames, int demoMode)
int z = g_Inventory.DoPauseMenu();
if (z == INV_RESULT_EXIT_TO_TILE)
return GAME_STATUS_EXIT_TO_TITLE;
return GAME_STATUS::GAME_STATUS_EXIT_TO_TITLE;
}
// Has level been completed?
if (CurrentLevel != 0 && LevelComplete)
return GAME_STATUS_LEVEL_COMPLETED;
return GAME_STATUS::GAME_STATUS_LEVEL_COMPLETED;
int oldInput = TrInput;
// Is Lara dead?
if (CurrentLevel != 0 && (Lara.deathCount > 300 || Lara.deathCount > 60 && TrInput))
{
return GAME_STATUS_EXIT_TO_TITLE;//maybe do game over menu like some PSX versions have??
return GAME_STATUS::GAME_STATUS_EXIT_TO_TITLE; // Maybe do game over menu like some PSX versions have??
}
if (demoMode && TrInput == -1)
@ -416,7 +416,7 @@ GAME_STATUS ControlPhase(int numFrames, int demoMode)
GameTimer++;
}
return GAME_STATUS_NONE;
return GAME_STATUS::GAME_STATUS_NONE;
}
unsigned CALLBACK GameMain(void *)
@ -549,14 +549,14 @@ GAME_STATUS DoTitle(int index)
switch (inventoryResult)
{
case INV_RESULT_NEW_GAME:
return GAME_STATUS_NEW_GAME;
return GAME_STATUS::GAME_STATUS_NEW_GAME;
case INV_RESULT_LOAD_GAME:
return GAME_STATUS_LOAD_GAME;
return GAME_STATUS::GAME_STATUS_LOAD_GAME;
case INV_RESULT_EXIT_GAME:
return GAME_STATUS_EXIT_GAME;
return GAME_STATUS::GAME_STATUS_EXIT_GAME;
}
return GAME_STATUS_NEW_GAME;
return GAME_STATUS::GAME_STATUS_NEW_GAME;
}
GAME_STATUS DoLevel(int index, std::string ambient, bool loadFromSavegame)
@ -666,9 +666,9 @@ GAME_STATUS DoLevel(int index, std::string ambient, bool loadFromSavegame)
nframes = DrawPhase();
Sound_UpdateScene();
if (result == GAME_STATUS_EXIT_TO_TITLE ||
result == GAME_STATUS_LOAD_GAME ||
result == GAME_STATUS_LEVEL_COMPLETED)
if (result == GAME_STATUS::GAME_STATUS_EXIT_TO_TITLE ||
result == GAME_STATUS::GAME_STATUS_LOAD_GAME ||
result == GAME_STATUS::GAME_STATUS_LEVEL_COMPLETED)
{
g_GameScript->OnEnd();
g_GameScript->FreeLevelScripts();

View file

@ -14,7 +14,7 @@ struct ANIM_STRUCT;
struct MESH_INFO;
struct ROOM_INFO;
enum GAME_STATUS
enum class GAME_STATUS
{
GAME_STATUS_NONE,
GAME_STATUS_NEW_GAME,

View file

@ -369,9 +369,9 @@ int ObjectOnLOS2(GAME_VECTOR* start, GAME_VECTOR* end, PHD_VECTOR* vec, MESH_INF
int DoRayBox(GAME_VECTOR* start, GAME_VECTOR* end, BOUNDING_BOX* box, PHD_3DPOS* itemOrStaticPos, PHD_VECTOR* hitPos, short closesItemNumber)
{
// Ray
FXMVECTOR rayStart = { start->x, start->y, start->z };
FXMVECTOR rayEnd = { end->x, end->y, end->z };
FXMVECTOR rayDir = { end->x - start->x, end->y - start->y, end->z - start->z };
FXMVECTOR rayStart = { (float)start->x, (float)start->y, (float)start->z };
FXMVECTOR rayEnd = { (float)end->x, (float)end->y, (float)end->z };
FXMVECTOR rayDir = { (float)(end->x - start->x), (float)(end->y - start->y), (float)(end->z - start->z) };
XMVECTOR rayDirNormalized = XMVector3Normalize(rayDir);
// Create the bounding box for raw collision detection

View file

@ -209,13 +209,13 @@ void RefreshCamera(short type, short* data)
{
Camera.number = value;
if ((Camera.timer < 0) || (Camera.type == LOOK_CAMERA) || (Camera.type == COMBAT_CAMERA))
if ((Camera.timer < 0) || (Camera.type == CAMERA_TYPE::LOOK_CAMERA) || (Camera.type == CAMERA_TYPE::COMBAT_CAMERA))
{
Camera.timer = -1;
targetOk = 0;
break;
}
Camera.type = FIXED_CAMERA;
Camera.type = CAMERA_TYPE::FIXED_CAMERA;
targetOk = 1;
}
else
@ -223,7 +223,7 @@ void RefreshCamera(short type, short* data)
break;
case TO_TARGET:
if (Camera.type == LOOK_CAMERA || Camera.type == COMBAT_CAMERA)
if (Camera.type == CAMERA_TYPE::LOOK_CAMERA || Camera.type == CAMERA_TYPE::COMBAT_CAMERA)
break;
Camera.item = &g_Level.Items[value];
@ -278,7 +278,7 @@ void TestTriggers(FLOOR_INFO* floor, int x, int y, int z, bool heavy, int heavyF
short flags = *(data++);
short timer = flags & 0xFF;
if (Camera.type != HEAVY_CAMERA)
if (Camera.type != CAMERA_TYPE::HEAVY_CAMERA)
RefreshCamera(triggerType, data);
short value = 0;
@ -528,7 +528,7 @@ void TestTriggers(FLOOR_INFO* floor, int x, int y, int z, bool heavy, int heavyF
}
else
{
item->status == ITEM_INVISIBLE;
item->status = ITEM_INVISIBLE;
AddActiveItem(value);
}
}
@ -562,7 +562,7 @@ void TestTriggers(FLOOR_INFO* floor, int x, int y, int z, bool heavy, int heavyF
Camera.number = value;
if (Camera.type == LOOK_CAMERA || Camera.type == COMBAT_CAMERA && !(g_Level.Cameras[value].flags & 3))
if (Camera.type == CAMERA_TYPE::LOOK_CAMERA || Camera.type == CAMERA_TYPE::COMBAT_CAMERA && !(g_Level.Cameras[value].flags & 3))
break;
if (triggerType == TRIGGER_TYPES::COMBAT)
@ -574,7 +574,7 @@ void TestTriggers(FLOOR_INFO* floor, int x, int y, int z, bool heavy, int heavyF
if (Camera.number != Camera.last || triggerType == TRIGGER_TYPES::SWITCH)
{
Camera.timer = (trigger & 0xFF) * 30;
Camera.type = heavy ? HEAVY_CAMERA : FIXED_CAMERA;
Camera.type = heavy ? CAMERA_TYPE::HEAVY_CAMERA : CAMERA_TYPE::FIXED_CAMERA;
if (trigger & ONESHOT)
g_Level.Cameras[Camera.number].flags |= ONESHOT;
}
@ -683,7 +683,7 @@ void TestTriggers(FLOOR_INFO* floor, int x, int y, int z, bool heavy, int heavyF
} while (!(trigger & END_BIT));
if (cameraItem && (Camera.type == FIXED_CAMERA || Camera.type == HEAVY_CAMERA))
if (cameraItem && (Camera.type == CAMERA_TYPE::FIXED_CAMERA || Camera.type == CAMERA_TYPE::HEAVY_CAMERA))
Camera.item = cameraItem;
if (flip != -1)

View file

@ -118,7 +118,7 @@ void TriggerChaffSparkles (PHD_VECTOR* pos, PHD_VECTOR* vel, CVECTOR* color,int
sparkle->colFadeSpeed = 3;
sparkle->fadeToBlack = 5;
sparkle->sLife = sparkle->life = 10;
sparkle->transType = COLADD;
sparkle->transType = TransTypeEnum::COLADD;
sparkle->dynamic = true;
sparkle->x = pos->x + (GetRandomDraw() & 7) - 3;
@ -173,7 +173,7 @@ void TriggerChaffSmoke(PHD_VECTOR* pos, PHD_VECTOR* vel, int speed, bool moving,
smoke->sLife = rnd;
}
smoke->transType = COLADD;
smoke->transType = TransTypeEnum::COLADD;
smoke->x = pos->x + (GetRandomControl() & 7) - 3;
smoke->y = pos->y + (GetRandomControl() & 7) - 3;

View file

@ -416,7 +416,7 @@ void TriggerCyborgSpark(int x, int y, int z, short xv, short yv, short zv)
spark->dB = -64 - ((random & 0x7F) + 64);
spark->life = 10;
spark->sLife = 10;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->friction = 34;
spark->scalar = 1;
spark->x = (random & 7) + x - 3;
@ -458,7 +458,7 @@ void TriggerExplosionBubbles(int x, int y, int z, short roomNumber)
spark->sB = 0;
spark->colFadeSpeed = 8;
spark->fadeToBlack = 12;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->x = x;
spark->y = y;
spark->z = z;
@ -513,9 +513,9 @@ void TriggerExplosionSmokeEnd(int x, int y, int z, int uw)
spark->fadeToBlack = 64;
spark->life = spark->sLife= (GetRandomControl() & 0x1F) + 96;
if (uw)
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
else
spark->transType = COLSUB;
spark->transType = TransTypeEnum::COLSUB;
spark->x = (GetRandomControl() & 0x1F) + x - 16;
spark->y = (GetRandomControl() & 0x1F) + y - 16;
spark->z = (GetRandomControl() & 0x1F) + z - 16;
@ -571,7 +571,7 @@ void TriggerExplosionSmoke(int x, int y, int z, int uw)
spark->dB = 64;
spark->colFadeSpeed = 2;
spark->fadeToBlack = 8;
spark->transType = COLSUB;
spark->transType = TransTypeEnum::COLSUB;
spark->life = spark->sLife = (GetRandomControl() & 3) + 10;
spark->x = (GetRandomControl() & 0x1FF) + x - 256;
spark->y = (GetRandomControl() & 0x1FF) + y - 256;
@ -680,7 +680,7 @@ void TriggerExplosionSmoke(int x, int y, int z, int uw)
spark->colFadeSpeed = (GetRandomControl() & 3) + 8;
spark->sLife = spark->life = (GetRandomControl() & 3) + 28;
}
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
if (fxObj == -1)
{
if (type && type != 1)
@ -808,7 +808,7 @@ void TriggerSuperJetFlame(ITEM_INFO* item, int yvel, int deadly)
sptr->dB = 32;
sptr->colFadeSpeed = 8;
sptr->fadeToBlack = 8;
sptr->transType = COLADD;
sptr->transType = TransTypeEnum::COLADD;
sptr->life = sptr->sLife = (size >> 9) + (GetRandomControl() & 7) + 16;
sptr->x = (GetRandomControl() & 0x1F) + item->pos.xPos - 16;
sptr->y = (GetRandomControl() & 0x1F) + item->pos.yPos - 16;
@ -1146,7 +1146,7 @@ void TriggerWaterfallMist(int x, int y, int z, int angle)
spark->dG = 64;
spark->dB = 64;
spark->colFadeSpeed = 1;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 6;
spark->fadeToBlack = spark->life - 4;
dl = ((dh + (GlobalCounter << 6)) % 1536) + (GetRandomControl() & 0x3F) - 32;
@ -1180,7 +1180,7 @@ void TriggerWaterfallMist(int x, int y, int z, int angle)
spark->dG = 96;
spark->dB = 96;
spark->colFadeSpeed = 1;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 6;
spark->fadeToBlack = spark->life - 1;
dl = GetRandomControl() % 1408 + 64;
@ -1296,7 +1296,7 @@ void TriggerRocketFlame(int x, int y, int z, int xv, int yv, int zv, int itemNum
sptr->colFadeSpeed = 12 + (GetRandomControl() & 3);
sptr->fadeToBlack = 12;
sptr->sLife = sptr->life = (GetRandomControl() & 3) + 28;
sptr->transType = COLADD;
sptr->transType = TransTypeEnum::COLADD;
sptr->extras = 0;
sptr->dynamic = -1;
@ -1351,7 +1351,7 @@ void TriggerRocketFire(int x, int y, int z)
sptr->colFadeSpeed = 4 + (GetRandomControl() & 3);
sptr->fadeToBlack = 12;
sptr->sLife = sptr->life = (GetRandomControl() & 3) + 20;
sptr->transType = COLADD;
sptr->transType = TransTypeEnum::COLADD;
sptr->extras = 0;
sptr->dynamic = -1;
@ -1403,7 +1403,7 @@ void TriggerRocketSmoke(int x, int y, int z, int bodyPart)
sptr->colFadeSpeed = 4 + (GetRandomControl() & 3);
sptr->fadeToBlack = 12;
sptr->sLife = sptr->life = (GetRandomControl() & 3) + 20;
sptr->transType = COLADD;
sptr->transType = TransTypeEnum::COLADD;
sptr->extras = 0;
sptr->dynamic = -1;
@ -1457,7 +1457,7 @@ void TriggerFlashSmoke(int x, int y, int z, short roomNumber)
spark->dShade = -128;
spark->colFadeSpeed = 4;
spark->fadeToBlack = 16;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 0xF) + 64;
spark->x = (GetRandomControl() & 0x1F) + x - 16;
spark->y = (GetRandomControl() & 0x1F) + y - 16;
@ -1563,7 +1563,7 @@ void TriggerFireFlame(int x, int y, int z, int fxObj, int type)
spark->life = spark->sLife = (GetRandomControl() & 3) + 18;
}
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
if (fxObj != -1)
{
@ -1735,7 +1735,7 @@ void TriggerMetalSparks(int x, int y, int z, int xv, int yv, int zv, int additio
spark->colFadeSpeed = 3;
spark->fadeToBlack = 5;
spark->y = ((r >> 3) & 7) + y - 3;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->friction = 34;
spark->scalar = 1;
spark->z = ((r >> 6) & 7) + z - 3;
@ -1757,7 +1757,7 @@ void TriggerMetalSparks(int x, int y, int z, int xv, int yv, int zv, int additio
spark->sR = spark->dR >> 1;
spark->sG = spark->dG >> 1;
spark->fadeToBlack = 4;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->colFadeSpeed = (r & 3) + 8;
spark->sB = spark->dB >> 1;
spark->dR = 32;

View file

@ -1,5 +1,6 @@
#pragma once
#include "Specific\phd_global.h"
struct ITEM_INFO;
struct COLL_INFO;
@ -32,7 +33,7 @@ enum SpriteEnumFlag
SP_PLASMAEXP = 0x2000
};
enum TransTypeEnum
enum class TransTypeEnum
{
NOTRANS,
SEMITRANS,

View file

@ -391,7 +391,7 @@ namespace TEN::Effects::Lightning
spark->dR = r;
spark->sR = r;
spark->colFadeSpeed = 2;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->on = 1;
spark->dB = b;
spark->sB = b;

View file

@ -23,19 +23,6 @@ using std::vector;
using TEN::Renderer::g_Renderer;
using namespace TEN::Effects::Environment;
char FlareTable[121] =
{
0x60, 0x50, 0x00, 0x06, 0x00, 0x1F, 0x30, 0x20, 0x20, 0x0A, 0xFA, 0x1F, 0x20, 0x18,
0x18, 0x12, 0xFF, 0x1F, 0x50, 0x68, 0x40, 0x05, 0xFD, 0x1E, 0x40, 0x40, 0x40, 0x14,
0x00, 0x20, 0x60, 0x38, 0x38, 0x0E, 0x00, 0x0B, 0x50, 0x28, 0x20, 0x09, 0x00, 0x1D,
0x10, 0x18, 0x28, 0x02, 0x05, 0x1F, 0x08, 0x08, 0x18, 0x07, 0x08, 0x1F, 0x08, 0x10,
0x20, 0x04, 0x0A, 0x1F, 0x30, 0x18, 0x00, 0x02, 0x0D, 0x1F, 0x28, 0x60, 0x48, 0x01,
0x10, 0x0B, 0x28, 0x60, 0x48, 0x03, 0x14, 0x0B, 0x20, 0x10, 0x00, 0x06, 0x16, 0x1F,
0x20, 0x10, 0x00, 0x09, 0x17, 0x1E, 0x20, 0x10, 0x00, 0x03, 0x18, 0x1F, 0x20, 0x30,
0x18, 0x04, 0x1A, 0x1F, 0x08, 0x28, 0x70, 0x03, 0x1B, 0x0B, 0x08, 0x10, 0x00, 0x0A,
0x1D, 0x1E, 0x10, 0x10, 0x18, 0x11, 0x1F, 0x1D, 0xFF
};
char LaserSightActive = 0;
char LaserSightCol = 0;
int NextGunshell = 0;
@ -514,7 +501,7 @@ void TriggerGunSmoke(int x, int y, int z, short xv, short yv, short zv, byte ini
spark->dShade = 64;
}
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->x = x + (GetRandomControl() & 31) - 16;
spark->y = y + (GetRandomControl() & 31) - 16;
spark->z = z + (GetRandomControl() & 31) - 16;
@ -597,7 +584,7 @@ void TriggerShatterSmoke(int x, int y, int z)
spark->colFadeSpeed = 4;
spark->dShade = (GetRandomControl() & 0x1F) + 64;
spark->fadeToBlack = 24 - (GetRandomControl() & 7);
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 7) + 48;
spark->x = (GetRandomControl() & 0x1F) + x - 16;
spark->y = (GetRandomControl() & 0x1F) + y - 16;
@ -1028,7 +1015,7 @@ void AddWaterSparks(int x, int y, int z, int num)
spark->fadeToBlack = 8;
spark->life = 24;
spark->sLife = 24;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
int random = GetRandomControl() & 0xFFF;
spark->xVel = -phd_sin(random << 4) * 128;
spark->yVel = -640 - GetRandomControl();
@ -1372,7 +1359,7 @@ void TriggerShockwaveHitEffect(int x, int y, int z, byte r, byte g, byte b, shor
spark->dR = r;
spark->colFadeSpeed = 4;
spark->fadeToBlack = 8;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 16;
int speed = (GetRandomControl() & 0xF) + vel;
@ -1480,7 +1467,7 @@ void TriggerExplosionBubble(int x, int y, int z, short roomNum)
spark->sB = 0;
spark->colFadeSpeed = 8;
spark->fadeToBlack = 12;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->x = x;
spark->y = y;
spark->z = z;
@ -1537,7 +1524,7 @@ void TriggerExplosionBubble(int x, int y, int z, short roomNum)
spark->fadeToBlack = 64;
spark->life = spark->sLife = (GetRandomControl() & 0x1F) + 96;
if (unk)
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
else
spark->transType = 3;
spark->x = (GetRandomControl() & 0x1F) + x - 16;
@ -1607,7 +1594,7 @@ void TriggerFenceSparks(int x, int y, int z, int kill, int crane)
spark->life = (GetRandomControl() & 7) + 24;
spark->sLife = (GetRandomControl() & 7) + 24;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->dynamic = -1;
spark->x = x;
@ -1657,7 +1644,7 @@ void TriggerSmallSplash(int x, int y, int z, int num)
sptr->life = 24;
sptr->sLife = 24;
sptr->transType = COLADD;
sptr->transType = TransTypeEnum::COLADD;
angle = GetRandomControl() << 3;

View file

@ -1,6 +1,8 @@
#pragma once
#include "Specific\phd_global.h"
#include "Specific/phd_global.h"
#include "effects/effects.h"
#include "lara_struct.h"
struct ITEM_INFO;
struct SMOKE_SPARKS
@ -30,7 +32,7 @@ struct SMOKE_SPARKS
byte fadeToBlack;
signed char sLife;
signed char life;
byte transType;
TransTypeEnum transType;
byte fxObj;
byte nodeNumber;
byte mirror;

View file

@ -9,6 +9,8 @@
enum GAME_OBJECT_ID : short;
constexpr unsigned int NO_MESH_BITS = UINT_MAX;
enum AIObjectType
{
NO_AI = 0x0000,

View file

@ -142,255 +142,256 @@ COMBINELIST combine_table[max_combines] =
INVOBJ inventry_objects_list[INVENTORY_TABLE_SIZE] =
{
//weps
{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},
// Weapons
{ID_PISTOLS_ITEM, 6, 0.5f, ANGLE(90), ANGLE(243.69873046875f), ANGLE(276.1328125), OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_PISTOLS, STRING_PISTOLS, NO_MESH_BITS, INV_ROT_Y},
{ID_PISTOLS_AMMO_ITEM, 4, 0.5f, 0, ANGLE(90), 0, OPT_USE, STRING_PISTOLS_AMMO, NO_MESH_BITS, INV_ROT_Y},
{ID_UZI_ITEM, -4, 0.5f, ANGLE(-90) , ANGLE(135), ANGLE(90), OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_UZI, STRING_UZI , NO_MESH_BITS, INV_ROT_Y},
{ID_UZI_AMMO_ITEM, 5, 0.5f, 0, 5384, 0, OPT_USE, STRING_UZI_AMMO, NO_MESH_BITS, 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_SHOTGUN_AMMO1_ITEM, 0, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_SHOTGUN_AMMO1, NO_MESH_BITS, INV_ROT_Y},
{ID_SHOTGUN_AMMO2_ITEM, 0, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_SHOTGUN_AMMO2, NO_MESH_BITS, 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_AMMO_ITEM, 0, 0.5f, ANGLE(90), ANGLE(-16), 0, OPT_USE, STRING_REVOLVER_AMMO, NO_MESH_BITS, 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_CROSSBOW_AMMO1_ITEM, 0, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_CROSSBOW_AMMO1, NO_MESH_BITS, INV_ROT_Y},
{ID_CROSSBOW_AMMO2_ITEM, 0, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_CROSSBOW_AMMO1, NO_MESH_BITS, INV_ROT_Y},
{ID_CROSSBOW_AMMO3_ITEM, 0, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_CROSSBOW_AMMO1, NO_MESH_BITS, 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_ITEM, 0, 0.5f, ANGLE(-45), ANGLE(280), 0, OPT_EQUIP | OPT_SEPERATABLE | OPT_CHOOSEAMMO_HK, STRING_HK_SILENCED, NO_MESH_BITS, 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},
{ID_GRENADE_GUN_ITEM, 0, 0.5f, ANGLE(90), 0, ANGLE(65), OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_GRENADEGUN, STRING_GRENADE_LAUNCHER, NO_MESH_BITS, INV_ROT_Y},
{ID_GRENADE_AMMO1_ITEM, 3, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_GRENADE_AMMO1, NO_MESH_BITS, INV_ROT_Y},
{ID_GRENADE_AMMO2_ITEM, 3, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_GRENADE_AMMO2, NO_MESH_BITS, INV_ROT_Y},
{ID_GRENADE_AMMO3_ITEM, 3, 0.5f, ANGLE(90), 0, 0, OPT_USE, STRING_GRENADE_AMMO3, NO_MESH_BITS, INV_ROT_Y},
{ID_HARPOON_ITEM, 0, 0.5f, 0, ANGLE(-65), ANGLE(-20), OPT_EQUIP | OPT_COMBINABLE | OPT_CHOOSEAMMO_HARPOON, STRING_HARPOON_GUN, NO_MESH_BITS, INV_ROT_Y},
{ID_HARPOON_AMMO_ITEM, 3, 0.5f, 0, ANGLE(15), 0, OPT_USE, STRING_HARPOON_AMMO, NO_MESH_BITS, 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, NO_MESH_BITS, INV_ROT_Y},
{ID_ROCKET_LAUNCHER_AMMO_ITEM, 3, 0.5f, ANGLE(90), 0, ANGLE(15), OPT_USE, STRING_ROCKET_AMMO, NO_MESH_BITS, INV_ROT_Y},
//misc
// Misc
{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_TORCH, -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.3f, ANGLE(180), 0, 0, OPT_DIARY, 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_CLOCKWORK_BEETLE, -1, INV_ROT_Y},
{ID_CLOCKWORK_BEETLE_COMBO1, 18, 0.5f, 0, 0, 0, OPT_COMBINABLE, STRING_CLOCKWORK_BEETLE_COMBO1, -1, INV_ROT_Y},
{ID_CLOCKWORK_BEETLE_COMBO2, 14, 0.5f, 0, 0, 0, OPT_COMBINABLE, STRING_CLOCKWORK_BEETLE_COMBO2, -1, INV_ROT_Y},
{ID_WATERSKIN1_EMPTY, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_SMALL_EMPTY, -1, INV_ROT_Y},
{ID_WATERSKIN1_1, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_SMALL_1, -1, INV_ROT_Y},
{ID_WATERSKIN1_2, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_SMALL_2, -1, INV_ROT_Y},
{ID_WATERSKIN1_3, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_SMALL_3, -1, INV_ROT_Y},
{ID_WATERSKIN2_EMPTY, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_LARGE_EMPTY, -1, INV_ROT_Y},
{ID_WATERSKIN2_1, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_LARGE_1, -1, INV_ROT_Y},
{ID_WATERSKIN2_2, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_LARGE_2, -1, INV_ROT_Y},
{ID_WATERSKIN2_3, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_LARGE_3, -1, INV_ROT_Y},
{ID_WATERSKIN2_4, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_LARGE_4, -1, INV_ROT_Y},
{ID_WATERSKIN2_5, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_LARGE_5, -1, INV_ROT_Y},
{ID_LASERSIGHT_ITEM, 2, 0.5f, ANGLE(90), ANGLE(10), 0, OPT_USE | OPT_COMBINABLE, STRING_LASERSIGHT, NO_MESH_BITS, INV_ROT_Y},
{ID_SILENCER_ITEM, 1, 0.5f, 0, ANGLE(10), 0, OPT_USE | OPT_COMBINABLE, STRING_SILENCER, NO_MESH_BITS, INV_ROT_Y},
{ID_BIGMEDI_ITEM, 2, 0.7f, ANGLE(180), 0, 0, OPT_USE, STRING_LARGE_MEDIPACK, NO_MESH_BITS, INV_ROT_Y},
{ID_SMALLMEDI_ITEM, 0, 0.7f, ANGLE(180), ANGLE(112), 0, OPT_USE, STRING_SMALL_MEDIPACK, NO_MESH_BITS, INV_ROT_Y},
{ID_BINOCULARS_ITEM, -1, 0.5f, ANGLE(180), ANGLE(10), 0, OPT_USE, STRING_BINOCULARS, NO_MESH_BITS, INV_ROT_Y},
{ID_FLARE_INV_ITEM, 52, 0.8f, ANGLE(0), 0, 0, OPT_USE, STRING_FLARES, NO_MESH_BITS, INV_ROT_Y},
{ID_TIMEX_ITEM, 2, 0.4f, 0, 0, 0, OPT_STATS, STRING_TIMEX, NO_MESH_BITS, INV_ROT_Y},
{ID_PC_LOAD_INV_ITEM, 52, 0.3f, ANGLE(180), 0, 0, OPT_LOAD, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PC_LOAD_SAVE_ITEM, 52, 0.3f, ANGLE(180), 0, 0, OPT_SAVE, STRING_SAVE_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_BURNING_TORCH_ITEM, 14, 0.5f, 0, ANGLE(90), 0, OPT_USE, STRING_TORCH, NO_MESH_BITS, INV_ROT_Y},
{ID_CROWBAR_ITEM, 4, 0.5f, 0, ANGLE(90), 0, OPT_USE, STRING_CROWBAR, NO_MESH_BITS, INV_ROT_Y},
{ID_DIARY_ITEM, 0, 0.3f, ANGLE(180), 0, 0, OPT_DIARY, STRING_DIARY, NO_MESH_BITS, INV_ROT_Y},
{ID_COMPASS_ITEM, -14, 0.5f, 0, 0, 0, 0, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_CLOCKWORK_BEETLE, 14, 0.5f, 0, 0, 0, OPT_USE, STRING_CLOCKWORK_BEETLE, NO_MESH_BITS, INV_ROT_Y},
{ID_CLOCKWORK_BEETLE_COMBO1, 18, 0.5f, 0, 0, 0, OPT_COMBINABLE, STRING_CLOCKWORK_BEETLE_COMBO1, NO_MESH_BITS, INV_ROT_Y},
{ID_CLOCKWORK_BEETLE_COMBO2, 14, 0.5f, 0, 0, 0, OPT_COMBINABLE, STRING_CLOCKWORK_BEETLE_COMBO2, NO_MESH_BITS, INV_ROT_Y},
{ID_WATERSKIN1_EMPTY, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_SMALL_EMPTY, NO_MESH_BITS, INV_ROT_Y},
{ID_WATERSKIN1_1, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_SMALL_1, NO_MESH_BITS, INV_ROT_Y},
{ID_WATERSKIN1_2, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_SMALL_2, NO_MESH_BITS, INV_ROT_Y},
{ID_WATERSKIN1_3, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_SMALL_3, NO_MESH_BITS, INV_ROT_Y},
{ID_WATERSKIN2_EMPTY, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_LARGE_EMPTY, NO_MESH_BITS, INV_ROT_Y},
{ID_WATERSKIN2_1, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_LARGE_1, NO_MESH_BITS, INV_ROT_Y},
{ID_WATERSKIN2_2, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_LARGE_2, NO_MESH_BITS, INV_ROT_Y},
{ID_WATERSKIN2_3, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_LARGE_3, NO_MESH_BITS, INV_ROT_Y},
{ID_WATERSKIN2_4, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_LARGE_4, NO_MESH_BITS, INV_ROT_Y},
{ID_WATERSKIN2_5, 2, 0.5f, 0, ANGLE(285), 0, OPT_USE | OPT_COMBINABLE, STRING_WATERSKIN_LARGE_5, NO_MESH_BITS, INV_ROT_Y},
{ID_OPEN_DIARY_ITEM, 0, 0.9f, ANGLE(90), 0, 0, 0, 0, 0, 0},
//puzzles
// Puzzles
{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},
{ID_PUZZLE_ITEM1, 14, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM2, 14, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM3, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM4, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM5, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM6, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM7, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM8, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM9, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM10, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM11, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM12, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM13, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM14, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM15, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM16, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
// puzzle combos
// Puzzle combos
{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},
{ID_PUZZLE_ITEM1_COMBO1, 18, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM1_COMBO2, 18, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM2_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM2_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM3_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM3_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM4_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM4_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM5_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM5_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM6_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM6_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM7_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM7_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM8_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM8_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM9_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM9_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM10_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM10_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM11_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM11_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM12_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM12_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM13_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM13_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM14_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM14_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM15_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM15_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM16_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PUZZLE_ITEM16_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
//keys
// Keys
{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},
{ID_KEY_ITEM1, 14, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM2, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM3, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM4, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM5, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM6, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM7, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM8, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM9, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM10, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM11, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM12, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM13, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM14, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM15, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM16, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
//key combos
// Key combos
{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},
{ID_KEY_ITEM1_COMBO1, 18, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM1_COMBO2, 18, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM2_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM2_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM3_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM3_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM4_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM4_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM5_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM5_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM6_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM6_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM7_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM7_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM8_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM8_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM9_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM9_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM10_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM10_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM11_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM11_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM12_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM12_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM13_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM13_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM14_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM14_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM15_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM15_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM16_COMBO1, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_KEY_ITEM16_COMBO2, 8, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
//pickups
// Pickups
{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},
{ID_PICKUP_ITEM1, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM2, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM3, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM4, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM5, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM6, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM7, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM8, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM9, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM10, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM11, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM12, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM13, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM14, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM15, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM16, 8, 0.5f, 0, 0, 0, OPT_USE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
//pickup combos
// Pickup combos
{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},
{ID_PICKUP_ITEM1_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM1_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM2_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM2_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM3_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM3_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM4_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM4_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM5_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM5_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM6_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM6_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM7_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM7_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM8_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM8_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM9_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM9_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM10_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM10_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM11_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM11_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM12_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM12_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM13_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM13_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM14_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM14_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM15_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM15_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM16_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_PICKUP_ITEM16_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
//examines
// Examines
{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},
{ID_EXAMINE1, 4, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE2, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE3, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE4, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE5, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE6, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE7, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE8, 14, 0.5f, 0, 0, 0, OPT_EXAMINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
//examines combos
// Examines combos
{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},
{ID_EXAMINE1_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE1_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE2_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE2_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE3_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE3_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE4_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE4_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE5_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE5_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE6_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE6_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE7_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE7_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE8_COMBO1, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
{ID_EXAMINE8_COMBO2, 14, 0.5f, 0, 0, 0, OPT_USE | OPT_COMBINABLE, STRING_LOAD_GAME, NO_MESH_BITS, INV_ROT_Y},
};
titleSettings InventoryClass::Get_CurrentSettings()
@ -3626,7 +3627,7 @@ void InventoryClass::do_examine_mode()
void InventoryClass::draw_compass()
{
return;
g_Renderer.drawObjectOn2DPosition(130, 480, ID_COMPASS_ITEM, ANGLE(90), 0, ANGLE(180), inventry_objects_list[ID_COMPASS_ITEM].scale1);
g_Renderer.drawObjectOn2DPosition(130, 480, ID_COMPASS_ITEM, ANGLE(90), 0, ANGLE(180), inventry_objects_list[INV_OBJECT_COMPASS].scale1);
short compass_speed = phd_sin(compassNeedleAngle - LaraItem->pos.yRot);
short compass_angle = (LaraItem->pos.yRot + compass_speed) - ANGLE(180);
Matrix::CreateRotationY(compass_angle);

View file

@ -15,17 +15,13 @@
OBJECT_TEXTURE* WaterfallTextures[6];
float WaterfallY[6];
int lastWaterfallY = 0;
OBJECT_COLLISION_BOUNDS TightRopeBounds =
{
0xFF00, 0x0100, 0x0000, 0x0000, 0xFF00, 0x0100, 0xF8E4, 0x071C, 0xEAAC, 0x1554,
0xF8E4, 0x071C
};
PHD_VECTOR TightRopePos = { 0, 0, 0 };
OBJECT_COLLISION_BOUNDS TightRopeBounds =
{ -256, 256, 0, 0, -256, 256, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), ANGLE(-10), ANGLE(10) };
OBJECT_COLLISION_BOUNDS ParallelBarsBounds =
{
0xFD80, 0x0280, 0x02C0, 0x0340, 0xFFA0, 0x0060, 0xF8E4, 0x071C, 0xEAAC, 0x1554, 0xF8E4, 0x071C
};
{ -640, 640, 704, 832, -96, 96, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), ANGLE(-10), ANGLE(10) };
void ControlAnimatingSlots(short itemNumber)
{
@ -379,7 +375,7 @@ void HighObject2Control(short itemNumber)
spark->dG = (GetRandomControl() & 0x3F) + -128;
spark->fadeToBlack = 4;
spark->colFadeSpeed = (GetRandomControl() & 3) + 4;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 24;
spark->x = item->itemFlags[1] + (GetRandomControl() & 0x3F) + item->pos.xPos - 544;
spark->y = item->pos.yPos;

View file

@ -28,65 +28,40 @@
using namespace TEN::Entities::Generic;
OBJECT_COLLISION_BOUNDS PickUpBounds = // offset 0xA1338
{
0xFF00, 0x0100, 0xFF38, 0x00C8, 0xFF00, 0x0100, 0xF8E4, 0x071C, 0x0000, 0x0000,
0x0000, 0x0000
};
static PHD_VECTOR PickUpPosition(0, 0, -100); // offset 0xA1350
OBJECT_COLLISION_BOUNDS HiddenPickUpBounds = // offset 0xA135C
{
0xFF00, 0x0100, 0xFF9C, 0x0064, 0xFCE0, 0xFF00, 0xF8E4, 0x071C, 0xEAAC, 0x1554,
0x0000, 0x0000
};
static PHD_VECTOR HiddenPickUpPosition(0, 0, -690); // offset 0xA1374
OBJECT_COLLISION_BOUNDS CrowbarPickUpBounds = // offset 0xA1380
{
0xFF00, 0x0100, 0xFF9C, 0x0064, 0x00C8, 0x0200, 0xF8E4, 0x071C, 0xEAAC, 0x1554,
0x0000, 0x0000
};
static PHD_VECTOR CrowbarPickUpPosition(0, 0, 215); // offset 0xA1398
OBJECT_COLLISION_BOUNDS JobyCrowPickUpBounds = // offset 0xA13A4
{
0xFE00, 0x0000, 0xFF9C, 0x0064, 0x0000, 0x0200, 0xF8E4, 0x071C, 0xEAAC, 0x1554,
0x0000, 0x0000
};
static PHD_VECTOR JobyCrowPickUpPosition(-224, 0, 240); // offset 0xA13BC
OBJECT_COLLISION_BOUNDS PlinthPickUpBounds = // offset 0xA13C8
{
0xFF00, 0x0100, 0xFD80, 0x0280, 0xFE01, 0x0000, 0xF8E4, 0x071C, 0xEAAC, 0x1554,
0x0000, 0x0000
};
static PHD_VECTOR PlinthPickUpPosition(0, 0, -460); // offset 0xA13E0
OBJECT_COLLISION_BOUNDS PickUpBoundsUW = // offset 0xA13EC
{
0xFE00, 0x0200, 0xFE00, 0x0200, 0xFE00, 0x0200, 0xE002, 0x1FFE, 0xE002, 0x1FFE,
0xE002, 0x1FFE
};
static PHD_VECTOR PickUpPositionUW(0, -200, -350); // offset 0xA1404
OBJECT_COLLISION_BOUNDS SOBounds = // offset 0xA144C
{
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xF8E4, 0x071C, 0xEAAC, 0x1554,
0xF8E4, 0x071C
};
static PHD_VECTOR SOPos(0, 0, 0); // offset 0xA1464
short SearchCollectFrames[4] =
{
0x00B4, 0x0064, 0x0099, 0x0053
};
short SearchAnims[4] =
{
0x01D0, 0x01D1, 0x01D2, 0x01D8
};
short SearchOffsets[4] =
{
0x00A0, 0x0060, 0x00A0, 0x0070
};
OBJECT_COLLISION_BOUNDS MSBounds = // offset 0xA1488
{
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xF8E4, 0x071C, 0xEAAC, 0x1554,
0xF8E4, 0x071C
};
static PHD_VECTOR PickUpPosition(0, 0, -100);
OBJECT_COLLISION_BOUNDS PickUpBounds =
{ -256, 256, -200, 200, -256, 256, ANGLE(-10), ANGLE(10), 0, 0, 0, 0 };
static PHD_VECTOR HiddenPickUpPosition(0, 0, -690);
OBJECT_COLLISION_BOUNDS HiddenPickUpBounds =
{ -256, 256, -100, 100, -800, -256, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), 0, 0 };
static PHD_VECTOR CrowbarPickUpPosition(0, 0, 215);
OBJECT_COLLISION_BOUNDS CrowbarPickUpBounds =
{ -256, 256, -100, 100, 200, 512, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), 0, 0 };
static PHD_VECTOR JobyCrowPickUpPosition(-224, 0, 240);
OBJECT_COLLISION_BOUNDS JobyCrowPickUpBounds =
{ -512, 0, -100, 100, 0, 512, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), 0, 0 };
static PHD_VECTOR PlinthPickUpPosition(0, 0, -460);
OBJECT_COLLISION_BOUNDS PlinthPickUpBounds =
{ -256, 256, -640, 640, -511, 0, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), 0, 0 };
static PHD_VECTOR PickUpPositionUW(0, -200, -350);
OBJECT_COLLISION_BOUNDS PickUpBoundsUW =
{ -512, 512, -512, 512, -512, 512, ANGLE(-45), ANGLE(45), ANGLE(-45), ANGLE(45), ANGLE(-45), ANGLE(45) };
static PHD_VECTOR SOPos(0, 0, 0);
OBJECT_COLLISION_BOUNDS SOBounds =
{ 0, 0, 0, 0, 0, 0, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), ANGLE(-10), ANGLE(10) };
short SearchCollectFrames[4] = { 180, 100, 153, 83 };
short SearchAnims[4] = { LA_LOOT_CABINET, LA_LOOT_DRAWER, LA_LOOT_SHELF, LA_LOOT_CHEST };
short SearchOffsets[4] = { 160, 96, 160, 112 };
OBJECT_COLLISION_BOUNDS MSBounds =
{ 0, 0, 0, 0, 0, 0, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), ANGLE(-10), ANGLE(10) };
int NumRPickups;
short RPickups[16];

View file

@ -26,20 +26,11 @@ enum PuzzleType {
short puzzleItem;
/*bounds*/
OBJECT_COLLISION_BOUNDS PuzzleBounds =
{
0, 0,
-256, 256,
0, 0,
-ANGLE(10), ANGLE(10),
-ANGLE(30), ANGLE(30),
-ANGLE(10), ANGLE(10)
};
OBJECT_COLLISION_BOUNDS KeyHoleBounds =
{
0xFF00, 0x0100, 0x0000, 0x0000, 0x0000, 0x019C, 0xF8E4, 0x071C, 0xEAAC, 0x1554,
0xF8E4, 0x071C
};
{ 0, 0, -256, 256, 0, 0, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), ANGLE(-10), ANGLE(10) };
static PHD_VECTOR KeyHolePosition(0, 0, 312);
OBJECT_COLLISION_BOUNDS KeyHoleBounds =
{ -256, 256, 0, 0, 0, 412, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), ANGLE(-10), ANGLE(10) };
/*puzzles*/
void PuzzleHoleCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)

View file

@ -560,7 +560,7 @@ void CalculateSpotCameras()
if (CheckTrigger)
{
CAMERA_TYPE oldType = Camera.type;
Camera.type = HEAVY_CAMERA;
Camera.type = CAMERA_TYPE::HEAVY_CAMERA;
if (CurrentLevel != 0)
{
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, true);
@ -756,7 +756,7 @@ void CalculateSpotCameras()
if (CheckTrigger)
{
CAMERA_TYPE oldType = Camera.type;
Camera.type = HEAVY_CAMERA;
Camera.type = CAMERA_TYPE::HEAVY_CAMERA;
if (CurrentLevel)
{
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, true);
@ -778,8 +778,8 @@ void CalculateSpotCameras()
UseSpotCam = 0;
Lara.uncontrollable = false;
CheckTrigger = 0;
Camera.oldType = FIXED_CAMERA;
Camera.type = CHASE_CAMERA;
Camera.oldType = CAMERA_TYPE::FIXED_CAMERA;
Camera.type = CAMERA_TYPE::CHASE_CAMERA;
Camera.speed = 1;
if (s->flags & SCF_PAN_TO_LARA_CAM)
@ -820,8 +820,8 @@ void CalculateSpotCameras()
CameraSpeed[2] = SpotCam[CurrentSplineCamera - 1].speed;
memcpy((char*)& Backup, (char*)& Camera, sizeof(CAMERA_INFO));
Camera.oldType = FIXED_CAMERA;
Camera.type = CHASE_CAMERA;
Camera.oldType = CAMERA_TYPE::FIXED_CAMERA;
Camera.type = CAMERA_TYPE::CHASE_CAMERA;
Camera.speed = 1;
int elevation = Camera.targetElevation;
@ -881,7 +881,7 @@ void CalculateSpotCameras()
{
if (!SpotCamFirstLook)
{
Camera.oldType = FIXED_CAMERA;
Camera.oldType = CAMERA_TYPE::FIXED_CAMERA;
SpotCamFirstLook = true;
}

View file

@ -91,7 +91,7 @@ namespace TEN::Entities::Effects
spark->dG = spark->dR = (GetRandomControl() & 0x7F) + 32;
spark->fadeToBlack = 8;
spark->colFadeSpeed = (GetRandomControl() & 3) + 4;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 16;
spark->y = 0;
spark->x = (GetRandomControl() & 0xF) - 8;

View file

@ -40,7 +40,7 @@ void TriggerElectricityWiresSparks(int x, int z, byte objNum, byte node, int fla
}
spark->fxObj = objNum;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->flags = SP_ITEM | SP_NODEATTACH | SP_SCALE | SP_DEF;
spark->nodeNumber = node;
spark->x = x;
@ -98,7 +98,7 @@ void TriggerLaraElectricitySparks(int flame)
spark->sG = color;
spark->dB = color;
spark->dG = color / 2;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->fadeToBlack = 4;
spark->life = 12;
spark->sLife = 12;

View file

@ -31,7 +31,7 @@ namespace TEN::Entities::Generic
spark->fadeToBlack = 8;
spark->colFadeSpeed = (GetRandomControl() & 3) + 12;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 7) + 24;
spark->x = (GetRandomControl() & 0xF) - 8;

View file

@ -168,7 +168,7 @@ namespace TEN::Entities::Traps
spark->colFadeSpeed = 8;
spark->fadeToBlack = 4;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 32;

View file

@ -258,7 +258,7 @@ void BigRatControl(short itemNumber)
CreatureJoint(item, 0, head);
CreatureAnimation(itemNumber, angle, 0);
if (RatIsInWater)
if (RatIsInWater(item, big_rat))
{
CreatureUnderwater(item, CLICK(0));
item->pos.yPos = WaterHeight;

View file

@ -211,7 +211,7 @@ void DragonCollision(short itemNum, ITEM_INFO* laraitem, COLL_INFO* coll)
Lara.meshPtrs[LM_RHAND] = Objects[ID_LARA_EXTRA_ANIMS].meshIndex + LM_RHAND;
Camera.type = CINEMATIC_CAMERA;
Camera.type = CAMERA_TYPE::CINEMATIC_CAMERA;
((CREATURE_INFO*)g_Level.Items[(short)item->data].data)->flags = -1;

View file

@ -96,7 +96,7 @@ void DoBoatWakeEffect(ITEM_INFO* boat)
spark->dG = 64;
spark->dB = 64;
spark->colFadeSpeed = 1;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 6;
spark->fadeToBlack = spark->life - 4;
spark->x = (BOAT_SIDE * phd_sin(boat->pos.yRot) >> W2V_SHIFT) + (GetRandomControl() & 128) + x - 8;
@ -124,7 +124,7 @@ void DoBoatWakeEffect(ITEM_INFO* boat)
spark->dG = 64;
spark->dB = 64;
spark->colFadeSpeed = 1;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 6;
spark->fadeToBlack = spark->life - 4;
spark->x = (BOAT_SIDE * phd_sin(boat->pos.yRot) >> W2V_SHIFT) + (GetRandomControl() & 128) + x - 8;

View file

@ -321,7 +321,7 @@ void DoSnowEffect(ITEM_INFO* skidoo)
spark->dG = 64;
spark->dB = 64;
spark->colFadeSpeed = 1;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 6;
spark->fadeToBlack = spark->life - 4;
spark->x = (GetRandomControl() & 255) + skidoo->pos.xPos - 8;

View file

@ -36,7 +36,7 @@ static void TriggerPilotFlame(int itemnum)
spark->colFadeSpeed = 12 + (GetRandomControl() & 3);
spark->fadeToBlack = 4;
spark->sLife = spark->life = (GetRandomControl() & 3) + 20;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->extras = 0;
spark->dynamic = -1;
spark->x = (GetRandomControl() & 31) - 16;
@ -86,7 +86,7 @@ static void TriggerFlamethrowerFlame(int x, int y, int z, int xv, int yv, int zv
spark->sLife = spark->life = (GetRandomControl() & 3) + 20;
}
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->extras = 0;
spark->dynamic = -1;

View file

@ -52,9 +52,9 @@ static void TriggerShivaSmoke(long x, long y, long z, long uw)
sptr->sLife = sptr->life = (GetRandomControl() & 31) + 96;
if (uw)
sptr->transType = COLADD;
sptr->transType = TransTypeEnum::COLADD;
else
sptr->transType = COLADD;
sptr->transType = TransTypeEnum::COLADD;
sptr->extras = 0;
sptr->dynamic = -1;

View file

@ -109,7 +109,7 @@ static void TriggerTonyFlame(short itemNum, int hand)
sptr->colFadeSpeed = 12 + (GetRandomControl() & 3);
sptr->fadeToBlack = 8;
sptr->sLife = sptr->life = (GetRandomControl() & 7) + 24;
sptr->transType = COLADD;
sptr->transType = TransTypeEnum::COLADD;
sptr->extras = NULL;
sptr->dynamic = -1;
sptr->x = ((GetRandomControl() & 15) - 8);
@ -167,7 +167,7 @@ static void TriggerFireBallFlame(short fxNumber, long type, long xv, long yv, lo
sptr->colFadeSpeed = 12 + (GetRandomControl() & 3);
sptr->fadeToBlack = 8;
sptr->sLife = sptr->life = (GetRandomControl() & 7) + 24;
sptr->transType = COLADD;
sptr->transType = TransTypeEnum::COLADD;
sptr->extras = 0;
sptr->dynamic = -1;
sptr->x = ((GetRandomControl() & 15) - 8);

View file

@ -482,7 +482,7 @@ static int DoRubberBoatDynamics(int height, int fallspeed, int *y)
{
fallspeed += ((height - *y - fallspeed) / 8);
if (fallspeed < -20)
fallspeed - 20;
fallspeed = -20;
if (*y > height)
*y = height;
@ -787,7 +787,7 @@ static void TriggerRubberBoatMist(long x, long y, long z, long speed, short angl
sptr->colFadeSpeed = 4 + (GetRandomControl() & 3);
sptr->fadeToBlack = 12 - (snow * 8);
sptr->sLife = sptr->life = (GetRandomControl() & 3) + 20;
sptr->transType = COLADD;
sptr->transType = TransTypeEnum::COLADD;
sptr->extras = 0;
sptr->dynamic = -1;

View file

@ -179,7 +179,7 @@ static void TriggerSubMist(long x, long y, long z, long speed, short angle)
sptr->colFadeSpeed = 4 + (GetRandomControl() & 3);
sptr->fadeToBlack = 12;
sptr->sLife = sptr->life = (GetRandomControl() & 3) + 20;
sptr->transType = COLADD;
sptr->transType = TransTypeEnum::COLADD;
sptr->extras = 0;
sptr->dynamic = -1;

View file

@ -549,7 +549,7 @@ namespace TEN::Entities::TR4
// Vehicle handling
if (Lara.Vehicle != NO_ITEM && info.bite)
currentCreature->mood == ESCAPE_MOOD;
currentCreature->mood = ESCAPE_MOOD;
CreatureMood(item, &info, VIOLENT);

View file

@ -67,7 +67,7 @@ namespace TEN::Entities::TR4
}
spark->fadeToBlack = 8;
spark->colFadeSpeed = (GetRandomControl() & 3) + 4;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 16;
spark->y = 0;
spark->x = (GetRandomControl() & 0xF) - 8;
@ -270,7 +270,7 @@ namespace TEN::Entities::TR4
spark->colFadeSpeed = 4;
spark->dShade = (GetRandomControl() & 0x1F) + 96;
spark->fadeToBlack = 24 - (GetRandomControl() & 7);
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 7) + 48;
spark->x = (GetRandomControl() & 0x1F) + x - 16;
spark->y = (GetRandomControl() & 0x1F) + y - 16;

View file

@ -114,7 +114,7 @@ static void TriggerHarpySparks(int x, int y, int z, int xv, int yv, int zv)
spark->sLife = 16;
spark->colFadeSpeed = 4;
spark->y = y;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->fadeToBlack = 4;
spark->x = x;
spark->z = z;

View file

@ -74,8 +74,9 @@ namespace TEN::Entities::TR4
BITE_INFO sasGun = { 0, 300, 64, 7 };
OBJECT_COLLISION_BOUNDS SasDragBlokeBounds = { 0xFF00, 0x100, 0xFF9C, 0x0064, 0xFE00, 0xFE34, 0xF8E4, 0x071C, 0xEAAC, 0x1554, 0x0000, 0x0000 };
PHD_VECTOR SasDragBlokePosition = { 0, 0, -460 };
OBJECT_COLLISION_BOUNDS SasDragBlokeBounds =
{ -256, 256, -64, 100, -200, -460, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), 0, 0 };
void InitialiseSas(short itemNumber)
{
@ -151,7 +152,7 @@ namespace TEN::Entities::TR4
// Vehicle handling
if (Lara.Vehicle != NO_ITEM && info.bite)
creature->mood == ESCAPE_MOOD;
creature->mood = ESCAPE_MOOD;
CreatureMood(item, &info, creature->enemy != LaraItem);
angle = CreatureTurn(item, creature->maximumTurn);

View file

@ -466,7 +466,7 @@ void TriggerSethaSparks1(int x, int y, int z, short xv, short yv, short zv)
spark->life = 16;
spark->sLife = 16;
spark->colFadeSpeed = 4;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->fadeToBlack = 4;
spark->x = x;
spark->y = y;
@ -502,7 +502,7 @@ void TriggerSethaSparks2(short itemNumber, char node, int size)
spark->dB = spark->dG + 64;
spark->fadeToBlack = 8;
spark->colFadeSpeed = (GetRandomControl() & 3) + 4;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 7) + 20;
spark->x = (GetRandomControl() & 0xF) - 8;
spark->y = 0;

View file

@ -203,7 +203,7 @@ void TroopsControl(short itemNumber)
// Vehicle handling
if (Lara.Vehicle != NO_ITEM && info.bite)
creature->mood == ESCAPE_MOOD;
creature->mood = ESCAPE_MOOD;
angle = CreatureTurn(item, creature->maximumTurn);

View file

@ -476,7 +476,7 @@ namespace TEN::Entities::TR4
spark->colFadeSpeed = 4;
spark->fadeToBlack = 7;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
life = (GetRandomControl() & 7) + 12;
spark->life = life;
spark->sLife = life;
@ -541,7 +541,7 @@ namespace TEN::Entities::TR4
spark->dB = dB;
spark->colFadeSpeed = 4;
spark->fadeToBlack = 7;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
short life = (GetRandomControl() & 7) + 32;
spark->life = life;
spark->sLife = life;

View file

@ -8,12 +8,9 @@
#include "setup.h"
#include "health.h"
OBJECT_COLLISION_BOUNDS SarcophagusBounds =
{
0xFE00, 512, 0xFF9C, 100, 0xFE00, 0,
0xF8E4, 1820, 0xEAAC, 5460, 0, 0
};
static PHD_VECTOR SarcophagusPosition(0, 0, -300);
OBJECT_COLLISION_BOUNDS SarcophagusBounds =
{ -512, 512, -100, 100, -512, 0, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), 0, 0 };
void InitialiseSarcophagus(short itemNum)
{

View file

@ -15,10 +15,7 @@ using namespace TEN::Entities::Switches;
using namespace TEN::Entities::TR4;
OBJECT_COLLISION_BOUNDS ScalesBounds =
{
0xFA80, 0xFA80, 0x0000, 0x0000, 0xFE00, 0x0200,
0xF8E4, 0x071C, 0xEAAC, 0x1554, 0xF8E4, 0x071C
};
{ -1408, -1408, 0, 0, -512, 512, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), ANGLE(-10), ANGLE(10) };
void ScalesControl(short itemNum)
{

View file

@ -16,12 +16,9 @@ char SenetDisplacement, ActiveSenetPieces[6], SenetBoard[17];
int SenetTargetX, SenetTargetZ;
char ActivePiece = -1;
OBJECT_COLLISION_BOUNDS GameStixBounds =
{
0xFF00, 0x0100, 0xFF38, 0x00C8, 0xFF00, 0x0100, 0xF8E4, 0x071C, 0xEAAC, 0x1554, 0x0, 0x0
};
static PHD_VECTOR GameStixPosition = { 0, 0, -100 };
OBJECT_COLLISION_BOUNDS GameStixBounds =
{ -256, 256, -200, 200, -256, 256, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), 0, 0 };
void InitialiseGameStix(short itemNumber)
{

View file

@ -40,14 +40,14 @@ namespace TEN::Entities::TR4
short rotations[8] =
{
0x8000,
0xa000,
0xc000,
0xe000,
0,
0x2000,
0x4000,
0x6000
ANGLE(180),
ANGLE(225),
ANGLE(270),
ANGLE(315),
ANGLE(0),
ANGLE(45),
ANGLE(90),
ANGLE(135)
};
if (item->triggerFlags & 8)

View file

@ -332,7 +332,7 @@ static void TriggerJeepExhaustSmoke(int x, int y, int z, short angle, short spee
spark->sLife = 9;
}
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->x = (GetRandomControl() & 0xF) + x - 8;
spark->y = (GetRandomControl() & 0xF) + y - 8;
spark->z = (GetRandomControl() & 0xF) + z - 8;

View file

@ -439,7 +439,7 @@ static void TriggerMotorbikeExhaustSmoke(int x, int y, int z, short angle, short
sptr->sLife = rnd;
}
sptr->transType = COLADD;
sptr->transType = TransTypeEnum::COLADD;
sptr->x = x + (GetRandomControl() & 0xF) - 8;
sptr->y = y + (GetRandomControl() & 0xF) - 8;
sptr->z = z + (GetRandomControl() & 0xF) - 8;

View file

@ -161,7 +161,7 @@ void SmokeEmitterControl(short itemNumber)
spark->dR = 48;
spark->dG = 48;
spark->dB = 48;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->x = (GetRandomControl() & 0x3F) + item->pos.xPos - 32;
spark->y = (GetRandomControl() & 0x3F) + item->pos.yPos - 32;
spark->z = (GetRandomControl() & 0x3F) + item->pos.zPos - 32;
@ -269,9 +269,9 @@ void SmokeEmitterControl(short itemNumber)
spark->colFadeSpeed = (GetRandomControl() & 3) + 8;
spark->life = spark->sLife = (GetRandomControl() & 7) + 28;
if (item->objectNumber == ID_SMOKE_EMITTER_WHITE)
spark->transType = COLSUB;
spark->transType = TransTypeEnum::COLSUB;
else
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->x = (GetRandomControl() & 0x3F) + item->pos.xPos - 32;
spark->y = (GetRandomControl() & 0x3F) + item->pos.yPos - 32;
spark->z = (GetRandomControl() & 0x3F) + item->pos.zPos - 32;

View file

@ -31,7 +31,7 @@ static void TriggerAutoGunSmoke(PHD_VECTOR* pos, char shade)
spark->dShade = shade;
spark->colFadeSpeed = 4;
spark->fadeToBlack = 32;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 40;
spark->x = pos->x - 16 + (GetRandomControl() & 0x1F);
spark->y = (GetRandomControl() & 0x1F) + pos->y - 16;

View file

@ -64,7 +64,7 @@ static void TriggerHitmanSparks(int x, int y, int z, short xv, short yv, short z
spark->dB = -64 - spark->dG;
spark->life = 10;
spark->sLife = 10;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->friction = 34;
spark->scalar = 1;
spark->flags = SP_SCALE;

View file

@ -164,7 +164,7 @@ void ControlGunShip(short itemNumber)
spark->dR = 0;
spark->dG = 0;
spark->colFadeSpeed = 12;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->fadeToBlack = 0;
spark->life = 12;
spark->sLife = 12;

View file

@ -76,7 +76,7 @@ void TriggerHydraMissileSparks(PHD_VECTOR* pos, short xv, short yv, short zv)
spark->dG = spark->dR / 2;
spark->fadeToBlack = 8;
spark->colFadeSpeed = (GetRandomControl() & 3) + 8;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->dynamic = -1;
spark->life = spark->sLife = (GetRandomControl() & 3) + 20;
spark->x = (GetRandomControl() & 0xF) - 8;
@ -120,7 +120,7 @@ static void TriggerHydraSparks(short itemNumber, int frame)
spark->dG = spark->dR / 2;
spark->fadeToBlack = 4;
spark->colFadeSpeed = (GetRandomControl() & 3) + 8;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->dynamic = -1;
spark->life = spark->sLife = (GetRandomControl() & 3) + 32;
spark->x = (GetRandomControl() & 0xF) - 8;

View file

@ -55,7 +55,7 @@ static void TriggerLaserHeadSparks(PHD_VECTOR* pos, int count, byte r, byte g, b
spark->fadeToBlack = 0;
spark->life = 9 << unk;
spark->sLife = 9 << unk;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->x = pos->x;
spark->y = pos->y;
spark->z = pos->z;

View file

@ -81,7 +81,7 @@ static void RomanStatueHitEffect(ITEM_INFO* item, PHD_VECTOR* pos, int joint)
spark->colFadeSpeed = 4;
spark->fadeToBlack = 32;
spark->dShade = (GetRandomControl() & 0xF) + 64;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 64;
spark->x = (GetRandomControl() & 0x1F) + pos->x - 16;
spark->y = (GetRandomControl() & 0x1F) + pos->y - 16;
@ -110,7 +110,7 @@ static void TriggerRomanStatueShockwaveAttackSparks(int x, int y, int z, byte r,
spark->colFadeSpeed = 2;
spark->dR = r;
spark->sR = r;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = 16;
spark->sLife = 16;
spark->x = x;
@ -160,7 +160,7 @@ static void TriggerRomanStatueScreamingSparks(int x, int y, int z, short xv, sho
spark->xVel = xv;
spark->yVel = yv;
spark->zVel = zv;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->friction = 34;
spark->maxYvel = 0;
spark->gravity = 0;
@ -185,7 +185,7 @@ static void TriggerRomanStatueAttackEffect1(short itemNum, int factor)
spark->dG = spark->dB / 2;
spark->fadeToBlack = 4;
spark->colFadeSpeed = (GetRandomControl() & 3) + 8;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->dynamic = -1;
spark->life = spark->sLife = (GetRandomControl() & 3) + 32;
spark->y = 0;
@ -243,7 +243,7 @@ void TriggerRomanStatueMissileSparks(PHD_VECTOR* pos, char fxObj)
spark->dB = spark->dG / 2;
spark->fadeToBlack = 8;
spark->colFadeSpeed = (GetRandomControl() & 3) + 8;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->dynamic = -1;
spark->life = spark->sLife = (GetRandomControl() & 3) + 20;
spark->x = (GetRandomControl() & 0xF) - 8;

View file

@ -28,7 +28,7 @@ static void TriggerSubmarineSparks(short itemNumber)
spark->dR = spark->dG / 2;
spark->dB = spark->dG / 2;
spark->sLife = 2;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->fadeToBlack = 0;
spark->flags = 20650;
spark->fxObj = itemNumber;
@ -59,7 +59,7 @@ static void TriggerTorpedoBubbles(PHD_VECTOR* pos1, PHD_VECTOR* pos2, char facto
spark->dB = 80;
spark->colFadeSpeed = 2;
spark->fadeToBlack = 8;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 7) + 16;
spark->x = pos1->x + (GetRandomControl() & 0x1F);
spark->y = (GetRandomControl() & 0x1F) + pos1->y - 16;
@ -92,7 +92,7 @@ static void TriggerTorpedoSparks2(PHD_VECTOR* pos1, PHD_VECTOR* pos2, char scale
spark->dB = -128;
spark->colFadeSpeed = 2;
spark->fadeToBlack = 8;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 7) + 16;
spark->x = pos1->x + (GetRandomControl() & 0x1F);
spark->y = (GetRandomControl() & 0x1F) + pos1->y - 16;

View file

@ -12,13 +12,10 @@
#include "setup.h"
#include "tr5_pushableblock_info.h"
static OBJECT_COLLISION_BOUNDS PushableBlockBounds = {
0x0000, 0x0000, 0xFFC0, 0x0000,
0x0000, 0x0000, 0xF8E4, 0x071C,
0xEAAC, 0x1554, 0xF8E4, 0x071C
};
PHD_VECTOR PushableBlockPos = { 0, 0, 0 };
static OBJECT_COLLISION_BOUNDS PushableBlockBounds =
{ 0, 0, -64, 0, 0, 0, ANGLE(-10), ANGLE(10), ANGLE(-30), ANGLE(30), ANGLE(-10), ANGLE(10) };
int DoPushPull = 0;
void ClearMovableBlockSplitters(int x, int y, int z, short roomNumber)

View file

@ -144,7 +144,7 @@ void ControlTeleporter(short itemNumber)
v35->FadeToBlack = 4;
v35->Life = 24;
v35->sLife = 24;
v35->TransType = 2;
v35->TransType = TransTypeEnum::COLADD;
v35->x = src.xPos;
v35->y = src.yPos;
v35->z = src.zPos;

View file

@ -58,7 +58,7 @@ static void VentilatorEffect(BOUNDING_BOX* bounds, int intensity, short rot, int
spark->colFadeSpeed = 4;
spark->fadeToBlack = 8;
spark->dB = (speed * ((GetRandomControl() & 8) + 48)) / 128;
spark->transType = COLADD;
spark->transType = TransTypeEnum::COLADD;
spark->life = spark->sLife = (GetRandomControl() & 3) + 20;
if (abs(intensity) == 1)

View file

@ -52,7 +52,7 @@ enum GAME_OBJECT_ID : short
ID_KAYAK_LARA_ANIMS,
ID_KAYAK,
ID_UPV_LARA_ANIMS,
ID_UPV, // TR3 - 90% (Need new render) (lara cant enter)
ID_UPV, // TR3 - 90% (Need new render)
ID_MINECART_LARA_ANIMS,
ID_MINECART,
ID_JEEP_LARA_ANIMS,
@ -98,7 +98,7 @@ enum GAME_OBJECT_ID : short
ID_BABOON_NORMAL,
ID_BABOON_INV,
ID_BABOON_SILENT,
ID_LITTLE_BEETLE, // TR4 -
ID_LITTLE_BEETLE, // TR4 - OK
ID_LOCUSTS, // TR4 - OK
ID_SHARK, // DEPRECATED?
ID_HUSKIE,

View file

@ -302,7 +302,7 @@ namespace TEN::Renderer
RendererObject& laraObj = *m_moveableObjects[ID_LARA];
RendererObject& laraSkin = *m_moveableObjects[ID_LARA_SKIN];
RendererRoom &const room = m_rooms[LaraItem->roomNumber];
RendererRoom& room = m_rooms[LaraItem->roomNumber];
m_stItem.World = m_LaraWorldMatrix;
m_stItem.Position = Vector4(LaraItem->pos.xPos, LaraItem->pos.yPos, LaraItem->pos.zPos, 1.0f);
@ -434,7 +434,7 @@ namespace TEN::Renderer
void Renderer11::drawGunShells(RenderView& view)
{
RendererRoom &const room = m_rooms[LaraItem->roomNumber];
RendererRoom& room = m_rooms[LaraItem->roomNumber];
RendererItem* item = &m_items[Lara.itemNumber];
m_stItem.AmbientLight = room.AmbientLight;
@ -2351,7 +2351,7 @@ namespace TEN::Renderer
for (int i = 0; i < view.itemsToDraw.size(); i++)
{
RendererItem* item = view.itemsToDraw[i];
RendererRoom &const room = m_rooms[item->Item->roomNumber];
RendererRoom& room = m_rooms[item->Item->roomNumber];
RendererObject& moveableObj = *m_moveableObjects[item->Item->objectNumber];
if (moveableObj.DoNotDraw)
@ -2393,7 +2393,7 @@ namespace TEN::Renderer
if (m_rooms.size() <= item->Item->roomNumber){
return;
}
RendererRoom &const room = m_rooms[item->Item->roomNumber];
RendererRoom& room = m_rooms[item->Item->roomNumber];
RendererObject& moveableObj = *m_moveableObjects[item->Item->objectNumber];
OBJECT_INFO* obj = &Objects[item->Item->objectNumber];
@ -2547,7 +2547,7 @@ namespace TEN::Renderer
if (!(msh->flags & 1))
continue;
RendererRoom &const room = m_rooms[view.staticsToDraw[i]->RoomIndex];
RendererRoom& room = m_rooms[view.staticsToDraw[i]->RoomIndex];
if(!m_staticObjects[msh->staticNumber])
continue;
RendererObject& staticObj = *m_staticObjects[msh->staticNumber];

View file

@ -30,7 +30,7 @@ namespace TEN::Renderer
if (m_rooms.size() < roomNumber) {
return;
}
RendererRoom &const room = m_rooms[roomNumber];
RendererRoom& room = m_rooms[roomNumber];
ROOM_INFO* r = room.Room;
@ -77,7 +77,7 @@ namespace TEN::Renderer
if (m_rooms.size() < roomNumber) {
return;
}
RendererRoom &const room = m_rooms[roomNumber];
RendererRoom& room = m_rooms[roomNumber];
ROOM_INFO* r = room.Room;
if (r->mesh.size() <= 0)
return;
@ -111,7 +111,7 @@ namespace TEN::Renderer
if (m_rooms.size() < roomNumber) {
return;
}
RendererRoom &const room = m_rooms[roomNumber];
RendererRoom& room = m_rooms[roomNumber];
ROOM_INFO* r = room.Room;
@ -213,7 +213,7 @@ namespace TEN::Renderer
if (m_rooms.size() < roomNumber){
return;
}
RendererRoom &const room = m_rooms[roomNumber];
RendererRoom& room = m_rooms[roomNumber];
ROOM_INFO* r = room.Room;
LinearArrayBuffer<RendererLight*, 8> tempLights;
@ -328,7 +328,7 @@ namespace TEN::Renderer
if (m_rooms.size() < roomNumber){
return;
}
RendererRoom &const room = m_rooms[roomNumber];
RendererRoom& room = m_rooms[roomNumber];
ROOM_INFO* r = &g_Level.Rooms[roomNumber];
int numLights = room.Lights.size();
@ -364,7 +364,7 @@ namespace TEN::Renderer
// m_lightsToDraw.resize(32);
// Now try to search for a shadow caster, using Lara as reference
RendererRoom &const room = m_rooms[LaraItem->roomNumber];
RendererRoom& room = m_rooms[LaraItem->roomNumber];
// Search for the brightest light. We do a simple version of the classic calculation done in pixel shader.
RendererLight* brightestLight = NULL;
@ -431,7 +431,7 @@ namespace TEN::Renderer
{
if (m_rooms.size() < roomNumber)
return;
RendererRoom &const room = m_rooms[roomNumber];
RendererRoom& room = m_rooms[roomNumber];
ROOM_INFO* r = room.Room;

View file

@ -250,7 +250,7 @@ void TEN::Renderer::Renderer11::drawLara(RenderView& view, bool transparent, boo
RendererObject& laraObj = *m_moveableObjects[ID_LARA];
RendererObject& laraSkin = *m_moveableObjects[ID_LARA_SKIN];
RendererRoom &const room = m_rooms[LaraItem->roomNumber];
RendererRoom& room = m_rooms[LaraItem->roomNumber];
m_stItem.World = m_LaraWorldMatrix;
m_stItem.Position = Vector4(LaraItem->pos.xPos, LaraItem->pos.yPos, LaraItem->pos.zPos, 1.0f);

View file

@ -269,17 +269,17 @@ bool GameFlow::DoGameflow()
switch (status)
{
case GAME_STATUS_EXIT_GAME:
case GAME_STATUS::GAME_STATUS_EXIT_GAME:
return true;
case GAME_STATUS_EXIT_TO_TITLE:
case GAME_STATUS::GAME_STATUS_EXIT_TO_TITLE:
CurrentLevel = 0;
break;
case GAME_STATUS_NEW_GAME:
case GAME_STATUS::GAME_STATUS_NEW_GAME:
CurrentLevel = (SelectedLevelForNewGame != 0 ? SelectedLevelForNewGame : 1);
SelectedLevelForNewGame = 0;
InitialiseGame = true;
break;
case GAME_STATUS_LOAD_GAME:
case GAME_STATUS::GAME_STATUS_LOAD_GAME:
// Load the header of the savegame for getting the level to load
SaveGame::LoadHeader(SelectedSaveGame, &header);
@ -288,7 +288,7 @@ bool GameFlow::DoGameflow()
loadFromSavegame = true;
break;
case GAME_STATUS_LEVEL_COMPLETED:
case GAME_STATUS::GAME_STATUS_LEVEL_COMPLETED:
if (LevelComplete == Levels.size())
{
// TODO: final credits

View file

@ -62,7 +62,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<WarningLevel>Level1</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;TR5MAIN_EXPORTS;_WINDOWS;_USRDLL;NOMINMAX;NEW_TIGHTROPE;CREATURE_AI_PRIORITY_OPTIMIZATION;SPDLOG_COMPILED_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>false</ConformanceMode>
@ -93,7 +93,7 @@ xcopy /Y "$(ProjectDir)Shaders\HUD\*.hlsl" "$(TargetDir)\Shaders\HUD\"</Command>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<WarningLevel>Level2</WarningLevel>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;TR5MAIN_EXPORTS;_WINDOWS;_USRDLL;NOMINMAX;NEW_TIGHTROPE;CREATURE_AI_PRIORITY_OPTIMIZATION;SPDLOG_COMPILED_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>false</ConformanceMode>