/** * @file objdat.cpp * * Implementation of all object data. */ #include "objdat.h" namespace devilution { /** Maps from dun_object_id to object_id. */ const _object_id ObjTypeConv[] = { OBJ_NULL, OBJ_LEVER, OBJ_CRUX1, OBJ_CRUX2, OBJ_CRUX3, OBJ_ANGEL, OBJ_BANNERL, OBJ_BANNERM, OBJ_BANNERR, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_BOOK2L, OBJ_BOOK2R, OBJ_BCROSS, OBJ_NULL, OBJ_CANDLE1, OBJ_CANDLE2, OBJ_CANDLEO, OBJ_CAULDRON, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_FLAMEHOLE, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_MCIRCLE1, OBJ_MCIRCLE2, OBJ_SKFIRE, OBJ_SKPILE, OBJ_SKSTICK1, OBJ_SKSTICK2, OBJ_SKSTICK3, OBJ_SKSTICK4, OBJ_SKSTICK5, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_SWITCHSKL, OBJ_NULL, OBJ_TRAPL, OBJ_TRAPR, OBJ_TORTURE1, OBJ_TORTURE2, OBJ_TORTURE3, OBJ_TORTURE4, OBJ_TORTURE5, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NUDEW2R, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_TNUDEM1, OBJ_TNUDEM2, OBJ_TNUDEM3, OBJ_TNUDEM4, OBJ_TNUDEW1, OBJ_TNUDEW2, OBJ_TNUDEW3, OBJ_CHEST1, OBJ_CHEST1, OBJ_CHEST1, OBJ_CHEST2, OBJ_CHEST2, OBJ_CHEST2, OBJ_CHEST3, OBJ_CHEST3, OBJ_CHEST3, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_PEDESTAL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_NULL, OBJ_ALTBOY, OBJ_NULL, OBJ_NULL, OBJ_WARARMOR, OBJ_WARWEAP, OBJ_TORCHR2, OBJ_TORCHL2, OBJ_MUSHPATCH, OBJ_STAND, OBJ_TORCHL, OBJ_TORCHR, OBJ_FLAMELVR, OBJ_SARC, OBJ_BARREL, OBJ_BARRELEX, OBJ_BOOKSHELF, OBJ_BOOKCASEL, OBJ_BOOKCASER, OBJ_ARMORSTANDN, OBJ_WEAPONRACKN, OBJ_BLOODFTN, OBJ_PURIFYINGFTN, OBJ_SHRINEL, OBJ_SHRINER, OBJ_GOATSHRINE, OBJ_MURKYFTN, OBJ_TEARFTN, OBJ_DECAP, OBJ_TCHEST1, OBJ_TCHEST2, OBJ_TCHEST3, OBJ_LAZSTAND, OBJ_BOOKSTAND, OBJ_BOOKSHELFR, OBJ_POD, OBJ_PODEX, OBJ_URN, OBJ_URNEX, OBJ_L5BOOKS, OBJ_L5CANDLE, OBJ_L5LEVER, OBJ_L5SARC, }; /** Contains the data related to each object ID. */ 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, 0, 0, DTYPE_CATHEDRAL, THEME_NONE, Q_INVALID, true, 1, 26, 64, true, true, false, 0, 0, false }, { OFILE_L1DOORS, 0, 0, DTYPE_CATHEDRAL, THEME_NONE, Q_INVALID, false, 1, 0, 64, false, false, true, 0, 3, true }, { OFILE_L1DOORS, 0, 0, DTYPE_CATHEDRAL, THEME_NONE, Q_INVALID, false, 2, 0, 64, false, false, true, 0, 3, true }, { OFILE_SKULFIRE, 0, 0, DTYPE_NONE, THEME_SKELROOM, Q_INVALID, true, 2, 11, 96, true, true, false, 0, 0, false }, { OFILE_LEVER, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 1, 96, true, true, true, 0, 1, true }, { OFILE_CHEST1, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 1, true }, { OFILE_CHEST2, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 1, true }, { OFILE_CHEST3, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 1, true }, { OFILE_L1BRAZ, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 0, 0, 0, false, false, false, 0, 0, false }, { OFILE_CANDLE2, 0, 0, DTYPE_NONE, THEME_SHRINE, Q_PWATER, true, 2, 4, 96, true, true, true, 0, 0, false }, { OFILE_L1BRAZ, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 0, 0, 0, false, false, false, 0, 0, false }, { OFILE_BANNER, 0, 0, DTYPE_NONE, THEME_SKELROOM, Q_INVALID, false, 2, 0, 96, true, true, true, 0, 0, false }, { OFILE_BANNER, 0, 0, DTYPE_NONE, THEME_SKELROOM, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 0, false }, { OFILE_BANNER, 0, 0, DTYPE_NONE, THEME_SKELROOM, Q_INVALID, false, 3, 0, 96, true, true, true, 0, 0, false }, { OFILE_SKULPILE, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 1, 96, true, true, true, 0, 0, false }, { OFILE_L1BRAZ, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 0, 0, 0, false, false, false, 0, 0, false }, { OFILE_L1BRAZ, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 0, 0, 0, false, false, false, 0, 0, false }, { OFILE_L1BRAZ, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 0, 0, 0, false, false, false, 0, 0, false }, { OFILE_L1BRAZ, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 0, 0, 0, false, false, false, 0, 0, false }, { OFILE_L1BRAZ, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 0, 0, 0, false, false, false, 0, 0, false }, { OFILE_CRUXSK1, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 15, 96, true, false, true, 1, 3, false }, { OFILE_CRUXSK2, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 15, 96, true, false, true, 1, 3, false }, { OFILE_CRUXSK3, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 15, 96, true, false, true, 1, 3, false }, { OFILE_ROCKSTAN, 5, 5, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 0, false }, { OFILE_ANGEL, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, false, true, 0, 0, false }, { OFILE_BOOK2, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 3, false }, { OFILE_BURNCROS, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, true, 0, 10, 160, true, false, false, 0, 0, false }, { OFILE_NUDE2, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, true, 3, 6, 128, true, false, true, 0, 0, false }, { OFILE_SWITCH4, 16, 16, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 1, true }, { OFILE_TNUDEM, 13, 15, DTYPE_NONE, THEME_NONE, Q_BUTCHER, false, 1, 0, 128, true, false, true, 0, 0, false }, { OFILE_TNUDEM, 13, 15, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, false, 2, 0, 128, true, false, true, 0, 0, false }, { OFILE_TNUDEM, 13, 15, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, false, 3, 0, 128, true, false, true, 0, 0, false }, { OFILE_TNUDEM, 13, 15, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, false, 4, 0, 128, true, false, true, 0, 0, false }, { OFILE_TNUDEW, 13, 15, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, false, 1, 0, 128, true, false, true, 0, 0, false }, { OFILE_TNUDEW, 13, 15, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, false, 2, 0, 128, true, false, true, 0, 0, false }, { OFILE_TNUDEW, 13, 15, DTYPE_NONE, THEME_TORTURE, Q_BUTCHER, false, 3, 0, 128, true, false, true, 0, 0, false }, { OFILE_TSOUL, 13, 15, DTYPE_NONE, THEME_NONE, Q_BUTCHER, false, 1, 0, 128, false, true, true, 0, 0, false }, { OFILE_TSOUL, 13, 15, DTYPE_NONE, THEME_NONE, Q_BUTCHER, false, 2, 0, 128, false, true, true, 0, 0, false }, { OFILE_TSOUL, 13, 15, DTYPE_NONE, THEME_NONE, Q_BUTCHER, false, 3, 0, 128, false, true, true, 0, 0, false }, { OFILE_TSOUL, 13, 15, DTYPE_NONE, THEME_NONE, Q_BUTCHER, false, 4, 0, 128, false, true, true, 0, 0, false }, { OFILE_TSOUL, 13, 15, DTYPE_NONE, THEME_NONE, Q_BUTCHER, false, 5, 0, 128, false, true, true, 0, 0, false }, { OFILE_BOOK2, 6, 6, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 4, 0, 96, true, true, true, 0, 3, false }, { OFILE_L2DOORS, 0, 0, DTYPE_CATACOMBS, THEME_NONE, Q_INVALID, false, 1, 0, 64, false, false, true, 0, 3, true }, { OFILE_L2DOORS, 0, 0, DTYPE_CATACOMBS, THEME_NONE, Q_INVALID, false, 2, 0, 64, false, false, true, 0, 3, true }, { OFILE_WTORCH4, 5, 8, DTYPE_NONE, THEME_NONE, Q_INVALID, true, 1, 9, 96, false, true, false, 0, 0, false }, { OFILE_WTORCH3, 5, 8, DTYPE_NONE, THEME_NONE, Q_INVALID, true, 1, 9, 96, false, true, false, 0, 0, false }, { OFILE_WTORCH1, 5, 8, DTYPE_NONE, THEME_NONE, Q_INVALID, true, 1, 9, 96, false, true, false, 0, 0, false }, { OFILE_WTORCH2, 5, 8, DTYPE_NONE, THEME_NONE, Q_INVALID, true, 1, 9, 96, false, true, false, 0, 0, false }, { OFILE_SARC, 1, 4, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 5, 128, true, true, true, 0, 3, true }, { OFILE_FLAME1, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 20, 96, false, true, true, 0, 0, false }, { OFILE_LEVER, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 2, 96, true, true, true, 0, 1, true }, { OFILE_MINIWATR, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, true, 1, 10, 64, true, false, true, 0, 0, false }, { OFILE_BOOK1, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 3, false }, { OFILE_TRAPHOLE, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 64, false, true, true, 0, 0, false }, { OFILE_TRAPHOLE, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 2, 0, 64, false, true, true, 0, 0, false }, { OFILE_BCASE, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, false, true, 0, 0, false }, { OFILE_WEAPSTND, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, false, true, 0, 0, false }, { OFILE_BARREL, 1, 15, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 9, 96, true, true, true, 1, 3, false }, { OFILE_BARRELEX, 1, 15, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 10, 96, true, true, true, 1, 3, false }, { OFILE_LSHRINEG, 0, 0, DTYPE_NONE, THEME_SHRINE, Q_INVALID, false, 1, 11, 128, false, false, true, 0, 3, false }, { OFILE_RSHRINEG, 0, 0, DTYPE_NONE, THEME_SHRINE, Q_INVALID, false, 1, 11, 128, false, false, true, 0, 3, false }, { OFILE_BOOK2, 0, 0, DTYPE_NONE, THEME_SKELROOM, Q_INVALID, false, 4, 0, 96, true, true, true, 0, 3, false }, { OFILE_BCASE, 0, 0, DTYPE_NONE, THEME_LIBRARY, Q_INVALID, false, 3, 0, 96, false, false, true, 0, 3, false }, { OFILE_BCASE, 0, 0, DTYPE_NONE, THEME_LIBRARY, Q_INVALID, false, 4, 0, 96, false, false, true, 0, 3, false }, { OFILE_BOOK2, 0, 0, DTYPE_NONE, THEME_LIBRARY, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 3, false }, { OFILE_CANDLE2, 0, 0, DTYPE_NONE, THEME_LIBRARY, Q_INVALID, true, 2, 4, 96, true, true, true, 0, 0, false }, { OFILE_BLOODFNT, 0, 0, DTYPE_NONE, THEME_BLOODFOUNTAIN, Q_INVALID, true, 2, 10, 96, true, true, true, 0, 3, false }, { OFILE_DECAP, 13, 15, DTYPE_NONE, THEME_DECAPITATED, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 1, false }, { OFILE_CHEST1, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 1, true }, { OFILE_CHEST2, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 1, true }, { OFILE_CHEST3, 1, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 1, true }, { OFILE_BOOK1, 0, 0, DTYPE_NONE, THEME_NONE, Q_BLIND, false, 1, 0, 96, true, true, true, 0, 3, false }, { OFILE_BOOK1, 0, 0, DTYPE_NONE, THEME_NONE, Q_BLOOD, false, 4, 0, 96, true, true, true, 0, 3, false }, { OFILE_PEDISTL, 0, 0, DTYPE_NONE, THEME_NONE, Q_BLOOD, false, 1, 0, 96, true, true, true, 0, 3, false }, { OFILE_L3DOORS, 0, 0, DTYPE_CAVES, THEME_NONE, Q_INVALID, false, 1, 0, 64, false, false, true, 0, 3, true }, { OFILE_L3DOORS, 0, 0, DTYPE_CAVES, THEME_NONE, Q_INVALID, false, 2, 0, 64, false, false, true, 0, 3, true }, { OFILE_PFOUNTN, 0, 0, DTYPE_NONE, THEME_PURIFYINGFOUNTAIN, Q_INVALID, true, 2, 10, 128, true, true, true, 0, 3, false }, { OFILE_ARMSTAND, 0, 0, DTYPE_NONE, THEME_ARMORSTAND, Q_INVALID, false, 1, 0, 96, true, false, true, 0, 3, false }, { OFILE_ARMSTAND, 0, 0, DTYPE_NONE, THEME_ARMORSTAND, Q_INVALID, false, 2, 0, 96, true, false, true, 0, 0, false }, { OFILE_GOATSHRN, 0, 0, DTYPE_NONE, THEME_GOATSHRINE, Q_INVALID, true, 2, 10, 96, true, true, true, 0, 3, false }, { OFILE_CAULDREN, 13, 15, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, false, true, 0, 3, false }, { OFILE_MFOUNTN, 0, 0, DTYPE_NONE, THEME_MURKYFOUNTAIN, Q_INVALID, true, 2, 10, 128, true, true, true, 0, 3, false }, { OFILE_TFOUNTN, 0, 0, DTYPE_NONE, THEME_TEARFOUNTAIN, Q_INVALID, true, 2, 4, 128, true, true, true, 0, 3, false }, { OFILE_ALTBOY, 0, 0, DTYPE_NONE, THEME_NONE, Q_BETRAYER, false, 1, 0, 128, true, true, true, 0, 0, false }, { OFILE_MCIRL, 0, 0, DTYPE_NONE, THEME_NONE, Q_BETRAYER, false, 1, 0, 96, false, true, true, 0, 0, false }, { OFILE_MCIRL, 0, 0, DTYPE_NONE, THEME_NONE, Q_BETRAYER, false, 1, 0, 96, false, true, true, 0, 0, false }, { OFILE_BKSLBRNT, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 3, false }, { OFILE_CANDLE2, 0, 0, DTYPE_NONE, THEME_NONE, Q_BETRAYER, true, 2, 4, 96, true, true, true, 0, 0, false }, { OFILE_BOOK1, 0, 0, DTYPE_NONE, THEME_NONE, Q_WARLORD, false, 4, 0, 96, true, true, true, 0, 3, false }, { OFILE_ARMSTAND, 0, 0, DTYPE_NONE, THEME_NONE, Q_WARLORD, false, 1, 0, 96, true, false, true, 0, 3, false }, { OFILE_WEAPSTND, 0, 0, DTYPE_NONE, THEME_NONE, Q_WARLORD, false, 1, 0, 96, true, false, true, 0, 3, false }, { OFILE_BURNCROS, 0, 0, DTYPE_NONE, THEME_BRNCROSS, Q_INVALID, true, 0, 10, 160, true, false, false, 0, 0, false }, { OFILE_WEAPSTND, 0, 0, DTYPE_NONE, THEME_WEAPONRACK, Q_INVALID, false, 1, 0, 96, true, false, true, 0, 3, false }, { OFILE_WEAPSTND, 0, 0, DTYPE_NONE, THEME_WEAPONRACK, Q_INVALID, false, 2, 0, 96, true, false, true, 0, 0, false }, { OFILE_MUSHPTCH, 0, 0, DTYPE_NONE, THEME_NONE, Q_MUSHROOM, false, 1, 0, 96, true, true, true, 0, 3, true }, { OFILE_LZSTAND, 0, 0, DTYPE_NONE, THEME_NONE, Q_BETRAYER, false, 1, 0, 128, true, false, true, 0, 3, false }, { OFILE_DECAP, 9, 9, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 2, 0, 96, true, true, true, 0, 1, false }, { OFILE_CHEST3, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 1, true }, { OFILE_BCASE, 0, 0, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 2, 0, 96, true, false, true, 0, 0, false }, { OFILE_POD, 17, 20, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 9, 96, true, true, true, 1, 3, false }, { OFILE_PODEX, 17, 20, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 10, 96, true, true, true, 1, 3, false }, { OFILE_URN, 21, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 9, 96, true, true, true, 1, 3, false }, { OFILE_URNEX, 21, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 10, 96, true, true, true, 1, 3, false }, { OFILE_L5BOOKS, 21, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 0, 96, true, true, true, 0, 3, false }, { OFILE_L5CANDLE, 21, 23, DTYPE_NONE, THEME_NONE, Q_INVALID, true, 2, 4, 96, true, true, true, 0, 0, false }, { OFILE_L5DOORS, 0, 0, DTYPE_CRYPT, THEME_NONE, Q_INVALID, false, 1, 0, 64, false, false, true, 0, 3, true }, { OFILE_L5DOORS, 0, 0, DTYPE_CRYPT, THEME_NONE, Q_INVALID, false, 2, 0, 64, false, false, true, 0, 3, true }, { OFILE_L5LEVER, 24, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 1, 96, true, true, true, 0, 1, true }, { OFILE_L5SARC, 21, 24, DTYPE_NONE, THEME_NONE, Q_INVALID, false, 1, 5, 128, true, true, true, 0, 3, true }, // clang-format on }; /** Maps from object_graphic_id to object CEL name. */ const char *const ObjMasterLoadList[] = { "l1braz", "l1doors", "lever", "chest1", "chest2", "banner", "skulpile", "skulfire", "skulstik", "cruxsk1", "cruxsk2", "cruxsk3", "book1", "book2", "rockstan", "angel", "chest3", "burncros", "candle2", "nude2", "switch4", "tnudem", "tnudew", "tsoul", "l2doors", "wtorch4", "wtorch3", "sarc", "flame1", "prsrplt1", "traphole", "miniwatr", "wtorch2", "wtorch1", "bcase", "bshelf", "weapstnd", "barrel", "barrelex", "lshrineg", "rshrineg", "bloodfnt", "decap", "pedistl", "l3doors", "pfountn", "armstand", "goatshrn", "cauldren", "mfountn", "tfountn", "altboy", "mcirl", "bkslbrnt", "mushptch", "lzstand", "l6pod1", "l6pod2", "l5door", "l5lever", "l5light", "l5sarco", "urn", "urnexpld", "l5books", }; } // namespace devilution