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.
120 lines
2.3 KiB
120 lines
2.3 KiB
/** |
|
* @file misdat.h |
|
* |
|
* Interface of data related to missiles. |
|
*/ |
|
#pragma once |
|
|
|
#include <cstdint> |
|
|
|
#include "engine.h" |
|
#include "effects.h" |
|
#include "utils/stdcompat/cstddef.hpp" |
|
|
|
namespace devilution { |
|
|
|
enum mienemy_type : uint8_t { |
|
TARGET_MONSTERS, |
|
TARGET_PLAYERS, |
|
TARGET_BOTH, |
|
}; |
|
|
|
enum missile_resistance : uint8_t { |
|
MISR_NONE, |
|
MISR_FIRE, |
|
MISR_LIGHTNING, |
|
MISR_MAGIC, |
|
MISR_ACID, |
|
}; |
|
|
|
typedef enum missile_graphic_id : uint8_t { |
|
MFILE_ARROWS, |
|
MFILE_FIREBA, |
|
MFILE_GUARD, |
|
MFILE_LGHNING, |
|
MFILE_FIREWAL, |
|
MFILE_MAGBLOS, |
|
MFILE_PORTAL, |
|
MFILE_BLUEXFR, |
|
MFILE_BLUEXBK, |
|
MFILE_MANASHLD, |
|
MFILE_BLOOD, |
|
MFILE_BONE, |
|
MFILE_METLHIT, |
|
MFILE_FARROW, |
|
MFILE_DOOM, |
|
MFILE_0F, |
|
MFILE_BLODBUR, |
|
MFILE_NEWEXP, |
|
MFILE_SHATTER1, |
|
MFILE_BIGEXP, |
|
MFILE_INFERNO, |
|
MFILE_THINLGHT, |
|
MFILE_FLARE, |
|
MFILE_FLAREEXP, |
|
MFILE_MAGBALL, |
|
MFILE_KRULL, |
|
MFILE_MINILTNG, |
|
MFILE_HOLY, |
|
MFILE_HOLYEXPL, |
|
MFILE_LARROW, |
|
MFILE_FIRARWEX, |
|
MFILE_ACIDBF, |
|
MFILE_ACIDSPLA, |
|
MFILE_ACIDPUD, |
|
MFILE_ETHRSHLD, |
|
MFILE_FIRERUN, |
|
MFILE_RESSUR1, |
|
MFILE_SKLBALL, |
|
MFILE_RPORTAL, |
|
MFILE_FIREPLAR, |
|
MFILE_SCUBMISB, |
|
MFILE_SCBSEXPB, |
|
MFILE_SCUBMISC, |
|
MFILE_SCBSEXPC, |
|
MFILE_SCUBMISD, |
|
MFILE_SCBSEXPD, |
|
MFILE_SPAWNS, |
|
MFILE_REFLECT, |
|
MFILE_LICH, |
|
MFILE_MSBLA, |
|
MFILE_NECROMORB, |
|
MFILE_ARCHLICH, |
|
MFILE_RUNE, |
|
MFILE_EXYEL2, |
|
MFILE_EXBL2, |
|
MFILE_EXRED3, |
|
MFILE_BONEDEMON, |
|
MFILE_EXORA1, |
|
MFILE_EXBL3, |
|
MFILE_NONE, // BUGFIX: should be `MFILE_NONE = MFILE_SCBSEXPD+1`, i.e. MFILE_NULL, since there would otherwise be an out-of-bounds in SetMissAnim when accessing misfiledata for any of the missiles that have MFILE_NONE as mFileNum in missiledata. (fixed) |
|
} missile_graphic_id; |
|
|
|
typedef struct MissileData { |
|
void (*mAddProc)(int, Point, Point, int, int8_t, int, int); |
|
void (*mProc)(int); |
|
uint8_t mName; |
|
bool mDraw; |
|
uint8_t mType; |
|
missile_resistance mResist; |
|
uint8_t mFileNum; |
|
_sfx_id mlSFX; |
|
_sfx_id miSFX; |
|
} MissileData; |
|
|
|
typedef struct MisFileData { |
|
const char *mName; |
|
uint8_t mAnimName; |
|
uint8_t mAnimFAmt; |
|
uint32_t mFlags; |
|
byte *mAnimData[16]; |
|
uint8_t mAnimDelay[16]; |
|
uint8_t mAnimLen[16]; |
|
int16_t mAnimWidth[16]; |
|
int16_t mAnimWidth2[16]; |
|
} MisFileData; |
|
|
|
extern MissileData missiledata[]; |
|
extern MisFileData misfiledata[]; |
|
|
|
} // namespace devilution
|
|
|