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_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_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_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_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_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); 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_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_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_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_WATERSKIN1] = InventoryObjectDefinition(ID_WATERSKIN1_EMPTY, STRING_WATERSKIN1_EMPTY, -1, 0);
m_objectsTable[INV_OBJECT_WATERSKIN2] = InventoryObjectDefinition(ID_WATERSKIN2_EMPTY, STRING_WATERSKIN2_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 // Grenade launcher
if (objectNumber == ID_GRENADE_ITEM) if (objectNumber == ID_GRENADE_GUN_ITEM)
{ {
if (canUseWeapons) if (canUseWeapons)
{ {

View file

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

View file

@ -655,8 +655,8 @@ typedef enum GAME_OBJECT_ID
ID_SNOWMOBILE, ID_SNOWMOBILE,
ID_QUAD_LARA_ANIMS, ID_QUAD_LARA_ANIMS,
ID_QUAD, ID_QUAD,
ID_BOAT_LARA_ANIMS, ID_SPEEDBOAT_LARA_ANIMS,
ID_BOAT, ID_SPEEDBOAT,
ID_KAYAK_LARA_ANIMS, ID_KAYAK_LARA_ANIMS,
ID_KAYAK, ID_KAYAK,
ID_UPV_LARA_ANIMS, ID_UPV_LARA_ANIMS,
@ -667,6 +667,11 @@ typedef enum GAME_OBJECT_ID
ID_JEEP, // TR4 - 95% Working ID_JEEP, // TR4 - 95% Working
ID_MOTORBIKE_LARA_ANIMS, ID_MOTORBIKE_LARA_ANIMS,
ID_MOTORBIKE, ID_MOTORBIKE,
ID_RUBBER_BOAT_LARA_ANIMS,
ID_RUBBER_BOAT_BOAT,
ID_VEHICLE_SMASHABLE_FLOOR = 90, // NEW
ID_VEHICLE_SMASHABLE_WALL, // NEW
/* Enemy */ /* Enemy */
@ -932,6 +937,18 @@ typedef enum GAME_OBJECT_ID
ID_SEARCH_OBJECT4, ID_SEARCH_OBJECT4,
ID_SARCOPHAGUS, 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 */ /* Items */
ID_PUZZLE_ITEM1 = 500, ID_PUZZLE_ITEM1 = 500,
ID_PUZZLE_ITEM2, ID_PUZZLE_ITEM2,
@ -1242,8 +1259,14 @@ typedef enum GAME_OBJECT_ID
ID_KICK_DOOR2, ID_KICK_DOOR2,
ID_KICK_DOOR3, ID_KICK_DOOR3,
ID_KICK_DOOR4, ID_KICK_DOOR4,
ID_UNDERWATER_DOOR, ID_UNDERWATER_DOOR1, // NEW
ID_DOUBLE_DOORS, 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_DOOR1,
ID_SEQUENCE_SWITCH1, ID_SEQUENCE_SWITCH1,
ID_SEQUENCE_SWITCH2, ID_SEQUENCE_SWITCH2,
@ -1268,7 +1291,7 @@ typedef enum GAME_OBJECT_ID
ID_CROSSBOW_BOLT, ID_CROSSBOW_BOLT,
ID_HK_ITEM, ID_HK_ITEM,
ID_HK_AMMO_ITEM, ID_HK_AMMO_ITEM,
ID_GRENADE_ITEM, ID_GRENADE_GUN_ITEM,
ID_GRENADE_AMMO1_ITEM, ID_GRENADE_AMMO1_ITEM,
ID_GRENADE_AMMO2_ITEM, ID_GRENADE_AMMO2_ITEM,
ID_GRENADE_AMMO3_ITEM, ID_GRENADE_AMMO3_ITEM,
@ -1288,7 +1311,7 @@ typedef enum GAME_OBJECT_ID
ID_FLARE_ITEM, ID_FLARE_ITEM,
ID_FLARE_INV_ITEM, ID_FLARE_INV_ITEM,
ID_COMPASS_ITEM, ID_COMPASS_ITEM,
ID_DIARY, ID_DIARY_ITEM,
/* Inventory main objects */ /* Inventory main objects */
ID_INVENTORY_PASSPORT = 1000, ID_INVENTORY_PASSPORT = 1000,
@ -1445,8 +1468,74 @@ typedef enum GAME_OBJECT_ID
ID_ANIMATING62, ID_ANIMATING62,
ID_ANIMATING63, ID_ANIMATING63,
ID_ANIMATING64, 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_TILT1,
ID_BRIDGE_TILT2, ID_BRIDGE_TILT2,
ID_BRIDGE_TILT3, ID_BRIDGE_TILT3,
@ -1461,6 +1550,15 @@ typedef enum GAME_OBJECT_ID
ID_MISC_SPRITES, ID_MISC_SPRITES,
ID_CUSTOM_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 !!!! 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++) for (int i = 0; i < LevelItems; i++)
{ {
if (Items[i].objectNumber == ID_ANIMATING12) if (Items[i].objectNumber == ID_ANIMATING1)
{ {
info->baseItem = i; info->baseItem = i;
break; break;
@ -59,7 +59,7 @@ void InitialiseLaserHead(short itemNumber)
for (int i = 0; i < LevelItems; i++) for (int i = 0; i < LevelItems; i++)
{ {
// ID_WINGED_MUMMY beccause we recycled MIP slots // 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; info->arcsItems[j] = i;
rotation += ANGLE(45); rotation += ANGLE(45);

View file

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

View file

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