From e2ef805034dfd32d01148b74611d4ba5be79a5b9 Mon Sep 17 00:00:00 2001 From: XProger Date: Tue, 23 Oct 2018 04:55:33 +0300 Subject: [PATCH] fix weapons ammo cheat --- src/inventory.h | 9 ++++++--- src/level.h | 11 +++++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/inventory.h b/src/inventory.h index fc03fd5..1da4915 100644 --- a/src/inventory.h +++ b/src/inventory.h @@ -646,9 +646,9 @@ struct Inventory { if (level->version & TR::VER_TR1) { add(TR::Entity::INV_PISTOLS, UNLIMITED_AMMO); - add(TR::Entity::INV_SHOTGUN, UNLIMITED_AMMO); - add(TR::Entity::INV_MAGNUMS, UNLIMITED_AMMO); - add(TR::Entity::INV_UZIS, UNLIMITED_AMMO); + add(TR::Entity::INV_SHOTGUN, 250); + add(TR::Entity::INV_MAGNUMS, 20); + add(TR::Entity::INV_UZIS, 100); } } @@ -727,11 +727,14 @@ struct Inventory { int i = contains(type); if (i > -1) { items[i]->count += count; + items[i]->count = min(UNLIMITED_AMMO, items[i]->count); return; } ASSERT(itemsCount < INVENTORY_MAX_ITEMS); + count = min(UNLIMITED_AMMO, count); + Item *newItem = new Item(game->getLevel(), type, count); if (newItem->desc.model == -1) { delete newItem; diff --git a/src/level.h b/src/level.h index 06f3205..2bb112c 100644 --- a/src/level.h +++ b/src/level.h @@ -24,6 +24,10 @@ extern void loadLevelAsync(Stream *stream, void *userData); +extern Array saveSlots; +extern SaveResult saveResult; +extern int loadSlot; + struct Level : IGame { TR::Level level; @@ -191,7 +195,7 @@ struct Level : IGame { // level progress stats if (slot.isCheckpoint()) - saveStats = *(SaveStats*)ptr; // start level current position + saveStats = *(SaveStats*)ptr; // start level current position ptr += sizeof(saveStats); @@ -282,7 +286,9 @@ struct Level : IGame { saveSlots.push(slot); } else slot = saveSlots[index]; - *(SaveStats*)slot.data = saveStats; + SaveStats *stats = (SaveStats*)slot.data; + stats->level = level.id; + stats->checkpoint = checkpoint; } else { removeSaveSlot(id, checkpoint); // remove checkpoints and level saves saveSlots.push(createSaveSlot(id, checkpoint)); @@ -855,6 +861,7 @@ struct Level : IGame { camera->doCutscene(lara->pos, lara->angle.y); } */ + if (!level.isCutsceneLevel()) { inventory->reset(this); memset(&saveStats, 0, sizeof(saveStats));