Added missing TR4 slots

This commit is contained in:
MontyTRC89 2020-03-21 07:29:31 +01:00
parent 7afd57ffdb
commit 72c590ee1b
6 changed files with 149 additions and 42 deletions

View file

@ -152,7 +152,7 @@ Inventory::Inventory()
m_objectsTable[INV_OBJECT_FLARES] = InventoryObjectDefinition(ID_FLARE_INV_ITEM, STRING_FLARES, -1, 0);
m_objectsTable[INV_OBJECT_TIMEX] = InventoryObjectDefinition(ID_COMPASS_ITEM, STRING_TIMEX, -1, 0);
m_objectsTable[INV_OBJECT_CROWBAR] = InventoryObjectDefinition(ID_CROWBAR_ITEM, STRING_CROWBAR, -1, 0);
m_objectsTable[INV_OBJECT_GRENADE_LAUNCHER] = InventoryObjectDefinition(ID_GRENADE_ITEM, STRING_GRENADE_LAUNCHER, -1, 0);
m_objectsTable[INV_OBJECT_GRENADE_LAUNCHER] = InventoryObjectDefinition(ID_GRENADE_GUN_ITEM, STRING_GRENADE_LAUNCHER, -1, 0);
m_objectsTable[INV_OBJECT_GRENADE_AMMO1] = InventoryObjectDefinition(ID_GRENADE_AMMO1_ITEM, STRING_GRENADE_AMMO1, -1, 0);
m_objectsTable[INV_OBJECT_GRENADE_AMMO2] = InventoryObjectDefinition(ID_GRENADE_AMMO2_ITEM, STRING_GRENADE_AMMO2, -1, 0);
m_objectsTable[INV_OBJECT_GRENADE_AMMO3] = InventoryObjectDefinition(ID_GRENADE_AMMO3_ITEM, STRING_GRENADE_AMMO3, -1, 0);
@ -170,7 +170,7 @@ Inventory::Inventory()
m_objectsTable[INV_OBJECT_SUNGLASSES] = InventoryObjectDefinition(ID_INVENTORY_SUNGLASSES, STRING_DISPLAY, -1, 0);
m_objectsTable[INV_OBJECT_POLAROID] = InventoryObjectDefinition(ID_INVENTORY_POLAROID, STRING_LARA_HOME, -1, 0);
m_objectsTable[INV_OBJECT_HEADPHONES] = InventoryObjectDefinition(ID_INVENTORY_HEADPHONES, STRING_SOUND, -1, 0);
m_objectsTable[INV_OBJECT_DIARY] = InventoryObjectDefinition(ID_DIARY, STRING_DIARY, -1, 0);
m_objectsTable[INV_OBJECT_DIARY] = InventoryObjectDefinition(ID_DIARY_ITEM, STRING_DIARY, -1, 0);
m_objectsTable[INV_OBJECT_WATERSKIN1] = InventoryObjectDefinition(ID_WATERSKIN1_EMPTY, STRING_WATERSKIN1_EMPTY, -1, 0);
m_objectsTable[INV_OBJECT_WATERSKIN2] = InventoryObjectDefinition(ID_WATERSKIN2_EMPTY, STRING_WATERSKIN2_EMPTY, -1, 0);
@ -1639,7 +1639,7 @@ void Inventory::UseCurrentItem()
}
// Grenade launcher
if (objectNumber == ID_GRENADE_ITEM)
if (objectNumber == ID_GRENADE_GUN_ITEM)
{
if (canUseWeapons)
{

View file

@ -186,7 +186,7 @@ void PickedUpObject(short objectNumber)
break;
case ID_GRENADE_ITEM:
case ID_GRENADE_GUN_ITEM:
if (!(g_LaraExtra.Weapons[WEAPON_GRENADE_LAUNCHER].Present))
{
g_LaraExtra.Weapons[WEAPON_GRENADE_LAUNCHER].Present = true;
@ -343,7 +343,7 @@ void PickedUpObject(short objectNumber)
g_LaraExtra.Crowbar = true;
break;
case ID_DIARY:
case ID_DIARY_ITEM:
g_LaraExtra.Diary.Present = true;
break;

View file

@ -655,8 +655,8 @@ typedef enum GAME_OBJECT_ID
ID_SNOWMOBILE,
ID_QUAD_LARA_ANIMS,
ID_QUAD,
ID_BOAT_LARA_ANIMS,
ID_BOAT,
ID_SPEEDBOAT_LARA_ANIMS,
ID_SPEEDBOAT,
ID_KAYAK_LARA_ANIMS,
ID_KAYAK,
ID_UPV_LARA_ANIMS,
@ -667,6 +667,11 @@ typedef enum GAME_OBJECT_ID
ID_JEEP, // TR4 - 95% Working
ID_MOTORBIKE_LARA_ANIMS,
ID_MOTORBIKE,
ID_RUBBER_BOAT_LARA_ANIMS,
ID_RUBBER_BOAT_BOAT,
ID_VEHICLE_SMASHABLE_FLOOR = 90, // NEW
ID_VEHICLE_SMASHABLE_WALL, // NEW
/* Enemy */
@ -932,6 +937,18 @@ typedef enum GAME_OBJECT_ID
ID_SEARCH_OBJECT4,
ID_SARCOPHAGUS,
ID_ENEMY_PIECE, // NEW
ID_EXPANDING_PLATFORM, // NEW
ID_SQUISHY_BLOCK1, // NEW
ID_SQUISHY_BLOCK2, // NEW
ID_TRIPWIRE, // NEW
ID_MINE_DETECTOR, // NEW
ID_MAP, // NEW
ID_SECRET_MAP, // NEW
ID_SETH_DOOR, // NEW
ID_HORUS_STATUE, // NEW
ID_STATUE_PLINTH, // NEW
/* Items */
ID_PUZZLE_ITEM1 = 500,
ID_PUZZLE_ITEM2,
@ -1242,8 +1259,14 @@ typedef enum GAME_OBJECT_ID
ID_KICK_DOOR2,
ID_KICK_DOOR3,
ID_KICK_DOOR4,
ID_UNDERWATER_DOOR,
ID_DOUBLE_DOORS,
ID_UNDERWATER_DOOR1, // NEW
ID_UNDERWATER_DOOR2,
ID_UNDERWATER_DOOR3,
ID_UNDERWATER_DOOR4,
ID_DOUBLE_DOORS1,
ID_DOUBLE_DOORS2,
ID_DOUBLE_DOORS3,
ID_DOUBLE_DOORS4,
ID_SEQUENCE_DOOR1,
ID_SEQUENCE_SWITCH1,
ID_SEQUENCE_SWITCH2,
@ -1268,7 +1291,7 @@ typedef enum GAME_OBJECT_ID
ID_CROSSBOW_BOLT,
ID_HK_ITEM,
ID_HK_AMMO_ITEM,
ID_GRENADE_ITEM,
ID_GRENADE_GUN_ITEM,
ID_GRENADE_AMMO1_ITEM,
ID_GRENADE_AMMO2_ITEM,
ID_GRENADE_AMMO3_ITEM,
@ -1288,7 +1311,7 @@ typedef enum GAME_OBJECT_ID
ID_FLARE_ITEM,
ID_FLARE_INV_ITEM,
ID_COMPASS_ITEM,
ID_DIARY,
ID_DIARY_ITEM,
/* Inventory main objects */
ID_INVENTORY_PASSPORT = 1000,
@ -1445,8 +1468,74 @@ typedef enum GAME_OBJECT_ID
ID_ANIMATING62,
ID_ANIMATING63,
ID_ANIMATING64,
ID_ANIMATING65,
ID_ANIMATING66,
ID_ANIMATING67,
ID_ANIMATING68,
ID_ANIMATING69,
ID_ANIMATING70,
ID_ANIMATING71,
ID_ANIMATING72,
ID_ANIMATING73,
ID_ANIMATING74,
ID_ANIMATING75,
ID_ANIMATING76,
ID_ANIMATING77,
ID_ANIMATING78,
ID_ANIMATING79,
ID_ANIMATING80,
ID_ANIMATING81,
ID_ANIMATING82,
ID_ANIMATING83,
ID_ANIMATING84,
ID_ANIMATING85,
ID_ANIMATING86,
ID_ANIMATING87,
ID_ANIMATING88,
ID_ANIMATING89,
ID_ANIMATING90,
ID_ANIMATING91,
ID_ANIMATING92,
ID_ANIMATING93,
ID_ANIMATING94,
ID_ANIMATING95,
ID_ANIMATING96,
ID_ANIMATING97,
ID_ANIMATING98,
ID_ANIMATING99,
ID_ANIMATING100,
ID_ANIMATING101,
ID_ANIMATING102,
ID_ANIMATING103,
ID_ANIMATING104,
ID_ANIMATING105,
ID_ANIMATING106,
ID_ANIMATING107,
ID_ANIMATING108,
ID_ANIMATING109,
ID_ANIMATING110,
ID_ANIMATING111,
ID_ANIMATING112,
ID_ANIMATING113,
ID_ANIMATING114,
ID_ANIMATING115,
ID_ANIMATING116,
ID_ANIMATING117,
ID_ANIMATING118,
ID_ANIMATING119,
ID_ANIMATING120,
ID_ANIMATING121,
ID_ANIMATING122,
ID_ANIMATING123,
ID_ANIMATING124,
ID_ANIMATING125,
ID_ANIMATING126,
ID_ANIMATING127,
ID_ANIMATING128,
ID_GUARDIAN_BASE,
ID_GUARDIAN_TENTACLE,
ID_BRIDGE_FLAT = 1300,
ID_BRIDGE_FLAT = 1340,
ID_BRIDGE_TILT1,
ID_BRIDGE_TILT2,
ID_BRIDGE_TILT3,
@ -1461,6 +1550,15 @@ typedef enum GAME_OBJECT_ID
ID_MISC_SPRITES,
ID_CUSTOM_SPRITES,
ID_PANEL_BORDER = 1400,
ID_PANEL_MIDDLE,
ID_PANEL_CORNER,
ID_PANEL_DIAGONAL,
ID_PANEL_STRIP,
ID_PANEL_HALF_BORDER1,
ID_PANEL_HALF_BORDER2,
ID_PANEL_MIDDLE_CORNER,
ID_NUMBER_OBJECTS, // NEED TO BE AT THE END !!!!
};

View file

@ -47,7 +47,7 @@ void InitialiseLaserHead(short itemNumber)
for (int i = 0; i < LevelItems; i++)
{
if (Items[i].objectNumber == ID_ANIMATING12)
if (Items[i].objectNumber == ID_ANIMATING1)
{
info->baseItem = i;
break;
@ -59,7 +59,7 @@ void InitialiseLaserHead(short itemNumber)
for (int i = 0; i < LevelItems; i++)
{
// ID_WINGED_MUMMY beccause we recycled MIP slots
if (Items[i].objectNumber == ID_WINGED_MUMMY && Items[i].pos.yRot == rotation)
if (Items[i].objectNumber == ID_ANIMATING2 && Items[i].pos.yRot == rotation)
{
info->arcsItems[j] = i;
rotation += ANGLE(45);

View file

@ -100,7 +100,7 @@ void GetBoatGetOff(ITEM_INFO* boat)
LaraItem->pos.yPos = y;
/* Set boat to still anim */
boat->animNumber = Objects[ID_BOAT].animIndex;
boat->animNumber = Objects[ID_SPEEDBOAT].animIndex;
boat->frameNumber = Anims[boat->animNumber].frameBase;
}
}
@ -246,7 +246,7 @@ void DoBoatCollision(int itemNum)
{
item = &Items[item_number];
if (item->objectNumber == ID_BOAT && item_number != itemNum && g_LaraExtra.Vehicle != item_number)
if (item->objectNumber == ID_SPEEDBOAT && item_number != itemNum && g_LaraExtra.Vehicle != item_number)
{
// other boat
x = item->pos.xPos - boat->pos.xPos;
@ -689,7 +689,7 @@ void BoatAnimation(ITEM_INFO* boat, int collide)
{
if (LaraItem->currentAnimState != BOAT_DEATH)
{
LaraItem->animNumber = Objects[ID_BOAT_LARA_ANIMS].animIndex + BOAT_DEATH_ANIM;
LaraItem->animNumber = Objects[ID_SPEEDBOAT_LARA_ANIMS].animIndex + BOAT_DEATH_ANIM;
LaraItem->frameNumber = Anims[LaraItem->animNumber].frameBase;
LaraItem->currentAnimState = LaraItem->goalAnimState = BOAT_DEATH;
}
@ -698,7 +698,7 @@ void BoatAnimation(ITEM_INFO* boat, int collide)
{
if (LaraItem->currentAnimState != BOAT_FALL)
{
LaraItem->animNumber = Objects[ID_BOAT_LARA_ANIMS].animIndex + BOAT_FALL_ANIM;
LaraItem->animNumber = Objects[ID_SPEEDBOAT_LARA_ANIMS].animIndex + BOAT_FALL_ANIM;
LaraItem->frameNumber = Anims[LaraItem->animNumber].frameBase;
LaraItem->currentAnimState = LaraItem->goalAnimState = BOAT_FALL;
}
@ -707,7 +707,7 @@ void BoatAnimation(ITEM_INFO* boat, int collide)
{
if (LaraItem->currentAnimState != BOAT_HIT)
{
LaraItem->animNumber = (short)(Objects[ID_BOAT_LARA_ANIMS].animIndex + collide);
LaraItem->animNumber = (short)(Objects[ID_SPEEDBOAT_LARA_ANIMS].animIndex + collide);
LaraItem->frameNumber = Anims[LaraItem->animNumber].frameBase;
LaraItem->currentAnimState = LaraItem->goalAnimState = BOAT_HIT;
}
@ -825,13 +825,13 @@ void BoatCollision(short itemNum, ITEM_INFO* litem, COLL_INFO* coll)
}
if (geton == 2)
litem->animNumber = Objects[ID_BOAT_LARA_ANIMS].animIndex + BOAT_GETONLW_ANIM;
litem->animNumber = Objects[ID_SPEEDBOAT_LARA_ANIMS].animIndex + BOAT_GETONLW_ANIM;
else if (geton == 1)
litem->animNumber = Objects[ID_BOAT_LARA_ANIMS].animIndex + BOAT_GETONRW_ANIM;
litem->animNumber = Objects[ID_SPEEDBOAT_LARA_ANIMS].animIndex + BOAT_GETONRW_ANIM;
else if (geton == 3)
litem->animNumber = Objects[ID_BOAT_LARA_ANIMS].animIndex + BOAT_GETONJ_ANIM;
litem->animNumber = Objects[ID_SPEEDBOAT_LARA_ANIMS].animIndex + BOAT_GETONJ_ANIM;
else
litem->animNumber = Objects[ID_BOAT_LARA_ANIMS].animIndex + BOAT_GETON_START;
litem->animNumber = Objects[ID_SPEEDBOAT_LARA_ANIMS].animIndex + BOAT_GETON_START;
Lara.waterStatus = LW_ABOVE_WATER;
litem->pos.xPos = boat->pos.xPos;
@ -988,7 +988,7 @@ void BoatControl(short itemNumber)
/* Set boat on the exact same anim frame */
if (LaraItem->hitPoints > 0)
{
boat->animNumber = Objects[ID_BOAT].animIndex + (LaraItem->animNumber - Objects[ID_BOAT_LARA_ANIMS].animIndex);
boat->animNumber = Objects[ID_SPEEDBOAT].animIndex + (LaraItem->animNumber - Objects[ID_SPEEDBOAT_LARA_ANIMS].animIndex);
boat->frameNumber = Anims[boat->animNumber].frameBase + (LaraItem->frameNumber - Anims[LaraItem->animNumber].frameBase);
}

View file

@ -588,7 +588,7 @@ void NewObjects()
obj->saveFlags = true;
}
obj = &Objects[ID_GRENADE_ITEM];
obj = &Objects[ID_GRENADE_GUN_ITEM];
if (obj->loaded)
{
obj->collision = PickupCollision;
@ -1121,7 +1121,7 @@ void NewObjects()
obj->savePosition = true;
}
obj = &Objects[ID_BOAT];
obj = &Objects[ID_SPEEDBOAT];
if (obj->loaded)
{
obj->initialise = InitialiseBoat;
@ -2211,24 +2211,30 @@ void ObjectObjects()
obj->saveFlags = true;
}
obj = &Objects[ID_DOUBLE_DOORS];
if (obj->loaded)
for (int i = ID_DOUBLE_DOORS1; i <= ID_DOUBLE_DOORS4; i++)
{
obj->initialise = InitialiseDoor;
obj->collision = DoubleDoorCollision;
obj->control = PushPullKickDoorControl;
obj->saveAnim = true;
obj->saveFlags = true;
obj = &Objects[i];
if (obj->loaded)
{
obj->initialise = InitialiseDoor;
obj->collision = DoubleDoorCollision;
obj->control = PushPullKickDoorControl;
obj->saveAnim = true;
obj->saveFlags = true;
}
}
obj = &Objects[ID_UNDERWATER_DOOR];
if (obj->loaded)
for (int i = ID_UNDERWATER_DOOR1; i <= ID_UNDERWATER_DOOR4; i++)
{
obj->initialise = InitialiseDoor;
obj->collision = UnderwaterDoorCollision;
obj->control = PushPullKickDoorControl;
obj->saveAnim = true;
obj->saveFlags = true;
obj = &Objects[i];
if (obj->loaded)
{
obj->initialise = InitialiseDoor;
obj->collision = UnderwaterDoorCollision;
obj->control = PushPullKickDoorControl;
obj->saveAnim = true;
obj->saveFlags = true;
}
}
for (int objNum = ID_PUSHPULL_DOOR1; objNum <= ID_KICK_DOOR4; objNum++)
@ -2469,11 +2475,14 @@ void ObjectObjects()
INIT_PUZZLEDONE(objNum);
}
for (int objNum = ID_ANIMATING1; objNum <= ID_ANIMATING64; objNum++)
for (int objNum = ID_ANIMATING1; objNum <= ID_ANIMATING128; objNum++)
{
INIT_ANIMATING(objNum);
}
INIT_ANIMATING(ID_GUARDIAN_BASE);
INIT_ANIMATING(ID_GUARDIAN_TENTACLE);
obj = &Objects[ID_ANIMATING13];
if (obj->loaded)
{
@ -3040,7 +3049,7 @@ void PickupObjects()
INIT_PICKUP(ID_CROSSBOW_AMMO1_ITEM);
INIT_PICKUP(ID_CROSSBOW_AMMO2_ITEM);
INIT_PICKUP(ID_CROSSBOW_AMMO3_ITEM);
INIT_PICKUP(ID_GRENADE_ITEM);
INIT_PICKUP(ID_GRENADE_GUN_ITEM);
INIT_PICKUP(ID_GRENADE_AMMO1_ITEM);
INIT_PICKUP(ID_GRENADE_AMMO2_ITEM);
INIT_PICKUP(ID_GRENADE_AMMO3_ITEM);