Browse Source

♻️ make better use of enums

pull/1423/head
Anders Jenbo 5 years ago
parent
commit
b1ffdca0a3
  1. 2
      Source/diablo.cpp
  2. 17
      Source/diablo.h
  3. 2
      Source/dthread.cpp
  4. 12
      Source/error.cpp
  5. 70
      Source/error.h
  6. 35
      Source/gendung.h
  7. 10
      Source/items.cpp
  8. 32
      Source/msg.cpp
  9. 317
      Source/msg.h
  10. 2
      Source/multi.cpp
  11. 2
      Source/multi.h
  12. 62
      Source/objects.cpp
  13. 12
      Source/objects.h
  14. 4
      Source/player.cpp
  15. 14
      Source/player.h
  16. 16
      Source/trigs.cpp
  17. 251
      enums.h

2
Source/diablo.cpp

@ -42,7 +42,7 @@ bool gbNestArt;
bool gbBard;
bool gbBarbarian;
int sgnTimeoutCurs;
char sgbMouseDown;
clicktype sgbMouseDown;
int color_cycle_timer;
int gnTickRate;
WORD gnTickDelay = 50;

17
Source/diablo.h

@ -5,16 +5,21 @@
*/
#pragma once
#include <stdint.h>
#include "pack.h"
#include "gendung.h"
#ifdef _DEBUG
#include "monstdat.h"
#endif
namespace devilution {
#ifdef __cplusplus
extern "C" {
#endif
enum clicktype : int8_t {
CLICK_NONE,
CLICK_LEFT,
CLICK_RIGHT,
};
#ifndef DEFAULT_WIDTH
#define DEFAULT_WIDTH 640
@ -45,7 +50,7 @@ extern bool gbCowQuest;
extern bool gbNestArt;
extern bool gbBard;
extern bool gbBarbarian;
extern char sgbMouseDown;
extern clicktype sgbMouseDown;
extern int gnTickRate;
extern WORD gnTickDelay;
@ -82,8 +87,4 @@ extern int debug_mode_key_j;
extern bool gbFriendlyMode;
extern bool gbFriendlyFire;
#ifdef __cplusplus
}
#endif
}

2
Source/dthread.cpp

