You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

252 lines
4.1 KiB

/**
* @file objdat.h
*
* Interface of all object data.
*/
#pragma once
#include <stdint.h>
#include "gendung.h"
namespace devilution {
enum theme_id : int8_t {
THEME_BARREL,
THEME_SHRINE,
THEME_MONSTPIT,
THEME_SKELROOM,
THEME_TREASURE,
THEME_LIBRARY,
THEME_TORTURE,
THEME_BLOODFOUNTAIN,
THEME_DECAPITATED,
THEME_PURIFYINGFOUNTAIN,
THEME_ARMORSTAND,
THEME_GOATSHRINE,
THEME_CAULDRON,
THEME_MURKYFOUNTAIN,
THEME_TEARFOUNTAIN,
THEME_BRNCROSS,
THEME_WEAPONRACK,
THEME_NONE = -1,
};
enum object_graphic_id : int8_t {
OFILE_L1BRAZ,
OFILE_L1DOORS,
OFILE_LEVER,
OFILE_CHEST1,
OFILE_CHEST2,
OFILE_BANNER,
OFILE_SKULPILE,
OFILE_SKULFIRE,
OFILE_SKULSTIK,
OFILE_CRUXSK1,
OFILE_CRUXSK2,
OFILE_CRUXSK3,
OFILE_BOOK1,
OFILE_BOOK2,
OFILE_ROCKSTAN,
OFILE_ANGEL,
OFILE_CHEST3,
OFILE_BURNCROS,
OFILE_CANDLE2,
OFILE_NUDE2,
OFILE_SWITCH4,
OFILE_TNUDEM,
OFILE_TNUDEW,
OFILE_TSOUL,
OFILE_L2DOORS,
OFILE_WTORCH4,
OFILE_WTORCH3,
OFILE_SARC,
OFILE_FLAME1,
OFILE_PRSRPLT1,
OFILE_TRAPHOLE,
OFILE_MINIWATR,
OFILE_WTORCH2,
OFILE_WTORCH1,
OFILE_BCASE,
OFILE_BSHELF,
OFILE_WEAPSTND,
OFILE_BARREL,
OFILE_BARRELEX,
OFILE_LSHRINEG,
OFILE_RSHRINEG,
OFILE_BLOODFNT,
OFILE_DECAP,
OFILE_PEDISTL,
OFILE_L3DOORS,
OFILE_PFOUNTN,
OFILE_ARMSTAND,
OFILE_GOATSHRN,
OFILE_CAULDREN,
OFILE_MFOUNTN,
OFILE_TFOUNTN,
OFILE_ALTBOY,
OFILE_MCIRL,
OFILE_BKSLBRNT,
OFILE_MUSHPTCH,
OFILE_LZSTAND,
OFILE_NULL = -1,
};
enum _object_id : int8_t {
OBJ_L1LIGHT,
OBJ_L1LDOOR,
OBJ_L1RDOOR,
OBJ_SKFIRE,
OBJ_LEVER,
OBJ_CHEST1,
OBJ_CHEST2,
OBJ_CHEST3,
OBJ_CANDLE1,
OBJ_CANDLE2,
OBJ_CANDLEO,
OBJ_BANNERL,
OBJ_BANNERM,
OBJ_BANNERR,
OBJ_SKPILE,
OBJ_SKSTICK1,
OBJ_SKSTICK2,
OBJ_SKSTICK3,
OBJ_SKSTICK4,
OBJ_SKSTICK5,
OBJ_CRUX1,
OBJ_CRUX2,
OBJ_CRUX3,
OBJ_STAND,
OBJ_ANGEL,
OBJ_BOOK2L,
OBJ_BCROSS,
OBJ_NUDEW2R,
OBJ_SWITCHSKL,
OBJ_TNUDEM1,
OBJ_TNUDEM2,
OBJ_TNUDEM3,
OBJ_TNUDEM4,
OBJ_TNUDEW1,
OBJ_TNUDEW2,
OBJ_TNUDEW3,
OBJ_TORTURE1,
OBJ_TORTURE2,
OBJ_TORTURE3,
OBJ_TORTURE4,
OBJ_TORTURE5,
OBJ_BOOK2R,
OBJ_L2LDOOR,
OBJ_L2RDOOR,
OBJ_TORCHL,
OBJ_TORCHR,
OBJ_TORCHL2,
OBJ_TORCHR2,
OBJ_SARC,
OBJ_FLAMEHOLE,
OBJ_FLAMELVR,
OBJ_WATER,
OBJ_BOOKLVR,
OBJ_TRAPL,
OBJ_TRAPR,
OBJ_BOOKSHELF,
OBJ_WEAPRACK,
OBJ_BARREL,
OBJ_BARRELEX,
OBJ_SHRINEL,
OBJ_SHRINER,
OBJ_SKELBOOK,
OBJ_BOOKCASEL,
OBJ_BOOKCASER,
OBJ_BOOKSTAND,
OBJ_BOOKCANDLE,
OBJ_BLOODFTN,
OBJ_DECAP,
OBJ_TCHEST1,
OBJ_TCHEST2,
OBJ_TCHEST3,
OBJ_BLINDBOOK,
OBJ_BLOODBOOK,
OBJ_PEDISTAL,
OBJ_L3LDOOR,
OBJ_L3RDOOR,
OBJ_PURIFYINGFTN,
OBJ_ARMORSTAND,
OBJ_ARMORSTANDN,
OBJ_GOATSHRINE,
OBJ_CAULDRON,
OBJ_MURKYFTN,
OBJ_TEARFTN,
OBJ_ALTBOY,
OBJ_MCIRCLE1,
OBJ_MCIRCLE2,
OBJ_STORYBOOK,
OBJ_STORYCANDLE,
OBJ_STEELTOME,
OBJ_WARARMOR,
OBJ_WARWEAP,
OBJ_TBCROSS,
OBJ_WEAPONRACK,
OBJ_WEAPONRACKN,
OBJ_MUSHPATCH,
OBJ_LAZSTAND,
OBJ_SLAINHERO,
OBJ_SIGNCHEST,
OBJ_BOOKSHELFR,
OBJ_NULL = -1,
};
enum quest_id : int8_t {
Q_ROCK,
Q_MUSHROOM,
Q_GARBUD,
Q_ZHAR,
Q_VEIL,
Q_DIABLO,
Q_BUTCHER,
Q_LTBANNER,
Q_BLIND,
Q_BLOOD,
Q_ANVIL,
Q_WARLORD,
Q_SKELKING,
Q_PWATER,
Q_SCHAMB,
Q_BETRAYER,
Q_GRAVE,
Q_FARMER,
Q_GIRL,
Q_TRADER,
Q_DEFILER,
Q_NAKRUL,
Q_CORNSTN,
Q_JERSEY,
Q_INVALID = -1,
};
struct ObjDataStruct {
Sint8 oload; // Todo create enum
object_graphic_id ofindex;
Sint8 ominlvl;
Sint8 omaxlvl;
dungeon_type olvltype;
theme_id otheme;
quest_id oquest;
Sint32 oAnimFlag; // TODO Create enum
Sint32 oAnimDelay; // Tick length of each frame in the current animation
Sint32 oAnimLen; // Number of frames in current animation
Sint32 oAnimWidth;
bool oSolidFlag;
bool oMissFlag;
bool oLightFlag;
Sint8 oBreak; // TODO Create enum
Sint8 oSelFlag; // TODO Create enum
bool oTrapFlag;
};
extern const _object_id ObjTypeConv[];
extern const ObjDataStruct AllObjects[];
extern const char *const ObjMasterLoadList[];
extern const char *ObjCryptLoadList[];
extern const char *ObjHiveLoadList[];
} // namespace devilution