diff --git a/Source/objdat.cpp b/Source/objdat.cpp index eee4e51fc..dc5ba8296 100644 --- a/Source/objdat.cpp +++ b/Source/objdat.cpp @@ -123,7 +123,7 @@ int ObjTypeConv[] = { }; /** Contains the data related to each object ID. */ -ObjDataStruct AllObjects[99] = { +ObjDataStruct AllObjects[] = { // clang-format off // oload, ofindex, ominlvl, omaxlvl, olvltype, otheme, oquest, oAnimFlag, oAnimDelay, oAnimLen, oAnimWidth, oSolidFlag, oMissFlag, oLightFlag, oBreak, oSelFlag, oTrapFlag { 1, OFILE_L1BRAZ, 1, 4, DTYPE_CATHEDRAL, THEME_NONE, -1, 1, 1, 26, 64, TRUE, TRUE, FALSE, 0, 0, FALSE }, @@ -233,7 +233,7 @@ ObjDataStruct AllObjects[99] = { }; /** Maps from object_graphic_id to object CEL name. */ -char *ObjMasterLoadList[56] = { // might be const +char *ObjMasterLoadList[] = { // might be const "L1Braz", "L1Doors", "Lever", @@ -291,3 +291,123 @@ char *ObjMasterLoadList[56] = { // might be const "Mushptch", "LzStand" }; +#ifdef HELLFIRE +/** Maps from object_graphic_id to object CEL name (Hellfire Crypt overwrite). */ +char *ObjCryptLoadList[] = { + "L1Braz", + "L5Door", + "L5Lever", + "Chest1", + "Chest2", + "Banner", + "SkulPile", + "SkulFire", + "SkulStik", + "CruxSk1", + "CruxSk2", + "CruxSk3", + "Book1", + "Book2", + "Rockstan", + "Angel", + "Chest3", + "Burncros", + "L5Light", + "Nude2", + "Switch4", + "TNudeM", + "TNudeW", + "TSoul", + "L2Doors", + "WTorch4", + "WTorch3", + "L5Sarco", + "Flame1", + "Prsrplt1", + "Traphole", + "MiniWatr", + "WTorch2", + "WTorch1", + "BCase", + "BShelf", + "WeapStnd", + "Urn", + "Urnexpld", + "LShrineG", + "RShrineG", + "Bloodfnt", + "Decap", + "Pedistl", + "L3Doors", + "PFountn", + "Armstand", + "Goatshrn", + "Cauldren", + "MFountn", + "TFountn", + "Altboy", + "Mcirl", + "L5Books", + "Mushptch", + "LzStand", +}; +/** Maps from object_graphic_id to object CEL name (Hellfire Hive overwrite). */ +char *ObjHiveLoadList[] = { + "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", + "L6Pod1", + "L6Pod2", + "LShrineG", + "RShrineG", + "Bloodfnt", + "Decap", + "Pedistl", + "L3Doors", + "PFountn", + "Armstand", + "Goatshrn", + "Cauldren", + "MFountn", + "TFountn", + "Altboy", + "Mcirl", + "Bkslbrnt", + "Mushptch", + "LzStand", +}; +#endif diff --git a/Source/objdat.h b/Source/objdat.h index eaedca1f9..e93033f6a 100644 --- a/Source/objdat.h +++ b/Source/objdat.h @@ -7,7 +7,11 @@ #define __OBJDAT_H__ extern int ObjTypeConv[]; -extern ObjDataStruct AllObjects[99]; -extern char *ObjMasterLoadList[56]; +extern ObjDataStruct AllObjects[]; +extern char *ObjMasterLoadList[]; +#ifdef HELLFIRE +extern char *ObjCryptLoadList[]; +extern char *ObjHiveLoadList[]; +#endif #endif /* __OBJDAT_H__ */ diff --git a/Source/objects.cpp b/Source/objects.cpp index e0c7e1402..7ba9bf006 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -223,10 +223,22 @@ void InitObjectGFX() memset(fileload, FALSE, sizeof(fileload)); +#ifdef HELLFIRE + int lvl = currlevel; + if (currlevel >= 17 && currlevel <= 20) + lvl -= 8; + else if (currlevel >= 21 && currlevel <= 24) + lvl -= 20; +#endif for (i = 0; AllObjects[i].oload != -1; i++) { if (AllObjects[i].oload == 1 +#ifdef HELLFIRE + && (int)lvl >= AllObjects[i].ominlvl + && (int)lvl <= AllObjects[i].omaxlvl) { +#else && (int)currlevel >= AllObjects[i].ominlvl && (int)currlevel <= AllObjects[i].omaxlvl) { +#endif fileload[AllObjects[i].ofindex] = TRUE; } if (AllObjects[i].otheme != THEME_NONE) { @@ -246,6 +258,12 @@ void InitObjectGFX() if (fileload[i]) { ObjFileList[numobjfiles] = i; sprintf(filestr, "Objects\\%s.CEL", ObjMasterLoadList[i]); +#ifdef HELLFIRE + if (currlevel >= 17 && currlevel < 21) + sprintf(filestr, "Objects\\%s.CEL", ObjHiveLoadList[i]); + else if (currlevel >= 21) + sprintf(filestr, "Objects\\%s.CEL", ObjCryptLoadList[i]); +#endif pObjCels[numobjfiles] = LoadFileInMem(filestr, NULL); numobjfiles++; }