@ -39,7 +39,7 @@ static unsigned int dthread_handler(void *data)
if (pkt) {
if (pkt->dwSpaceLeft != MAX_PLRS)
multi_send_zero_packet(pkt->dwSpaceLeft, pkt->data[0], &pkt->data[8], *(DWORD *)&pkt->data[4]);
multi_send_zero_packet(pkt->dwSpaceLeft, static_cast<_cmd_id>(pkt->data[0]), &pkt->data[8], *(DWORD *)&pkt->data[4]);
dwMilliseconds = 1000 * *(DWORD *)&pkt->data[4] / gdwDeltaBytesSec;
if (dwMilliseconds >= 1)

12
Source/error.cpp

@ -7,9 +7,9 @@
namespace devilution {
char msgtable[MAX_SEND_STR_LEN];
diablo_message msgtable[MAX_SEND_STR_LEN];
DWORD msgdelay;
char msgflag;
diablo_message msgflag;
char msgcnt;
/** Maps from error_id to error message. */
@ -71,7 +71,7 @@ const char *const MsgStrings[] = {
"That which can break will.",
};
void InitDiabloMsg(char e)
void InitDiabloMsg(diablo_message e)
{
int i;
@ -95,9 +95,9 @@ void ClrDiabloMsg()
int i;
for (i = 0; i < sizeof(msgtable); i++)
msgtable[i] = 0;
msgtable[i] = EMSG_NONE;
msgflag = 0;
msgflag = EMSG_NONE;
msgcnt = 0;
}
@ -154,7 +154,7 @@ void DrawDiabloMsg(CelOutputBuffer out)
if (msgdelay == 0) {
msgcnt--;
if (msgcnt == 0) {
msgflag = 0;
msgflag = EMSG_NONE;
} else {
msgflag = msgtable[msgcnt];
msgdelay = SDL_GetTicks();

70
Source/error.h

@ -5,23 +5,75 @@
*/
#pragma once
#include <stdint.h>
#include "engine.h"
namespace devilution {
#ifdef __cplusplus
extern "C" {
#endif
enum diablo_message : uint8_t {
EMSG_NONE,
EMSG_NO_AUTOMAP_IN_TOWN,
EMSG_NO_MULTIPLAYER_IN_DEMO,
EMSG_DIRECT_SOUND_FAILED,
EMSG_NOT_IN_SHAREWARE,
EMSG_NO_SPACE_TO_SAVE,
EMSG_NO_PAUSE_IN_TOWN,
EMSG_COPY_TO_HDD,
EMSG_DESYNC,
EMSG_NO_PAUSE_IN_MP,
EMSG_LOADING,
EMSG_SAVING,
EMSG_SHRINE_MYSTERIOUS,
EMSG_SHRINE_HIDDEN,
EMSG_SHRINE_GLOOMY,
EMSG_SHRINE_WEIRD,
EMSG_SHRINE_MAGICAL,
EMSG_SHRINE_STONE,
EMSG_SHRINE_RELIGIOUS,
EMSG_SHRINE_ENCHANTED,
EMSG_SHRINE_THAUMATURGIC,
EMSG_SHRINE_FASCINATING,
EMSG_SHRINE_CRYPTIC,
EMSG_SHRINE_UNUSED,
EMSG_SHRINE_ELDRITCH,
EMSG_SHRINE_EERIE,
EMSG_SHRINE_DIVINE,
EMSG_SHRINE_HOLY,
EMSG_SHRINE_SACRED,
EMSG_SHRINE_SPIRITUAL,
EMSG_SHRINE_SPOOKY1,
EMSG_SHRINE_SPOOKY2,
EMSG_SHRINE_ABANDONED,
EMSG_SHRINE_CREEPY,
EMSG_SHRINE_QUIET,
EMSG_SHRINE_SECLUDED,
EMSG_SHRINE_ORNATE,
EMSG_SHRINE_GLIMMERING,
EMSG_SHRINE_TAINTED1,
EMSG_SHRINE_TAINTED2,
EMSG_REQUIRES_LVL_8,
EMSG_REQUIRES_LVL_13,
EMSG_REQUIRES_LVL_17,
EMSG_BONECHAMB,
EMSG_SHRINE_OILY,
EMSG_SHRINE_GLOWING,
EMSG_SHRINE_MENDICANT,
EMSG_SHRINE_SPARKLING,
EMSG_SHRINE_TOWN,
EMSG_SHRINE_SHIMMERING,
EMSG_SHRINE_SOLAR1,
EMSG_SHRINE_SOLAR2,
EMSG_SHRINE_SOLAR3,
EMSG_SHRINE_SOLAR4,
EMSG_SHRINE_MURPHYS,
};
extern DWORD msgdelay;
extern char msgflag;
extern diablo_message msgflag;
void InitDiabloMsg(char e);
void InitDiabloMsg(diablo_message e);
void ClrDiabloMsg();
void DrawDiabloMsg(CelOutputBuffer out);
#ifdef __cplusplus
}
#endif
}

35
Source/gendung.h

@ -5,13 +5,22 @@
*/
#pragma once
#include <stdint.h>
namespace devilution {
#ifdef __cplusplus
extern "C" {
#endif
enum dungeon_type : int8_t {
DTYPE_TOWN,
DTYPE_CATHEDRAL,
DTYPE_CATACOMBS,
DTYPE_CAVES,
DTYPE_HELL,
DTYPE_NEST,
DTYPE_CRYPT,
DTYPE_NONE = -1,
};
typedef struct ScrollStruct {
struct ScrollStruct {
/** @brief X-offset of camera position. This usually corresponds to a negative version of plr[myplr]._pxoff */
Sint32 _sxoff;
/** @brief Y-offset of camera position. This usually corresponds to a negative version of plr[myplr]._pyoff */
@ -19,21 +28,21 @@ typedef struct ScrollStruct {
Sint32 _sdx;
Sint32 _sdy;
Sint32 _sdir;
} ScrollStruct;
};
typedef struct THEME_LOC {
struct THEME_LOC {
Sint32 x;
Sint32 y;
Sint32 ttval;
Sint32 width;
Sint32 height;
} THEME_LOC;
};
typedef struct MICROS {
struct MICROS {
Uint16 mt[16];
} MICROS;
};
typedef struct ShadowStruct {
struct ShadowStruct {
Uint8 strig;
Uint8 s1;
Uint8 s2;
@ -41,7 +50,7 @@ typedef struct ShadowStruct {
Uint8 nv1;
Uint8 nv2;
Uint8 nv3;
} ShadowStruct;
};
extern BYTE dungeon[DMAXX][DMAXY];
extern BYTE pdungeon[DMAXX][DMAXY];
@ -116,8 +125,4 @@ void DRLG_HoldThemeRooms();
BOOL SkipThemeRoom(int x, int y);
void InitLevels();
#ifdef __cplusplus
}
#endif
}

10
Source/items.cpp

@ -3,12 +3,22 @@
*
* Implementation of item functionality.
*/
#include <stdint.h>
#include <algorithm>
#include "all.h"
#include "options.h"
namespace devilution {
enum anim_armor_id : uint8_t {
// clang-format off
ANIM_ID_LIGHT_ARMOR = 0x00,
ANIM_ID_MEDIUM_ARMOR = 0x10,
ANIM_ID_HEAVY_ARMOR = 0x20,
// clang-format on
};
int itemactive[MAXITEMS];
BOOL uitemflag;
int itemavail[MAXITEMS];

32
Source/msg.cpp

@ -502,7 +502,7 @@ void delta_leave_sync(BYTE bLevel)
memcpy(&sgLocals[bLevel].automapsv, automapview, sizeof(automapview));
}
static void delta_sync_object(int oi, BYTE bCmd, BYTE bLevel)
static void delta_sync_object(int oi, _cmd_id bCmd, BYTE bLevel)
{
if (!gbIsMultiplayer)
return;
@ -520,7 +520,7 @@ static BOOL delta_get_item(TCmdGItem *pI, BYTE bLevel)
TCmdPItem *pD = sgLevels[bLevel].item;
for (i = 0; i < MAXITEMS; i++, pD++) {
if (pD->bCmd == 0xFF || pD->wIndx != pI->wIndx || pD->wCI != pI->wCI || pD->dwSeed != pI->dwSeed)
if (pD->bCmd == CMD_INVALID || pD->wIndx != pI->wIndx || pD->wCI != pI->wCI || pD->dwSeed != pI->dwSeed)
continue;
if (pD->bCmd == CMD_WALKXY) {
@ -533,7 +533,7 @@ static BOOL delta_get_item(TCmdGItem *pI, BYTE bLevel)
}
if (pD->bCmd == CMD_ACK_PLRINFO) {
sgbDeltaChanged = TRUE;
pD->bCmd = 0xFF;
pD->bCmd = CMD_INVALID;
return TRUE;
}
@ -545,7 +545,7 @@ static BOOL delta_get_item(TCmdGItem *pI, BYTE bLevel)
pD = sgLevels[bLevel].item;
for (i = 0; i < MAXITEMS; i++, pD++) {
if (pD->bCmd == 0xFF) {
if (pD->bCmd == CMD_INVALID) {
sgbDeltaChanged = TRUE;
pD->bCmd = CMD_WALKXY;
pD->x = pI->x;
@ -829,7 +829,7 @@ void DeltaLoadLevel()
deltaload = FALSE;
}
void NetSendCmd(BOOL bHiPri, BYTE bCmd)
void NetSendCmd(BOOL bHiPri, _cmd_id bCmd)
{
TCmd cmd;
@ -854,7 +854,7 @@ void NetSendCmdGolem(BYTE mx, BYTE my, BYTE dir, BYTE menemy, int hp, BYTE cl)
NetSendLoPri((BYTE *)&cmd, sizeof(cmd));
}
void NetSendCmdLoc(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y)
void NetSendCmdLoc(BOOL bHiPri, _cmd_id bCmd, BYTE x, BYTE y)
{
ALIGN_BY_1 TCmdLoc cmd;
@ -867,7 +867,7 @@ void NetSendCmdLoc(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y)
NetSendLoPri((BYTE *)&cmd, sizeof(cmd));
}
void NetSendCmdLocParam1(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y, WORD wParam1)
void NetSendCmdLocParam1(BOOL bHiPri, _cmd_id bCmd, BYTE x, BYTE y, WORD wParam1)
{
TCmdLocParam1 cmd;
@ -881,7 +881,7 @@ void NetSendCmdLocParam1(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y, WORD wParam1)
NetSendLoPri((BYTE *)&cmd, sizeof(cmd));
}
void NetSendCmdLocParam2(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y, WORD wParam1, WORD wParam2)
void NetSendCmdLocParam2(BOOL bHiPri, _cmd_id bCmd, BYTE x, BYTE y, WORD wParam1, WORD wParam2)
{
TCmdLocParam2 cmd;
@ -896,7 +896,7 @@ void NetSendCmdLocParam2(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y, WORD wParam1, W
NetSendLoPri((BYTE *)&cmd, sizeof(cmd));
}
void NetSendCmdLocParam3(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y, WORD wParam1, WORD wParam2, WORD wParam3)
void NetSendCmdLocParam3(BOOL bHiPri, _cmd_id bCmd, BYTE x, BYTE y, WORD wParam1, WORD wParam2, WORD wParam3)
{
TCmdLocParam3 cmd;
@ -912,7 +912,7 @@ void NetSendCmdLocParam3(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y, WORD wParam1, W
NetSendLoPri((BYTE *)&cmd, sizeof(cmd));
}
void NetSendCmdParam1(BOOL bHiPri, BYTE bCmd, WORD wParam1)
void NetSendCmdParam1(BOOL bHiPri, _cmd_id bCmd, WORD wParam1)
{
ALIGN_BY_1 TCmdParam1 cmd;
@ -924,7 +924,7 @@ void NetSendCmdParam1(BOOL bHiPri, BYTE bCmd, WORD wParam1)
NetSendLoPri((BYTE *)&cmd, sizeof(cmd));
}
void NetSendCmdParam2(BOOL bHiPri, BYTE bCmd, WORD wParam1, WORD wParam2)
void NetSendCmdParam2(BOOL bHiPri, _cmd_id bCmd, WORD wParam1, WORD wParam2)
{
TCmdParam2 cmd;
@ -937,7 +937,7 @@ void NetSendCmdParam2(BOOL bHiPri, BYTE bCmd, WORD wParam1, WORD wParam2)
NetSendLoPri((BYTE *)&cmd, sizeof(cmd));
}
void NetSendCmdParam3(BOOL bHiPri, BYTE bCmd, WORD wParam1, WORD wParam2, WORD wParam3)
void NetSendCmdParam3(BOOL bHiPri, _cmd_id bCmd, WORD wParam1, WORD wParam2, WORD wParam3)
{
TCmdParam3 cmd;
@ -966,7 +966,7 @@ void NetSendCmdQuest(BOOL bHiPri, BYTE q)
NetSendLoPri((BYTE *)&cmd, sizeof(cmd));
}
void NetSendCmdGItem(BOOL bHiPri, BYTE bCmd, BYTE mast, BYTE pnum, BYTE ii)
void NetSendCmdGItem(BOOL bHiPri, _cmd_id bCmd, BYTE mast, BYTE pnum, BYTE ii)
{
TCmdGItem cmd;
@ -1014,7 +1014,7 @@ void NetSendCmdGItem(BOOL bHiPri, BYTE bCmd, BYTE mast, BYTE pnum, BYTE ii)
NetSendLoPri((BYTE *)&cmd, sizeof(cmd));
}
void NetSendCmdGItem2(BOOL usonly, BYTE bCmd, BYTE mast, BYTE pnum, TCmdGItem *p)
void NetSendCmdGItem2(BOOL usonly, _cmd_id bCmd, BYTE mast, BYTE pnum, TCmdGItem *p)
{
TCmdGItem cmd;
@ -1039,7 +1039,7 @@ void NetSendCmdGItem2(BOOL usonly, BYTE bCmd, BYTE mast, BYTE pnum, TCmdGItem *p
multi_msg_add((BYTE *)&cmd.bCmd, sizeof(cmd));
}
BOOL NetSendCmdReq2(BYTE bCmd, BYTE mast, BYTE pnum, TCmdGItem *p)
BOOL NetSendCmdReq2(_cmd_id bCmd, BYTE mast, BYTE pnum, TCmdGItem *p)
{
TCmdGItem cmd;
@ -1069,7 +1069,7 @@ void NetSendCmdExtra(TCmdGItem *p)
NetSendHiPri((BYTE *)&cmd, sizeof(cmd));
}
void NetSendCmdPItem(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y)
void NetSendCmdPItem(BOOL bHiPri, _cmd_id bCmd, BYTE x, BYTE y)
{
TCmdPItem cmd;

317
Source/msg.h

@ -5,85 +5,196 @@
*/
#pragma once
#include <stdint.h>
namespace devilution {
#ifdef __cplusplus
extern "C" {
#endif
enum _cmd_id : uint8_t {
CMD_STAND,
CMD_WALKXY,
CMD_ACK_PLRINFO,
CMD_ADDSTR,
CMD_ADDMAG,
CMD_ADDDEX,
CMD_ADDVIT,
CMD_SBSPELL,
CMD_GETITEM,
CMD_AGETITEM,
CMD_PUTITEM,
CMD_RESPAWNITEM,
CMD_ATTACKXY,
CMD_RATTACKXY,
CMD_SPELLXY,
CMD_TSPELLXY,
CMD_OPOBJXY,
CMD_DISARMXY,
CMD_ATTACKID,
CMD_ATTACKPID,
CMD_RATTACKID,
CMD_RATTACKPID,
CMD_SPELLID,
CMD_SPELLPID,
CMD_TSPELLID,
CMD_TSPELLPID,
CMD_RESURRECT,
CMD_OPOBJT,
CMD_KNOCKBACK,
CMD_TALKXY,
CMD_NEWLVL,
CMD_WARP,
CMD_CHEAT_EXPERIENCE,
CMD_CHEAT_SPELL_LEVEL,
CMD_DEBUG,
CMD_SYNCDATA,
CMD_MONSTDEATH,
CMD_MONSTDAMAGE,
CMD_PLRDEAD,
CMD_REQUESTGITEM,
CMD_REQUESTAGITEM,
CMD_GOTOGETITEM,
CMD_GOTOAGETITEM,
CMD_OPENDOOR,
CMD_CLOSEDOOR,
CMD_OPERATEOBJ,
CMD_PLROPOBJ,
CMD_BREAKOBJ,
CMD_CHANGEPLRITEMS,
CMD_DELPLRITEMS,
CMD_PLRDAMAGE,
CMD_PLRLEVEL,
CMD_DROPITEM,
CMD_PLAYER_JOINLEVEL,
CMD_SEND_PLRINFO,
CMD_SATTACKXY,
CMD_ACTIVATEPORTAL,
CMD_DEACTIVATEPORTAL,
CMD_DLEVEL_0,
CMD_DLEVEL_1,
CMD_DLEVEL_2,
CMD_DLEVEL_3,
CMD_DLEVEL_4,
CMD_DLEVEL_5,
CMD_DLEVEL_6,
CMD_DLEVEL_7,
CMD_DLEVEL_8,
CMD_DLEVEL_9,
CMD_DLEVEL_10,
CMD_DLEVEL_11,
CMD_DLEVEL_12,
CMD_DLEVEL_13,
CMD_DLEVEL_14,
CMD_DLEVEL_15,
CMD_DLEVEL_16,
CMD_DLEVEL_17,
CMD_DLEVEL_18,
CMD_DLEVEL_19,
CMD_DLEVEL_20,
CMD_DLEVEL_21,
CMD_DLEVEL_22,
CMD_DLEVEL_23,
CMD_DLEVEL_24,
CMD_DLEVEL_JUNK,
CMD_DLEVEL_END,
CMD_HEALOTHER,
CMD_STRING,
CMD_SETSTR,
CMD_SETMAG,
CMD_SETDEX,
CMD_SETVIT,
CMD_RETOWN,
CMD_SPELLXYD,
CMD_ITEMEXTRA,
CMD_SYNCPUTITEM,
CMD_KILLGOLEM,
CMD_SYNCQUEST,
CMD_ENDSHIELD,
CMD_AWAKEGOLEM,
CMD_NOVA,
CMD_SETSHIELD,
CMD_REMSHIELD,
CMD_REFLECT,
CMD_NAKRUL,
CMD_OPENHIVE,
CMD_OPENCRYPT,
FAKE_CMD_SETID,
FAKE_CMD_DROPID,
NUM_CMDS,
CMD_INVALID = 0xFF,
};
#pragma pack(push, 1)
typedef struct TCmd {
Uint8 bCmd;
} TCmd;
struct TCmd {
_cmd_id bCmd;
};
typedef struct TCmdLoc {
Uint8 bCmd;
struct TCmdLoc {
_cmd_id bCmd;
Uint8 x;
Uint8 y;
} TCmdLoc;
};
typedef struct TCmdLocParam1 {
Uint8 bCmd;
struct TCmdLocParam1 {
_cmd_id bCmd;
Uint8 x;
Uint8 y;
Uint16 wParam1;
} TCmdLocParam1;
};
typedef struct TCmdLocParam2 {
Uint8 bCmd;
struct TCmdLocParam2 {
_cmd_id bCmd;
Uint8 x;
Uint8 y;
Uint16 wParam1;
Uint16 wParam2;
} TCmdLocParam2;
};
typedef struct TCmdLocParam3 {
Uint8 bCmd;
struct TCmdLocParam3 {
_cmd_id bCmd;
Uint8 x;
Uint8 y;
Uint16 wParam1;
Uint16 wParam2;
Uint16 wParam3;
} TCmdLocParam3;
};
typedef struct TCmdParam1 {
Uint8 bCmd;
struct TCmdParam1 {
_cmd_id bCmd;
Uint16 wParam1;
} TCmdParam1;
};
typedef struct TCmdParam2 {
Uint8 bCmd;
struct TCmdParam2 {
_cmd_id bCmd;
Uint16 wParam1;
Uint16 wParam2;
} TCmdParam2;
};
typedef struct TCmdParam3 {
Uint8 bCmd;
struct TCmdParam3 {
_cmd_id bCmd;
Uint16 wParam1;
Uint16 wParam2;
Uint16 wParam3;
} TCmdParam3;
};
typedef struct TCmdGolem {
Uint8 bCmd;
struct TCmdGolem {
_cmd_id bCmd;
Uint8 _mx;
Uint8 _my;
Uint8 _mdir;
Sint8 _menemy;
Sint32 _mhitpoints;
Uint8 _currlevel;
} TCmdGolem;
};
typedef struct TCmdQuest {
Uint8 bCmd;
struct TCmdQuest {
_cmd_id bCmd;
Uint8 q;
Uint8 qstate;
Uint8 qlog;
Uint8 qvar1;
} TCmdQuest;
};
typedef struct TCmdGItem {
Uint8 bCmd;
struct TCmdGItem {
_cmd_id bCmd;
Uint8 bMaster;
Uint8 bPnum;
Uint8 bCursitem;
@ -107,10 +218,10 @@ typedef struct TCmdGItem {
Uint8 bMinMag;
Uint8 bMinDex;
Uint8 bAC;
} TCmdGItem;
};
typedef struct TCmdPItem {
Uint8 bCmd;
struct TCmdPItem {
_cmd_id bCmd;
Uint8 x;
Uint8 y;
Uint16 wIndx;
@ -129,59 +240,59 @@ typedef struct TCmdPItem {
Uint8 bMinMag;
Uint8 bMinDex;
Uint8 bAC;
} TCmdPItem;
};
typedef struct TCmdChItem {
Uint8 bCmd;
struct TCmdChItem {
_cmd_id bCmd;
Uint8 bLoc;
Uint16 wIndx;
Uint16 wCI;
Sint32 dwSeed;
Uint8 bId;
Uint32 dwBuff;
} TCmdChItem;
};
typedef struct TCmdDelItem {
Uint8 bCmd;
struct TCmdDelItem {
_cmd_id bCmd;
Uint8 bLoc;
} TCmdDelItem;
};
typedef struct TCmdDamage {
Uint8 bCmd;
struct TCmdDamage {
_cmd_id bCmd;
Uint8 bPlr;
Uint32 dwDam;
} TCmdDamage;
};
typedef struct TCmdMonDamage {
Uint8 bCmd;
struct TCmdMonDamage {
_cmd_id bCmd;
Uint16 wMon;
Uint32 dwDam;
} TCmdMonDamage;
};
typedef struct TCmdPlrInfoHdr {
Uint8 bCmd;
struct TCmdPlrInfoHdr {
_cmd_id bCmd;
Uint16 wOffset;
Uint16 wBytes;
} TCmdPlrInfoHdr;
};
typedef struct TCmdString {
Uint8 bCmd;
struct TCmdString {
_cmd_id bCmd;
char str[MAX_SEND_STR_LEN];
} TCmdString;
};
typedef struct TFakeCmdPlr {
Uint8 bCmd;
struct TFakeCmdPlr {
_cmd_id bCmd;
Uint8 bPlr;
} TFakeCmdPlr;
};
typedef struct TFakeDropPlr {
Uint8 bCmd;
struct TFakeDropPlr {
_cmd_id bCmd;
Uint8 bPlr;
Uint32 dwReason;
} TFakeDropPlr;
};
typedef struct TSyncHeader {
Uint8 bCmd;
struct TSyncHeader {
_cmd_id bCmd;
Uint8 bLevel;
Uint16 wLen;
Uint8 bObjId;
@ -210,17 +321,17 @@ typedef struct TSyncHeader {
Uint8 bMinMag;
Uint8 bMinDex;
Uint8 bAC;
} TSyncHeader;
};
typedef struct TSyncMonster {
struct TSyncMonster {
Uint8 _mndx;
Uint8 _mx;
Uint8 _my;
Uint8 _menemy;
Uint8 _mdelta;
} TSyncMonster;
};
typedef struct TPktHdr {
struct TPktHdr {
Uint8 px;
Uint8 py;
Uint8 targx;
@ -232,68 +343,68 @@ typedef struct TPktHdr {
Uint8 bdex;
Uint16 wCheck;
Uint16 wLen;
} TPktHdr;
};
typedef struct TPkt {
struct TPkt {
TPktHdr hdr;
Uint8 body[493];
} TPkt;
};
typedef struct DMonsterStr {
struct DMonsterStr {
Uint8 _mx;
Uint8 _my;
Uint8 _mdir;
Uint8 _menemy;
Uint8 _mactive;
Sint32 _mhitpoints;
} DMonsterStr;
};
typedef struct DObjectStr {
Uint8 bCmd;
} DObjectStr;
struct DObjectStr {
_cmd_id bCmd;
};
typedef struct DLevel {
struct DLevel {
TCmdPItem item[MAXITEMS];
DObjectStr object[MAXOBJECTS];
DMonsterStr monster[MAXMONSTERS];
} DLevel;
};
typedef struct LocalLevel {
struct LocalLevel {
Uint8 automapsv[DMAXX][DMAXY];
} LocalLevel;
};
typedef struct DPortal {
struct DPortal {
Uint8 x;
Uint8 y;
Uint8 level;
Uint8 ltype;
Uint8 setlvl;
} DPortal;
};
typedef struct MultiQuests {
struct MultiQuests {
Uint8 qstate;
Uint8 qlog;
Uint8 qvar1;
} MultiQuests;
};
typedef struct DJunk {
struct DJunk {
DPortal portal[MAXPORTAL];
MultiQuests quests[MAXMULTIQUESTS];
} DJunk;
};
#pragma pack(pop)
#pragma pack(push, 1)
typedef struct TMegaPkt {
struct TMegaPkt {
struct TMegaPkt *pNext;
Uint32 dwSpaceLeft;
Uint8 data[32000];
} TMegaPkt;
};
#pragma pack(pop)
typedef struct TBuffer {
struct TBuffer {
Uint32 dwNextWriteOffset;
Uint8 bData[4096];
} TBuffer;
};
extern BOOL deltaload;
extern BYTE gbBufferMsgs;
@ -312,18 +423,18 @@ BOOL delta_quest_inited(int i);
void DeltaAddItem(int ii);
void DeltaSaveLevel();
void DeltaLoadLevel();
void NetSendCmd(BOOL bHiPri, BYTE bCmd);
void NetSendCmd(BOOL bHiPri, _cmd_id bCmd);
void NetSendCmdGolem(BYTE mx, BYTE my, BYTE dir, BYTE menemy, int hp, BYTE cl);
void NetSendCmdLoc(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y);
void NetSendCmdLocParam1(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y, WORD wParam1);
void NetSendCmdLocParam2(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y, WORD wParam1, WORD wParam2);
void NetSendCmdLocParam3(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y, WORD wParam1, WORD wParam2, WORD wParam3);
void NetSendCmdParam1(BOOL bHiPri, BYTE bCmd, WORD wParam1);
void NetSendCmdParam2(BOOL bHiPri, BYTE bCmd, WORD wParam1, WORD wParam2);
void NetSendCmdParam3(BOOL bHiPri, BYTE bCmd, WORD wParam1, WORD wParam2, WORD wParam3);
void NetSendCmdLoc(BOOL bHiPri, _cmd_id bCmd, BYTE x, BYTE y);
void NetSendCmdLocParam1(BOOL bHiPri, _cmd_id bCmd, BYTE x, BYTE y, WORD wParam1);
void NetSendCmdLocParam2(BOOL bHiPri, _cmd_id bCmd, BYTE x, BYTE y, WORD wParam1, WORD wParam2);
void NetSendCmdLocParam3(BOOL bHiPri, _cmd_id bCmd, BYTE x, BYTE y, WORD wParam1, WORD wParam2, WORD wParam3);
void NetSendCmdParam1(BOOL bHiPri, _cmd_id bCmd, WORD wParam1);
void NetSendCmdParam2(BOOL bHiPri, _cmd_id bCmd, WORD wParam1, WORD wParam2);
void NetSendCmdParam3(BOOL bHiPri, _cmd_id bCmd, WORD wParam1, WORD wParam2, WORD wParam3);
void NetSendCmdQuest(BOOL bHiPri, BYTE q);
void NetSendCmdGItem(BOOL bHiPri, BYTE bCmd, BYTE mast, BYTE pnum, BYTE ii);
void NetSendCmdPItem(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y);
void NetSendCmdGItem(BOOL bHiPri, _cmd_id bCmd, BYTE mast, BYTE pnum, BYTE ii);
void NetSendCmdPItem(BOOL bHiPri, _cmd_id bCmd, BYTE x, BYTE y);
void NetSendCmdChItem(BOOL bHiPri, BYTE bLoc);
void NetSendCmdDelItem(BOOL bHiPri, BYTE bLoc);
void NetSendCmdDItem(BOOL bHiPri, int ii);
@ -333,8 +444,4 @@ void NetSendCmdString(int pmask, const char *pszStr);
void delta_close_portal(int pnum);
DWORD ParseCmd(int pnum, TCmd *pCmd);
#ifdef __cplusplus
}
#endif
}

2
Source/multi.cpp

@ -511,7 +511,7 @@ void multi_process_network_packets()
nthread_terminate_game("SNetReceiveMsg");
}
void multi_send_zero_packet(int pnum, BYTE bCmd, BYTE *pbSrc, DWORD dwLen)
void multi_send_zero_packet(int pnum, _cmd_id bCmd, BYTE *pbSrc, DWORD dwLen)
{
DWORD dwOffset, dwBody, dwMsg;
TPkt pkt;

2
Source/multi.h

@ -48,7 +48,7 @@ void multi_player_left(int pnum, int reason);
void multi_net_ping();
int multi_handle_delta();
void multi_process_network_packets();
void multi_send_zero_packet(int pnum, BYTE bCmd, BYTE *pbSrc, DWORD dwLen);
void multi_send_zero_packet(int pnum, _cmd_id bCmd, BYTE *pbSrc, DWORD dwLen);
void NetClose();
BOOL NetInit(BOOL bSinglePlayer, BOOL *pfExitProgram);
BOOL multi_init_single(GameData *gameData);

62
Source/objects.cpp

@ -3,11 +3,51 @@
*
* Implementation of object functionality, interaction, spawning, loading, etc.
*/
#include <stdint.h>
#include "all.h"
#include "options.h"
namespace devilution {
enum shrine_type : uint8_t {
SHRINE_MYSTERIOUS,
SHRINE_HIDDEN,
SHRINE_GLOOMY,
SHRINE_WEIRD,
SHRINE_MAGICAL,
SHRINE_STONE,
SHRINE_RELIGIOUS,
SHRINE_ENCHANTED,
SHRINE_THAUMATURGIC,
SHRINE_FASCINATING,
SHRINE_CRYPTIC,
SHRINE_MAGICAL2,
SHRINE_ELDRITCH,
SHRINE_EERIE,
SHRINE_DIVINE,
SHRINE_HOLY,
SHRINE_SACRED,
SHRINE_SPIRITUAL,
SHRINE_SPOOKY,
SHRINE_ABANDONED,
SHRINE_CREEPY,
SHRINE_QUIET,
SHRINE_SECLUDED,
SHRINE_ORNATE,
SHRINE_GLIMMERING,
SHRINE_TAINTED,
SHRINE_OILY,
SHRINE_GLOWING,
SHRINE_MENDICANT,
SHRINE_SPARKLING,
SHRINE_TOWN,
SHRINE_SHIMMERING,
SHRINE_SOLAR,
SHRINE_MURPHYS,
NUM_SHRINETYPE
};
int trapid;
int trapdir;
BYTE *pObjCels[40];
@ -138,14 +178,20 @@ char shrinemax[] = {
MAX_LVLS, // Solar,
MAX_LVLS, // Murphy's
};
/**
* Specifies the game type for which each shrine may appear.
* SHRINETYPE_ANY - 0 - sp & mp
* SHRINETYPE_SINGLE - 1 - sp only
* SHRINETYPE_MULTI - 2 - mp only
* SHRINETYPE_ANY - sp & mp
* SHRINETYPE_SINGLE - sp only
* SHRINETYPE_MULTI - mp only
*/
enum shrine_gametype : uint8_t {
SHRINETYPE_ANY,
SHRINETYPE_SINGLE,
SHRINETYPE_MULTI,
};
BYTE shrineavail[] = {
shrine_gametype shrineavail[] = {
SHRINETYPE_ANY, // SHRINE_MYSTERIOUS
SHRINETYPE_ANY, // SHRINE_HIDDEN
SHRINETYPE_SINGLE, // SHRINE_GLOOMY
@ -1382,9 +1428,9 @@ void AddShrine(int i)
for (j = 0; j < shrines; j++) {
slist[j] = currlevel >= shrinemin[j] && currlevel <= shrinemax[j];
if (gbIsMultiplayer && shrineavail[j] == 1) {
if (gbIsMultiplayer && shrineavail[j] == SHRINETYPE_SINGLE) {
slist[j] = false;
} else if (!gbIsMultiplayer && shrineavail[j] == 2) {
} else if (!gbIsMultiplayer && shrineavail[j] == SHRINETYPE_MULTI) {
slist[j] = false;
}
}
@ -4222,13 +4268,13 @@ int FindValidShrine(int i)
}
if (done) {
if (gbIsMultiplayer) {
if (shrineavail[rv] == 1) {
if (shrineavail[rv] == SHRINETYPE_SINGLE) {
done = FALSE;
continue;
}
}
if (!gbIsMultiplayer) {
if (shrineavail[rv] == 2) {
if (shrineavail[rv] == SHRINETYPE_MULTI) {
done = FALSE;
continue;
}

12
Source/objects.h

@ -9,11 +9,7 @@
namespace devilution {
#ifdef __cplusplus
extern "C" {
#endif
typedef struct ObjectStruct {
struct ObjectStruct {
_object_id _otype;
Sint32 _ox;
Sint32 _oy;
@ -44,7 +40,7 @@ typedef struct ObjectStruct {
Sint32 _oVar6;
_speech_id _oVar7;
Sint32 _oVar8;
} ObjectStruct;
};
extern int objectactive[MAXOBJECTS];
extern int nobjects;
@ -88,8 +84,4 @@ void objects_454BA8();
void objects_rnd_454BEA();
bool objects_lv_24_454B04(int s);
#ifdef __cplusplus
}
#endif
}

4
Source/player.cpp

@ -491,8 +491,6 @@ void ClearPlrPVars(int pnum)
void SetPlrAnims(int pnum)
{
int gn;
if ((DWORD)pnum >= MAX_PLRS) {
app_fatal("SetPlrAnims: illegal player %d", pnum);
}
@ -524,7 +522,7 @@ void SetPlrAnims(int pnum)
}
plr[pnum]._pSFNum = PlrGFXAnimLens[pc][10];
gn = plr[pnum]._pgfxnum & 0xF;
anim_weapon_id gn = static_cast<anim_weapon_id>(plr[pnum]._pgfxnum & 0xF);
if (pc == PC_WARRIOR) {
if (gn == ANIM_ID_BOW) {
if (leveltype != DTYPE_TOWN) {

14
Source/player.h

@ -5,8 +5,22 @@
*/
#pragma once
#include <stdint.h>
namespace devilution {
enum anim_weapon_id : uint8_t {
ANIM_ID_UNARMED,
ANIM_ID_UNARMED_SHIELD,
ANIM_ID_SWORD,
ANIM_ID_SWORD_SHIELD,
ANIM_ID_BOW,
ANIM_ID_AXE,
ANIM_ID_MACE,
ANIM_ID_MACE_SHIELD,
ANIM_ID_STAFF,
};
typedef enum PLR_MODE {
PM_STAND,
PM_WALK, //Movement towards N, NW, or NE

16
Source/trigs.cpp

@ -836,14 +836,10 @@ void CheckTrigForce()
void CheckTriggers()
{
int x, y, i;
BOOL abort;
char abortflag;
if (plr[myplr]._pmode != PM_STAND)
return;
for (i = 0; i < numtrigs; i++) {
for (int i = 0; i < numtrigs; i++) {
if (plr[myplr]._px != trigs[i]._tx || plr[myplr]._py != trigs[i]._ty) {
continue;
}
@ -866,24 +862,26 @@ void CheckTriggers()
break;
case WM_DIABTOWNWARP:
if (gbIsMultiplayer) {
abort = FALSE;
int x, y;
bool abort = false;
diablo_message abortflag;
if (trigs[i]._tlvl == 5 && plr[myplr]._pLevel < 8) {
abort = TRUE;
abort = true;
x = plr[myplr]._px;
y = plr[myplr]._py + 1;
abortflag = EMSG_REQUIRES_LVL_8;
}
if (trigs[i]._tlvl == 9 && plr[myplr]._pLevel < 13) {
abort = TRUE;
abort = true;
x = plr[myplr]._px + 1;
y = plr[myplr]._py;
abortflag = EMSG_REQUIRES_LVL_13;
}
if (trigs[i]._tlvl == 13 && plr[myplr]._pLevel < 17) {
abort = TRUE;
abort = true;
x = plr[myplr]._px;
y = plr[myplr]._py + 1;
abortflag = EMSG_REQUIRES_LVL_17;

251
enums.h

@ -18,17 +18,6 @@ typedef enum monster_goal {
MGOAL_TALKING = 7,
} monster_goal;
typedef enum dungeon_type : int8_t {
DTYPE_TOWN = 0x0,
DTYPE_CATHEDRAL = 0x1,
DTYPE_CATACOMBS = 0x2,
DTYPE_CAVES = 0x3,
DTYPE_HELL = 0x4,
DTYPE_NEST = 0x5,
DTYPE_CRYPT = 0x6,
DTYPE_NONE = -1,
} dungeon_type;
typedef enum dflag {
BFLAG_MISSILE = 0x01,
BFLAG_VISIBLE = 0x02,
@ -40,12 +29,6 @@ typedef enum dflag {
BFLAG_EXPLORED = 0x80,
} dflag;
typedef enum clicktype {
CLICK_NONE = 0,
CLICK_LEFT = 1,
CLICK_RIGHT = 2,
} clicktype;
typedef enum placeflag {
PLACE_SCATTER = 1,
PLACE_SPECIAL = 2,
@ -66,64 +49,6 @@ typedef enum dungeon_message {
DMSG_DIABLO = 1 << 4,
} dungeon_message;
typedef enum diablo_message {
EMSG_NONE = 0,
EMSG_NO_AUTOMAP_IN_TOWN = 1,
EMSG_NO_MULTIPLAYER_IN_DEMO = 2,
EMSG_DIRECT_SOUND_FAILED = 3,
EMSG_NOT_IN_SHAREWARE = 4,
EMSG_NO_SPACE_TO_SAVE = 5,
EMSG_NO_PAUSE_IN_TOWN = 6,
EMSG_COPY_TO_HDD = 7,
EMSG_DESYNC = 8,
EMSG_NO_PAUSE_IN_MP = 9,
EMSG_LOADING = 10,
EMSG_SAVING = 11,
EMSG_SHRINE_MYSTERIOUS = 12,
EMSG_SHRINE_HIDDEN = 13,
EMSG_SHRINE_GLOOMY = 14,
EMSG_SHRINE_WEIRD = 15,
EMSG_SHRINE_MAGICAL = 16,
EMSG_SHRINE_STONE = 17,
EMSG_SHRINE_RELIGIOUS = 18,
EMSG_SHRINE_ENCHANTED = 19,
EMSG_SHRINE_THAUMATURGIC = 20,
EMSG_SHRINE_FASCINATING = 21,
EMSG_SHRINE_CRYPTIC = 22,
EMSG_SHRINE_UNUSED = 23,
EMSG_SHRINE_ELDRITCH = 24,
EMSG_SHRINE_EERIE = 25,
EMSG_SHRINE_DIVINE = 26,
EMSG_SHRINE_HOLY = 27,
EMSG_SHRINE_SACRED = 28,
EMSG_SHRINE_SPIRITUAL = 29,
EMSG_SHRINE_SPOOKY1 = 30,
EMSG_SHRINE_SPOOKY2 = 31,
EMSG_SHRINE_ABANDONED = 32,
EMSG_SHRINE_CREEPY = 33,
EMSG_SHRINE_QUIET = 34,
EMSG_SHRINE_SECLUDED = 35,
EMSG_SHRINE_ORNATE = 36,
EMSG_SHRINE_GLIMMERING = 37,
EMSG_SHRINE_TAINTED1 = 38,
EMSG_SHRINE_TAINTED2 = 39,
EMSG_REQUIRES_LVL_8 = 40,
EMSG_REQUIRES_LVL_13 = 41,
EMSG_REQUIRES_LVL_17 = 42,
EMSG_BONECHAMB = 43,
EMSG_SHRINE_OILY = 44,
EMSG_SHRINE_GLOWING = 45,
EMSG_SHRINE_MENDICANT = 46,
EMSG_SHRINE_SPARKLING = 47,
EMSG_SHRINE_TOWN = 48,
EMSG_SHRINE_SHIMMERING = 49,
EMSG_SHRINE_SOLAR1 = 50,
EMSG_SHRINE_SOLAR2 = 51,
EMSG_SHRINE_SOLAR3 = 52,
EMSG_SHRINE_SOLAR4 = 53,
EMSG_SHRINE_MURPHYS = 54,
} diablo_message;
typedef enum theme_id {
THEME_BARREL = 0x0,
THEME_SHRINE = 0x1,
@ -262,118 +187,6 @@ typedef enum game_info {
GAMEINFO_PLAYERS = 6,
} game_info;
typedef enum _cmd_id {
CMD_STAND,
CMD_WALKXY,
CMD_ACK_PLRINFO,
CMD_ADDSTR,
CMD_ADDMAG,
CMD_ADDDEX,
CMD_ADDVIT,
CMD_SBSPELL,
CMD_GETITEM,
CMD_AGETITEM,
CMD_PUTITEM,
CMD_RESPAWNITEM,
CMD_ATTACKXY,
CMD_RATTACKXY,
CMD_SPELLXY,
CMD_TSPELLXY,
CMD_OPOBJXY,
CMD_DISARMXY,
CMD_ATTACKID,
CMD_ATTACKPID,
CMD_RATTACKID,
CMD_RATTACKPID,
CMD_SPELLID,
CMD_SPELLPID,
CMD_TSPELLID,
CMD_TSPELLPID,
CMD_RESURRECT,
CMD_OPOBJT,
CMD_KNOCKBACK,
CMD_TALKXY,
CMD_NEWLVL,
CMD_WARP,
CMD_CHEAT_EXPERIENCE,
CMD_CHEAT_SPELL_LEVEL,
CMD_DEBUG,
CMD_SYNCDATA,
CMD_MONSTDEATH,
CMD_MONSTDAMAGE,
CMD_PLRDEAD,
CMD_REQUESTGITEM,
CMD_REQUESTAGITEM,
CMD_GOTOGETITEM,
CMD_GOTOAGETITEM,
CMD_OPENDOOR,
CMD_CLOSEDOOR,
CMD_OPERATEOBJ,
CMD_PLROPOBJ,
CMD_BREAKOBJ,
CMD_CHANGEPLRITEMS,
CMD_DELPLRITEMS,
CMD_PLRDAMAGE,
CMD_PLRLEVEL,
CMD_DROPITEM,
CMD_PLAYER_JOINLEVEL,
CMD_SEND_PLRINFO,
CMD_SATTACKXY,
CMD_ACTIVATEPORTAL,
CMD_DEACTIVATEPORTAL,
CMD_DLEVEL_0,
CMD_DLEVEL_1,
CMD_DLEVEL_2,
CMD_DLEVEL_3,
CMD_DLEVEL_4,
CMD_DLEVEL_5,
CMD_DLEVEL_6,
CMD_DLEVEL_7,
CMD_DLEVEL_8,
CMD_DLEVEL_9,
CMD_DLEVEL_10,
CMD_DLEVEL_11,
CMD_DLEVEL_12,
CMD_DLEVEL_13,
CMD_DLEVEL_14,
CMD_DLEVEL_15,
CMD_DLEVEL_16,
CMD_DLEVEL_17,
CMD_DLEVEL_18,
CMD_DLEVEL_19,
CMD_DLEVEL_20,
CMD_DLEVEL_21,
CMD_DLEVEL_22,
CMD_DLEVEL_23,
CMD_DLEVEL_24,
CMD_DLEVEL_JUNK,
CMD_DLEVEL_END,
CMD_HEALOTHER,
CMD_STRING,
CMD_SETSTR,
CMD_SETMAG,
CMD_SETDEX,
CMD_SETVIT,
CMD_RETOWN,
CMD_SPELLXYD,
CMD_ITEMEXTRA,
CMD_SYNCPUTITEM,
CMD_KILLGOLEM,
CMD_SYNCQUEST,
CMD_ENDSHIELD,
CMD_AWAKEGOLEM,
CMD_NOVA,
CMD_SETSHIELD,
CMD_REMSHIELD,
CMD_REFLECT,
CMD_NAKRUL,
CMD_OPENHIVE,
CMD_OPENCRYPT,
FAKE_CMD_SETID,
FAKE_CMD_DROPID,
NUM_CMDS,
} _cmd_id;
typedef enum _music_id {
TMUSIC_TOWN,
TMUSIC_L1,
@ -718,68 +531,6 @@ typedef enum player_graphic {
PFILE_NONDEATH = 0x17F
} player_graphic;
typedef enum anim_weapon_id {
ANIM_ID_UNARMED = 0x00,
ANIM_ID_UNARMED_SHIELD = 0x01,
ANIM_ID_SWORD = 0x02,
ANIM_ID_SWORD_SHIELD = 0x03,
ANIM_ID_BOW = 0x04,
ANIM_ID_AXE = 0x05,
ANIM_ID_MACE = 0x06,
ANIM_ID_MACE_SHIELD = 0x07,
ANIM_ID_STAFF = 0x08
} anim_weapon_id;
typedef enum anim_armor_id {
ANIM_ID_LIGHT_ARMOR = 0x00,
ANIM_ID_MEDIUM_ARMOR = 0x10,
ANIM_ID_HEAVY_ARMOR = 0x20
} anim_armor_id;
typedef enum shrine_gametype {
SHRINETYPE_ANY = 0,
SHRINETYPE_SINGLE = 1,
SHRINETYPE_MULTI = 2,
} shrine_gametype;
typedef enum shrine_type {
SHRINE_MYSTERIOUS = 0,
SHRINE_HIDDEN = 1,
SHRINE_GLOOMY = 2,
SHRINE_WEIRD = 3,
SHRINE_MAGICAL = 4,
SHRINE_STONE = 5,
SHRINE_RELIGIOUS = 6,
SHRINE_ENCHANTED = 7,
SHRINE_THAUMATURGIC = 8,
SHRINE_FASCINATING = 9,
SHRINE_CRYPTIC = 10,
SHRINE_MAGICAL2 = 11,
SHRINE_ELDRITCH = 12,
SHRINE_EERIE = 13,
SHRINE_DIVINE = 14,
SHRINE_HOLY = 15,
SHRINE_SACRED = 16,
SHRINE_SPIRITUAL = 17,
SHRINE_SPOOKY = 18,
SHRINE_ABANDONED = 19,
SHRINE_CREEPY = 20,
SHRINE_QUIET = 21,
SHRINE_SECLUDED = 22,
SHRINE_ORNATE = 23,
SHRINE_GLIMMERING = 24,
SHRINE_TAINTED = 25,
SHRINE_OILY = 26,
SHRINE_GLOWING = 27,
SHRINE_MENDICANT = 28,
SHRINE_SPARKLING = 29,
SHRINE_TOWN = 30,
SHRINE_SHIMMERING = 31,
SHRINE_SOLAR = 32,
SHRINE_MURPHYS = 33,
NUM_SHRINETYPE
} shrine_type;
typedef enum dlrg_flag {
DLRG_HDOOR = 0x01,
DLRG_VDOOR = 0x02,
@ -793,4 +544,4 @@ typedef enum conn_type {
SELCONN_LOOPBACK,
} conn_type;
}
} // namespace devilution

Loading…
Cancel
Save