From 9872c7be05a7b00c9498819ef76833ccfcba47f2 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sun, 8 May 2022 22:52:51 +0200 Subject: [PATCH] Only load relevant object graphics Some object graphics where loaded despite not being used on the given levels --- Source/objdat.cpp | 88 +++++++++++++++++++++++----------------------- Source/objects.cpp | 68 ++++++++++++++++++----------------- 2 files changed, 80 insertions(+), 76 deletions(-) diff --git a/Source/objdat.cpp b/Source/objdat.cpp index 6ce2199cc..816bc3eac 100644 --- a/Source/objdat.cpp +++ b/Source/objdat.cpp @@ -162,11 +162,11 @@ const _object_id ObjTypeConv[] = { const ObjectData AllObjects[109] = { // clang-format off // ofindex, ominlvl, omaxlvl, olvltype, otheme, oquest, oAnimFlag, oAnimDelay, oAnimLen, oAnimWidth, oSolidFlag, oMissFlag, oLightFlag, oBreak, oSelFlag, oTrapFlag - { OFILE_L1BRAZ, 1, 4, DTYPE_CATHEDRAL, THEME_NONE, Q_INVALID, 1, 1, 26, 64, true, true, false, 0, 0, false }, - { OFILE_L1DOORS, 1, 4, DTYPE_CATHEDRAL, THEME_NONE, Q_INVALID, 0, 1, 0, 64, false, false, true, 0, 3, true }, - { OFILE_L1DOORS, 1, 4, DTYPE_CATHEDRAL, THEME_NONE, Q_INVALID, 0, 2, 0, 64, false, false, true, 0, 3, true }, + { OFILE_L1BRAZ, 0, 0, DTYPE_CATHEDRAL, THEME_NONE, Q_INVALID, 1, 1, 26, 64, true, true, false, 0, 0, false }, + { OFILE_L1DOORS, 0, 0, DTYPE_CATHEDRAL, THEME_NONE, Q_INVALID, 0, 1, 0, 64, false, false, true, 0, 3, true }, + { OFILE_L1DOORS, 0, 0, DTYPE_CATHEDRAL, THEME_NONE, Q_INVALID, 0, 2, 0, 64, false, false, true, 0, 3, true }, { OFILE_SKULFIRE, 0, 0, DTYPE_NONE, THEME_SKELROOM, Q_INVALID, 1, 2, 11, 96, true, true, false, 0, 0, false }, - { OFILE_LEVER, 1, 4, DTYPE_CATHEDRAL, THEME_NONE, Q_INVALID, 0, 1, 1, 96, true, true, true, 0, 1, true }, + { OFILE_LEVER, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 1, 96, true, true, true, 0, 1, true }, { OFILE_CHEST1, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 1, true }, { OFILE_CHEST2, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 1, true }, { OFILE_CHEST3, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 1, true }, @@ -191,36 +191,36 @@ const ObjectData AllObjects[109] = { { OFILE_BURNCROS, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, 1, 0, 10, 160, true, false, false, 0, 0, false }, { OFILE_NUDE2, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, 1, 3, 6, 128, true, false, true, 0, 0, false }, { OFILE_SWITCH4, 16, 16, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 1, true }, - { OFILE_TNUDEM, 13, 16, DTYPE_NONE, THEME_NONE, Q_BUTCHER, 0, 1, 0, 128, true, false, true, 0, 0, false }, - { OFILE_TNUDEM, 13, 16, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, 0, 2, 0, 128, true, false, true, 0, 0, false }, - { OFILE_TNUDEM, 13, 16, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, 0, 3, 0, 128, true, false, true, 0, 0, false }, - { OFILE_TNUDEM, 13, 16, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, 0, 4, 0, 128, true, false, true, 0, 0, false }, - { OFILE_TNUDEW, 13, 16, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, 0, 1, 0, 128, true, false, true, 0, 0, false }, - { OFILE_TNUDEW, 13, 16, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, 0, 2, 0, 128, true, false, true, 0, 0, false }, - { OFILE_TNUDEW, 13, 16, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, 0, 3, 0, 128, true, false, true, 0, 0, false }, - { OFILE_TSOUL, 13, 16, DTYPE_NONE, THEME_NONE, Q_BUTCHER, 0, 1, 0, 128, false, true, true, 0, 0, false }, - { OFILE_TSOUL, 13, 16, DTYPE_NONE, THEME_NONE, Q_BUTCHER, 0, 2, 0, 128, false, true, true, 0, 0, false }, - { OFILE_TSOUL, 13, 16, DTYPE_NONE, THEME_NONE, Q_BUTCHER, 0, 3, 0, 128, false, true, true, 0, 0, false }, - { OFILE_TSOUL, 13, 16, DTYPE_NONE, THEME_NONE, Q_BUTCHER, 0, 4, 0, 128, false, true, true, 0, 0, false }, - { OFILE_TSOUL, 13, 16, DTYPE_NONE, THEME_NONE, Q_BUTCHER, 0, 5, 0, 128, false, true, true, 0, 0, false }, + { OFILE_TNUDEM, 13, 15, DTYPE_NONE, THEME_NONE, Q_BUTCHER, 0, 1, 0, 128, true, false, true, 0, 0, false }, + { OFILE_TNUDEM, 13, 15, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, 0, 2, 0, 128, true, false, true, 0, 0, false }, + { OFILE_TNUDEM, 13, 15, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, 0, 3, 0, 128, true, false, true, 0, 0, false }, + { OFILE_TNUDEM, 13, 15, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, 0, 4, 0, 128, true, false, true, 0, 0, false }, + { OFILE_TNUDEW, 13, 15, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, 0, 1, 0, 128, true, false, true, 0, 0, false }, + { OFILE_TNUDEW, 13, 15, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, 0, 2, 0, 128, true, false, true, 0, 0, false }, + { OFILE_TNUDEW, 13, 15, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, 0, 3, 0, 128, true, false, true, 0, 0, false }, + { OFILE_TSOUL, 13, 15, DTYPE_NONE, THEME_NONE, Q_BUTCHER, 0, 1, 0, 128, false, true, true, 0, 0, false }, + { OFILE_TSOUL, 13, 15, DTYPE_NONE, THEME_NONE, Q_BUTCHER, 0, 2, 0, 128, false, true, true, 0, 0, false }, + { OFILE_TSOUL, 13, 15, DTYPE_NONE, THEME_NONE, Q_BUTCHER, 0, 3, 0, 128, false, true, true, 0, 0, false }, + { OFILE_TSOUL, 13, 15, DTYPE_NONE, THEME_NONE, Q_BUTCHER, 0, 4, 0, 128, false, true, true, 0, 0, false }, + { OFILE_TSOUL, 13, 15, DTYPE_NONE, THEME_NONE, Q_BUTCHER, 0, 5, 0, 128, false, true, true, 0, 0, false }, { OFILE_BOOK2, 6, 6, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 4, 0, 96, true, true, true, 0, 3, false }, - { OFILE_L2DOORS, 5, 8, DTYPE_CATACOMBS, THEME_NONE, Q_INVALID, 0, 1, 0, 64, false, false, true, 0, 3, true }, - { OFILE_L2DOORS, 5, 8, DTYPE_CATACOMBS, THEME_NONE, Q_INVALID, 0, 2, 0, 64, false, false, true, 0, 3, true }, - { OFILE_WTORCH4, 5, 8, DTYPE_CATACOMBS, THEME_NONE, Q_INVALID, 1, 1, 9, 96, false, true, false, 0, 0, false }, - { OFILE_WTORCH3, 5, 8, DTYPE_CATACOMBS, THEME_NONE, Q_INVALID, 1, 1, 9, 96, false, true, false, 0, 0, false }, - { OFILE_WTORCH1, 5, 8, DTYPE_CATACOMBS, THEME_NONE, Q_INVALID, 1, 1, 9, 96, false, true, false, 0, 0, false }, - { OFILE_WTORCH2, 5, 8, DTYPE_CATACOMBS, THEME_NONE, Q_INVALID, 1, 1, 9, 96, false, true, false, 0, 0, false }, - { OFILE_SARC, 1, 4, DTYPE_CATHEDRAL, THEME_NONE, Q_INVALID, 0, 1, 5, 128, true, true, true, 0, 3, true }, + { OFILE_L2DOORS, 0, 0, DTYPE_CATACOMBS, THEME_NONE, Q_INVALID, 0, 1, 0, 64, false, false, true, 0, 3, true }, + { OFILE_L2DOORS, 0, 0, DTYPE_CATACOMBS, THEME_NONE, Q_INVALID, 0, 2, 0, 64, false, false, true, 0, 3, true }, + { OFILE_WTORCH4, 5, 8, DTYPE_NONE, THEME_NONE, Q_INVALID, 1, 1, 9, 96, false, true, false, 0, 0, false }, + { OFILE_WTORCH3, 5, 8, DTYPE_NONE, THEME_NONE, Q_INVALID, 1, 1, 9, 96, false, true, false, 0, 0, false }, + { OFILE_WTORCH1, 5, 8, DTYPE_NONE, THEME_NONE, Q_INVALID, 1, 1, 9, 96, false, true, false, 0, 0, false }, + { OFILE_WTORCH2, 5, 8, DTYPE_NONE, THEME_NONE, Q_INVALID, 1, 1, 9, 96, false, true, false, 0, 0, false }, + { OFILE_SARC, 1, 4, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 5, 128, true, true, true, 0, 3, true }, { OFILE_FLAME1, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 20, 96, false, true, true, 0, 0, false }, { OFILE_LEVER, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 2, 96, true, true, true, 0, 1, true }, { OFILE_MINIWATR, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, 1, 1, 10, 64, true, false, true, 0, 0, false }, - { OFILE_BOOK1, 3, 4, DTYPE_CATHEDRAL, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 3, false }, + { OFILE_BOOK1, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 3, false }, { OFILE_TRAPHOLE, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 64, false, true, true, 0, 0, false }, { OFILE_TRAPHOLE, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 2, 0, 64, false, true, true, 0, 0, false }, { OFILE_BCASE, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, false, true, 0, 0, false }, { OFILE_WEAPSTND, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, false, true, 0, 0, false }, - { OFILE_BARREL, 1, 16, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 9, 96, true, true, true, 1, 3, false }, - { OFILE_BARRELEX, 1, 16, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 10, 96, true, true, true, 1, 3, false }, + { OFILE_BARREL, 1, 15, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 9, 96, true, true, true, 1, 3, false }, + { OFILE_BARRELEX, 1, 15, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 10, 96, true, true, true, 1, 3, false }, { OFILE_LSHRINEG, 0, 0, DTYPE_NONE, THEME_SHRINE, Q_INVALID, 0, 1, 11, 128, false, false, true, 0, 3, false }, { OFILE_RSHRINEG, 0, 0, DTYPE_NONE, THEME_SHRINE, Q_INVALID, 0, 1, 11, 128, false, false, true, 0, 3, false }, { OFILE_BOOK2, 0, 0, DTYPE_NONE, THEME_SKELROOM, Q_INVALID, 0, 4, 0, 96, true, true, true, 0, 3, false }, @@ -229,36 +229,36 @@ const ObjectData AllObjects[109] = { { OFILE_BOOK2, 0, 0, DTYPE_NONE, THEME_LIBRARY, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 3, false }, { OFILE_CANDLE2, 0, 0, DTYPE_NONE, THEME_LIBRARY, Q_INVALID, 1, 2, 4, 96, true, true, true, 0, 0, false }, { OFILE_BLOODFNT, 0, 0, DTYPE_NONE, THEME_BLOODFOUNTAIN, Q_INVALID, 1, 2, 10, 96, true, true, true, 0, 3, false }, - { OFILE_DECAP, 13, 16, DTYPE_NONE, THEME_DECAPITATED, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 1, false }, + { OFILE_DECAP, 13, 15, DTYPE_NONE, THEME_DECAPITATED, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 1, false }, { OFILE_CHEST1, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 1, true }, { OFILE_CHEST2, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 1, true }, { OFILE_CHEST3, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 1, true }, - { OFILE_BOOK1, 7, 7, DTYPE_CATACOMBS, THEME_NONE, Q_BLIND, 0, 1, 0, 96, true, true, true, 0, 3, false }, - { OFILE_BOOK1, 5, 5, DTYPE_CATACOMBS, THEME_NONE, Q_BLOOD, 0, 4, 0, 96, true, true, true, 0, 3, false }, - { OFILE_PEDISTL, 5, 5, DTYPE_CATACOMBS, THEME_NONE, Q_BLOOD, 0, 1, 0, 96, true, true, true, 0, 3, false }, - { OFILE_L3DOORS, 9, 12, DTYPE_CAVES, THEME_NONE, Q_INVALID, 0, 1, 0, 64, false, false, true, 0, 3, true }, - { OFILE_L3DOORS, 9, 12, DTYPE_CAVES, THEME_NONE, Q_INVALID, 0, 2, 0, 64, false, false, true, 0, 3, true }, + { OFILE_BOOK1, 0, 0, DTYPE_NONE, THEME_NONE, Q_BLIND, 0, 1, 0, 96, true, true, true, 0, 3, false }, + { OFILE_BOOK1, 0, 0, DTYPE_NONE, THEME_NONE, Q_BLOOD, 0, 4, 0, 96, true, true, true, 0, 3, false }, + { OFILE_PEDISTL, 0, 0, DTYPE_NONE, THEME_NONE, Q_BLOOD, 0, 1, 0, 96, true, true, true, 0, 3, false }, + { OFILE_L3DOORS, 0, 0, DTYPE_CAVES, THEME_NONE, Q_INVALID, 0, 1, 0, 64, false, false, true, 0, 3, true }, + { OFILE_L3DOORS, 0, 0, DTYPE_CAVES, THEME_NONE, Q_INVALID, 0, 2, 0, 64, false, false, true, 0, 3, true }, { OFILE_PFOUNTN, 0, 0, DTYPE_NONE, THEME_PURIFYINGFOUNTAIN, Q_INVALID, 1, 2, 10, 128, true, true, true, 0, 3, false }, { OFILE_ARMSTAND, 0, 0, DTYPE_NONE, THEME_ARMORSTAND, Q_INVALID, 0, 1, 0, 96, true, false, true, 0, 3, false }, { OFILE_ARMSTAND, 0, 0, DTYPE_NONE, THEME_ARMORSTAND, Q_INVALID, 0, 2, 0, 96, true, false, true, 0, 0, false }, { OFILE_GOATSHRN, 0, 0, DTYPE_NONE, THEME_GOATSHRINE, Q_INVALID, 1, 2, 10, 96, true, true, true, 0, 3, false }, - { OFILE_CAULDREN, 13, 16, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, false, true, 0, 3, false }, + { OFILE_CAULDREN, 13, 15, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, false, true, 0, 3, false }, { OFILE_MFOUNTN, 0, 0, DTYPE_NONE, THEME_MURKYFOUNTAIN, Q_INVALID, 1, 2, 10, 128, true, true, true, 0, 3, false }, { OFILE_TFOUNTN, 0, 0, DTYPE_NONE, THEME_TEARFOUNTAIN, Q_INVALID, 1, 2, 4, 128, true, true, true, 0, 3, false }, - { OFILE_ALTBOY, 0, 0, DTYPE_CATHEDRAL, THEME_NONE, Q_BETRAYER, 0, 1, 0, 128, true, true, true, 0, 0, false }, - { OFILE_MCIRL, 0, 0, DTYPE_CATHEDRAL, THEME_NONE, Q_BETRAYER, 0, 1, 0, 96, false, true, true, 0, 0, false }, - { OFILE_MCIRL, 0, 0, DTYPE_CATHEDRAL, THEME_NONE, Q_BETRAYER, 0, 1, 0, 96, false, true, true, 0, 0, false }, - { OFILE_BKSLBRNT, 1, 12, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 3, false }, - { OFILE_CANDLE2, 1, 12, DTYPE_NONE, THEME_NONE, Q_BETRAYER, 1, 2, 4, 96, true, true, true, 0, 0, false }, - { OFILE_BOOK1, 13, 13, DTYPE_HELL, THEME_NONE, Q_WARLORD, 0, 4, 0, 96, true, true, true, 0, 3, false }, - { OFILE_ARMSTAND, 13, 13, DTYPE_NONE, THEME_NONE, Q_WARLORD, 0, 1, 0, 96, true, false, true, 0, 3, false }, + { OFILE_ALTBOY, 0, 0, DTYPE_NONE, THEME_NONE, Q_BETRAYER, 0, 1, 0, 128, true, true, true, 0, 0, false }, + { OFILE_MCIRL, 0, 0, DTYPE_NONE, THEME_NONE, Q_BETRAYER, 0, 1, 0, 96, false, true, true, 0, 0, false }, + { OFILE_MCIRL, 0, 0, DTYPE_NONE, THEME_NONE, Q_BETRAYER, 0, 1, 0, 96, false, true, true, 0, 0, false }, + { OFILE_BKSLBRNT, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 3, false }, + { OFILE_CANDLE2, 0, 0, DTYPE_NONE, THEME_NONE, Q_BETRAYER, 1, 2, 4, 96, true, true, true, 0, 0, false }, + { OFILE_BOOK1, 0, 0, DTYPE_NONE, THEME_NONE, Q_WARLORD, 0, 4, 0, 96, true, true, true, 0, 3, false }, + { OFILE_ARMSTAND, 0, 0, DTYPE_NONE, THEME_NONE, Q_WARLORD, 0, 1, 0, 96, true, false, true, 0, 3, false }, { OFILE_WEAPSTND, 0, 0, DTYPE_NONE, THEME_NONE, Q_WARLORD, 0, 1, 0, 96, true, false, true, 0, 3, false }, { OFILE_BURNCROS, 0, 0, DTYPE_NONE, THEME_BRNCROSS, Q_INVALID, 1, 0, 10, 160, true, false, false, 0, 0, false }, { OFILE_WEAPSTND, 0, 0, DTYPE_NONE, THEME_WEAPONRACK, Q_INVALID, 0, 1, 0, 96, true, false, true, 0, 3, false }, { OFILE_WEAPSTND, 0, 0, DTYPE_NONE, THEME_WEAPONRACK, Q_INVALID, 0, 2, 0, 96, true, false, true, 0, 0, false }, { OFILE_MUSHPTCH, 0, 0, DTYPE_NONE, THEME_NONE, Q_MUSHROOM, 0, 1, 0, 96, true, true, true, 0, 3, true }, { OFILE_LZSTAND, 0, 0, DTYPE_NONE, THEME_NONE, Q_BETRAYER, 0, 1, 0, 128, true, false, true, 0, 3, false }, - { OFILE_DECAP, 9, 9, DTYPE_CAVES, THEME_NONE, Q_INVALID, 0, 2, 0, 96, true, true, true, 0, 1, false }, + { OFILE_DECAP, 9, 9, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 2, 0, 96, true, true, true, 0, 1, false }, { OFILE_CHEST3, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 1, true }, { OFILE_BCASE, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 2, 0, 96, true, false, true, 0, 0, false }, { OFILE_POD, 17, 20, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 9, 96, true, true, true, 1, 3, false }, @@ -267,9 +267,9 @@ const ObjectData AllObjects[109] = { { OFILE_URNEX, 21, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 10, 96, true, true, true, 1, 3, false }, { OFILE_L5BOOKS, 21, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 0, 96, true, true, true, 0, 3, false }, { OFILE_L5CANDLE, 21, 23, DTYPE_NONE, THEME_NONE, Q_INVALID, 1, 2, 4, 96, true, true, true, 0, 0, false }, - { OFILE_L5DOORS, 21, 24, DTYPE_CRYPT, THEME_NONE, Q_INVALID, 0, 1, 0, 64, false, false, true, 0, 3, true }, - { OFILE_L5DOORS, 21, 24, DTYPE_CRYPT, THEME_NONE, Q_INVALID, 0, 2, 0, 64, false, false, true, 0, 3, true }, - { OFILE_L5LEVER, 21, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 1, 96, true, true, true, 0, 1, true }, + { OFILE_L5DOORS, 0, 0, DTYPE_CRYPT, THEME_NONE, Q_INVALID, 0, 1, 0, 64, false, false, true, 0, 3, true }, + { OFILE_L5DOORS, 0, 0, DTYPE_CRYPT, THEME_NONE, Q_INVALID, 0, 2, 0, 64, false, false, true, 0, 3, true }, + { OFILE_L5LEVER, 24, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 1, 96, true, true, true, 0, 1, true }, { OFILE_L5SARC, 21, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, 0, 1, 5, 128, true, true, true, 0, 3, true }, // clang-format on }; diff --git a/Source/objects.cpp b/Source/objects.cpp index 16eb2d9a2..c6645b392 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -4511,25 +4511,12 @@ bool IsItemBlockingObjectAtPosition(Point position) return false; } -void InitObjectGFX() +void LoadLevelObjects(bool filesLoaded[65]) { - bool filesLoaded[65] = {}; - for (const ObjectData objectData : AllObjects) { - if (objectData.ominlvl != 0 && currlevel >= objectData.ominlvl && currlevel <= objectData.omaxlvl) { + if (leveltype == objectData.olvltype) { filesLoaded[objectData.ofindex] = true; } - if (objectData.otheme != THEME_NONE) { - for (int j = 0; j < numthemes; j++) { - if (themes[j].ttype == objectData.otheme) - filesLoaded[objectData.ofindex] = true; - } - } - - if (objectData.oquest != Q_INVALID) { - if (Quests[objectData.oquest].IsAvailable()) - filesLoaded[objectData.ofindex] = true; - } } for (int i = OFILE_L1BRAZ; i <= OFILE_L5BOOKS; i++) { @@ -4545,6 +4532,39 @@ void InitObjectGFX() } } +void InitObjectGFX() +{ + bool filesLoaded[65] = {}; + + if (IsAnyOf(currlevel, 4, 8, 12)) { + filesLoaded[OFILE_BKSLBRNT] = true; + filesLoaded[OFILE_CANDLE2] = true; + } + + for (const ObjectData objectData : AllObjects) { + if (objectData.ominlvl != 0 && currlevel >= objectData.ominlvl && currlevel <= objectData.omaxlvl) { + if (IsAnyOf(objectData.ofindex, OFILE_TRAPHOLE, OFILE_TRAPHOLE) && leveltype == DTYPE_HELL) { + continue; + } + + filesLoaded[objectData.ofindex] = true; + } + if (objectData.otheme != THEME_NONE) { + for (int j = 0; j < numthemes; j++) { + if (themes[j].ttype == objectData.otheme) { + filesLoaded[objectData.ofindex] = true; + } + } + } + + if (objectData.oquest != Q_INVALID && Quests[objectData.oquest].IsAvailable()) { + filesLoaded[objectData.ofindex] = true; + } + } + + LoadLevelObjects(filesLoaded); +} + void FreeObjectGFX() { for (int i = 0; i < numobjfiles; i++) { @@ -4764,12 +4784,6 @@ void SetMapObjects(const uint16_t *dunData, int startx, int starty) ClrAllObjects(); ApplyObjectLighting = true; - for (const ObjectData objectData : AllObjects) { - if (leveltype == objectData.olvltype) { - filesLoaded[objectData.ofindex] = true; - } - } - int width = SDL_SwapLE16(dunData[0]); int height = SDL_SwapLE16(dunData[1]); @@ -4790,17 +4804,7 @@ void SetMapObjects(const uint16_t *dunData, int startx, int starty) } } - for (int i = OFILE_L1BRAZ; i <= OFILE_L5BOOKS; i++) { - if (!filesLoaded[i]) { - continue; - } - - ObjFileList[numobjfiles] = static_cast(i); - char filestr[32]; - sprintf(filestr, "Objects\\%s.CEL", ObjMasterLoadList[i]); - pObjCels[numobjfiles] = LoadFileInMem(filestr); - numobjfiles++; - } + LoadLevelObjects(filesLoaded); for (int j = 0; j < height; j++) { for (int i = 0; i < width; i++) {