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 gbBard;
bool gbBarbarian; bool gbBarbarian;
int sgnTimeoutCurs; int sgnTimeoutCurs;
char sgbMouseDown; clicktype sgbMouseDown;
int color_cycle_timer; int color_cycle_timer;
int gnTickRate; int gnTickRate;
WORD gnTickDelay = 50; WORD gnTickDelay = 50;

17
Source/diablo.h

@ -5,16 +5,21 @@
*/ */
#pragma once #pragma once
#include <stdint.h>
#include "pack.h" #include "pack.h"
#include "gendung.h"
#ifdef _DEBUG #ifdef _DEBUG
#include "monstdat.h" #include "monstdat.h"
#endif #endif
namespace devilution { namespace devilution {
#ifdef __cplusplus enum clicktype : int8_t {
extern "C" { CLICK_NONE,
#endif CLICK_LEFT,
CLICK_RIGHT,
};
#ifndef DEFAULT_WIDTH #ifndef DEFAULT_WIDTH
#define DEFAULT_WIDTH 640 #define DEFAULT_WIDTH 640
@ -45,7 +50,7 @@ extern bool gbCowQuest;
extern bool gbNestArt; extern bool gbNestArt;
extern bool gbBard; extern bool gbBard;
extern bool gbBarbarian; extern bool gbBarbarian;
extern char sgbMouseDown; extern clicktype sgbMouseDown;
extern int gnTickRate; extern int gnTickRate;
extern WORD gnTickDelay; extern WORD gnTickDelay;
@ -82,8 +87,4 @@ extern int debug_mode_key_j;
extern bool gbFriendlyMode; extern bool gbFriendlyMode;
extern bool gbFriendlyFire; 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) {
if (pkt->dwSpaceLeft != MAX_PLRS) 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; dwMilliseconds = 1000 * *(DWORD *)&pkt->data[4] / gdwDeltaBytesSec;
if (dwMilliseconds >= 1) if (dwMilliseconds >= 1)

12
Source/error.cpp

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

70
Source/error.h

@ -5,23 +5,75 @@
*/ */
#pragma once #pragma once
#include <stdint.h>
#include "engine.h" #include "engine.h"
namespace devilution { namespace devilution {
#ifdef __cplusplus enum diablo_message : uint8_t {
extern "C" { EMSG_NONE,
#endif 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 DWORD msgdelay;
extern char msgflag; extern diablo_message msgflag;
void InitDiabloMsg(char e); void InitDiabloMsg(diablo_message e);
void ClrDiabloMsg(); void ClrDiabloMsg();
void DrawDiabloMsg(CelOutputBuffer out); void DrawDiabloMsg(CelOutputBuffer out);
#ifdef __cplusplus
}
#endif
} }

35
Source/gendung.h

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

10
Source/items.cpp

@ -3,12 +3,22 @@
* *
* Implementation of item functionality. * Implementation of item functionality.
*/ */
#include <stdint.h>
#include <algorithm> #include <algorithm>
#include "all.h" #include "all.h"
#include "options.h" #include "options.h"
namespace devilution { 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]; int itemactive[MAXITEMS];
BOOL uitemflag; BOOL uitemflag;
int itemavail[MAXITEMS]; int itemavail[MAXITEMS];

32
Source/msg.cpp

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

317
Source/msg.h

@ -5,85 +5,196 @@
*/ */
#pragma once #pragma once
#include <stdint.h>
namespace devilution { namespace devilution {
#ifdef __cplusplus enum _cmd_id : uint8_t {
extern "C" { CMD_STAND,
#endif 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) #pragma pack(push, 1)
typedef struct TCmd { struct TCmd {
Uint8 bCmd; _cmd_id bCmd;
} TCmd; };
typedef struct TCmdLoc { struct TCmdLoc {
Uint8 bCmd; _cmd_id bCmd;
Uint8 x; Uint8 x;
Uint8 y; Uint8 y;
} TCmdLoc; };
typedef struct TCmdLocParam1 { struct TCmdLocParam1 {
Uint8 bCmd; _cmd_id bCmd;
Uint8 x; Uint8 x;
Uint8 y; Uint8 y;
Uint16 wParam1; Uint16 wParam1;
} TCmdLocParam1; };
typedef struct TCmdLocParam2 { struct TCmdLocParam2 {
Uint8 bCmd; _cmd_id bCmd;
Uint8 x; Uint8 x;
Uint8 y; Uint8 y;
Uint16 wParam1; Uint16 wParam1;
Uint16 wParam2; Uint16 wParam2;
} TCmdLocParam2; };
typedef struct TCmdLocParam3 { struct TCmdLocParam3 {
Uint8 bCmd; _cmd_id bCmd;
Uint8 x; Uint8 x;
Uint8 y; Uint8 y;
Uint16 wParam1; Uint16 wParam1;
Uint16 wParam2; Uint16 wParam2;
Uint16 wParam3; Uint16 wParam3;
} TCmdLocParam3; };
typedef struct TCmdParam1 { struct TCmdParam1 {
Uint8 bCmd; _cmd_id bCmd;
Uint16 wParam1; Uint16 wParam1;
} TCmdParam1; };
typedef struct TCmdParam2 { struct TCmdParam2 {
Uint8 bCmd; _cmd_id bCmd;
Uint16 wParam1; Uint16 wParam1;
Uint16 wParam2; Uint16 wParam2;
} TCmdParam2; };
typedef struct TCmdParam3 { struct TCmdParam3 {
Uint8 bCmd; _cmd_id bCmd;
Uint16 wParam1; Uint16 wParam1;
Uint16 wParam2; Uint16 wParam2;
Uint16 wParam3; Uint16 wParam3;
} TCmdParam3; };
typedef struct TCmdGolem { struct TCmdGolem {
Uint8 bCmd; _cmd_id bCmd;
Uint8 _mx; Uint8 _mx;
Uint8 _my; Uint8 _my;
Uint8 _mdir; Uint8 _mdir;
Sint8 _menemy; Sint8 _menemy;
Sint32 _mhitpoints; Sint32 _mhitpoints;
Uint8 _currlevel; Uint8 _currlevel;
} TCmdGolem; };
typedef struct TCmdQuest { struct TCmdQuest {
Uint8 bCmd; _cmd_id bCmd;
Uint8 q; Uint8 q;
Uint8 qstate; Uint8 qstate;
Uint8 qlog; Uint8 qlog;
Uint8 qvar1; Uint8 qvar1;
} TCmdQuest; };
typedef struct TCmdGItem { struct TCmdGItem {
Uint8 bCmd; _cmd_id bCmd;
Uint8 bMaster; Uint8 bMaster;
Uint8 bPnum; Uint8 bPnum;
Uint8 bCursitem; Uint8 bCursitem;
@ -107,10 +218,10 @@ typedef struct TCmdGItem {
Uint8 bMinMag; Uint8 bMinMag;
Uint8 bMinDex; Uint8 bMinDex;
Uint8 bAC; Uint8 bAC;
} TCmdGItem; };
typedef struct TCmdPItem { struct TCmdPItem {
Uint8 bCmd; _cmd_id bCmd;
Uint8 x; Uint8 x;
Uint8 y; Uint8 y;
Uint16 wIndx; Uint16 wIndx;
@ -129,59 +240,59 @@ typedef struct TCmdPItem {
Uint8 bMinMag; Uint8 bMinMag;
Uint8 bMinDex; Uint8 bMinDex;
Uint8 bAC; Uint8 bAC;
} TCmdPItem; };
typedef struct TCmdChItem { struct TCmdChItem {
Uint8 bCmd; _cmd_id bCmd;
Uint8 bLoc; Uint8 bLoc;
Uint16 wIndx; Uint16 wIndx;
Uint16 wCI; Uint16 wCI;
Sint32 dwSeed; Sint32 dwSeed;
Uint8 bId; Uint8 bId;
Uint32 dwBuff; Uint32 dwBuff;
} TCmdChItem; };
typedef struct TCmdDelItem { struct TCmdDelItem {
Uint8 bCmd; _cmd_id bCmd;
Uint8 bLoc; Uint8 bLoc;
} TCmdDelItem; };
typedef struct TCmdDamage { struct TCmdDamage {
Uint8 bCmd; _cmd_id bCmd;
Uint8 bPlr; Uint8 bPlr;
Uint32 dwDam; Uint32 dwDam;
} TCmdDamage; };
typedef struct TCmdMonDamage { struct TCmdMonDamage {
Uint8 bCmd; _cmd_id bCmd;
Uint16 wMon; Uint16 wMon;
Uint32 dwDam; Uint32 dwDam;
} TCmdMonDamage; };
typedef struct TCmdPlrInfoHdr { struct TCmdPlrInfoHdr {
Uint8 bCmd; _cmd_id bCmd;
Uint16 wOffset; Uint16 wOffset;
Uint16 wBytes; Uint16 wBytes;
} TCmdPlrInfoHdr; };
typedef struct TCmdString { struct TCmdString {
Uint8 bCmd; _cmd_id bCmd;
char str[MAX_SEND_STR_LEN]; char str[MAX_SEND_STR_LEN];
} TCmdString; };
typedef struct TFakeCmdPlr { struct TFakeCmdPlr {
Uint8 bCmd; _cmd_id bCmd;
Uint8 bPlr; Uint8 bPlr;
} TFakeCmdPlr; };
typedef struct TFakeDropPlr { struct TFakeDropPlr {
Uint8 bCmd; _cmd_id bCmd;
Uint8 bPlr; Uint8 bPlr;
Uint32 dwReason; Uint32 dwReason;
} TFakeDropPlr; };
typedef struct TSyncHeader { struct TSyncHeader {
Uint8 bCmd; _cmd_id bCmd;
Uint8 bLevel; Uint8 bLevel;
Uint16 wLen; Uint16 wLen;
Uint8 bObjId; Uint8 bObjId;
@ -210,17 +321,17 @@ typedef struct TSyncHeader {
Uint8 bMinMag; Uint8 bMinMag;
Uint8 bMinDex; Uint8 bMinDex;
Uint8 bAC; Uint8 bAC;
} TSyncHeader; };
typedef struct TSyncMonster { struct TSyncMonster {
Uint8 _mndx; Uint8 _mndx;
Uint8 _mx; Uint8 _mx;
Uint8 _my; Uint8 _my;
Uint8 _menemy; Uint8 _menemy;
Uint8 _mdelta; Uint8 _mdelta;
} TSyncMonster; };
typedef struct TPktHdr { struct TPktHdr {
Uint8 px; Uint8 px;
Uint8 py; Uint8 py;
Uint8 targx; Uint8 targx;
@ -232,68 +343,68 @@ typedef struct TPktHdr {
Uint8 bdex; Uint8 bdex;
Uint16 wCheck; Uint16 wCheck;
Uint16 wLen; Uint16 wLen;
} TPktHdr; };
typedef struct TPkt { struct TPkt {
TPktHdr hdr; TPktHdr hdr;
Uint8 body[493]; Uint8 body[493];
} TPkt; };
typedef struct DMonsterStr { struct DMonsterStr {
Uint8 _mx; Uint8 _mx;
Uint8 _my; Uint8 _my;
Uint8 _mdir; Uint8 _mdir;
Uint8 _menemy; Uint8 _menemy;
Uint8 _mactive; Uint8 _mactive;
Sint32 _mhitpoints; Sint32 _mhitpoints;
} DMonsterStr; };
typedef struct DObjectStr { struct DObjectStr {
Uint8 bCmd; _cmd_id bCmd;
} DObjectStr; };
typedef struct DLevel { struct DLevel {
TCmdPItem item[MAXITEMS]; TCmdPItem item[MAXITEMS];
DObjectStr object[MAXOBJECTS]; DObjectStr object[MAXOBJECTS];
DMonsterStr monster[MAXMONSTERS]; DMonsterStr monster[MAXMONSTERS];
} DLevel; };
typedef struct LocalLevel { struct LocalLevel {
Uint8 automapsv[DMAXX][DMAXY]; Uint8 automapsv[DMAXX][DMAXY];
} LocalLevel; };
typedef struct DPortal { struct DPortal {
Uint8 x; Uint8 x;
Uint8 y; Uint8 y;
Uint8 level; Uint8 level;
Uint8 ltype; Uint8 ltype;
Uint8 setlvl; Uint8 setlvl;
} DPortal; };
typedef struct MultiQuests { struct MultiQuests {
Uint8 qstate; Uint8 qstate;
Uint8 qlog; Uint8 qlog;
Uint8 qvar1; Uint8 qvar1;
} MultiQuests; };
typedef struct DJunk { struct DJunk {
DPortal portal[MAXPORTAL]; DPortal portal[MAXPORTAL];
MultiQuests quests[MAXMULTIQUESTS]; MultiQuests quests[MAXMULTIQUESTS];
} DJunk; };
#pragma pack(pop) #pragma pack(pop)
#pragma pack(push, 1) #pragma pack(push, 1)
typedef struct TMegaPkt { struct TMegaPkt {
struct TMegaPkt *pNext; struct TMegaPkt *pNext;
Uint32 dwSpaceLeft; Uint32 dwSpaceLeft;
Uint8 data[32000]; Uint8 data[32000];
} TMegaPkt; };
#pragma pack(pop) #pragma pack(pop)
typedef struct TBuffer { struct TBuffer {
Uint32 dwNextWriteOffset; Uint32 dwNextWriteOffset;
Uint8 bData[4096]; Uint8 bData[4096];
} TBuffer; };
extern BOOL deltaload; extern BOOL deltaload;
extern BYTE gbBufferMsgs; extern BYTE gbBufferMsgs;
@ -312,18 +423,18 @@ BOOL delta_quest_inited(int i);
void DeltaAddItem(int ii); void DeltaAddItem(int ii);
void DeltaSaveLevel(); void DeltaSaveLevel();
void DeltaLoadLevel(); 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 NetSendCmdGolem(BYTE mx, BYTE my, BYTE dir, BYTE menemy, int hp, BYTE cl);
void NetSendCmdLoc(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y); void NetSendCmdLoc(BOOL bHiPri, _cmd_id bCmd, BYTE x, BYTE y);
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);
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);
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);
void NetSendCmdParam1(BOOL bHiPri, BYTE bCmd, WORD wParam1); void NetSendCmdParam1(BOOL bHiPri, _cmd_id bCmd, WORD wParam1);
void NetSendCmdParam2(BOOL bHiPri, BYTE bCmd, WORD wParam1, WORD wParam2); void NetSendCmdParam2(BOOL bHiPri, _cmd_id bCmd, WORD wParam1, WORD wParam2);
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);
void NetSendCmdQuest(BOOL bHiPri, BYTE q); void NetSendCmdQuest(BOOL bHiPri, BYTE q);
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);
void NetSendCmdPItem(BOOL bHiPri, BYTE bCmd, BYTE x, BYTE y); void NetSendCmdPItem(BOOL bHiPri, _cmd_id bCmd, BYTE x, BYTE y);
void NetSendCmdChItem(BOOL bHiPri, BYTE bLoc); void NetSendCmdChItem(BOOL bHiPri, BYTE bLoc);
void NetSendCmdDelItem(BOOL bHiPri, BYTE bLoc); void NetSendCmdDelItem(BOOL bHiPri, BYTE bLoc);
void NetSendCmdDItem(BOOL bHiPri, int ii); void NetSendCmdDItem(BOOL bHiPri, int ii);
@ -333,8 +444,4 @@ void NetSendCmdString(int pmask, const char *pszStr);
void delta_close_portal(int pnum); void delta_close_portal(int pnum);
DWORD ParseCmd(int pnum, TCmd *pCmd); 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"); 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; DWORD dwOffset, dwBody, dwMsg;
TPkt pkt; TPkt pkt;

2
Source/multi.h

@ -48,7 +48,7 @@ void multi_player_left(int pnum, int reason);
void multi_net_ping(); void multi_net_ping();
int multi_handle_delta(); int multi_handle_delta();
void multi_process_network_packets(); 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(); void NetClose();
BOOL NetInit(BOOL bSinglePlayer, BOOL *pfExitProgram); BOOL NetInit(BOOL bSinglePlayer, BOOL *pfExitProgram);
BOOL multi_init_single(GameData *gameData); BOOL multi_init_single(GameData *gameData);

62
Source/objects.cpp

@ -3,11 +3,51 @@
* *
* Implementation of object functionality, interaction, spawning, loading, etc. * Implementation of object functionality, interaction, spawning, loading, etc.
*/ */
#include <stdint.h>
#include "all.h" #include "all.h"
#include "options.h" #include "options.h"
namespace devilution { 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 trapid;
int trapdir; int trapdir;
BYTE *pObjCels[40]; BYTE *pObjCels[40];
@ -138,14 +178,20 @@ char shrinemax[] = {
MAX_LVLS, // Solar, MAX_LVLS, // Solar,
MAX_LVLS, // Murphy's MAX_LVLS, // Murphy's
}; };
/** /**
* Specifies the game type for which each shrine may appear. * Specifies the game type for which each shrine may appear.
* SHRINETYPE_ANY - 0 - sp & mp * SHRINETYPE_ANY - sp & mp
* SHRINETYPE_SINGLE - 1 - sp only * SHRINETYPE_SINGLE - sp only
* SHRINETYPE_MULTI - 2 - mp 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_MYSTERIOUS
SHRINETYPE_ANY, // SHRINE_HIDDEN SHRINETYPE_ANY, // SHRINE_HIDDEN
SHRINETYPE_SINGLE, // SHRINE_GLOOMY SHRINETYPE_SINGLE, // SHRINE_GLOOMY
@ -1382,9 +1428,9 @@ void AddShrine(int i)
for (j = 0; j < shrines; j++) { for (j = 0; j < shrines; j++) {
slist[j] = currlevel >= shrinemin[j] && currlevel <= shrinemax[j]; slist[j] = currlevel >= shrinemin[j] && currlevel <= shrinemax[j];
if (gbIsMultiplayer && shrineavail[j] == 1) { if (gbIsMultiplayer && shrineavail[j] == SHRINETYPE_SINGLE) {
slist[j] = false; slist[j] = false;
} else if (!gbIsMultiplayer && shrineavail[j] == 2) { } else if (!gbIsMultiplayer && shrineavail[j] == SHRINETYPE_MULTI) {
slist[j] = false; slist[j] = false;
} }
} }
@ -4222,13 +4268,13 @@ int FindValidShrine(int i)
} }
if (done) { if (done) {
if (gbIsMultiplayer) { if (gbIsMultiplayer) {
if (shrineavail[rv] == 1) { if (shrineavail[rv] == SHRINETYPE_SINGLE) {
done = FALSE; done = FALSE;
continue; continue;
} }
} }
if (!gbIsMultiplayer) { if (!gbIsMultiplayer) {
if (shrineavail[rv] == 2) { if (shrineavail[rv] == SHRINETYPE_MULTI) {
done = FALSE; done = FALSE;
continue; continue;
} }

12
Source/objects.h

@ -9,11 +9,7 @@
namespace devilution { namespace devilution {
#ifdef __cplusplus struct ObjectStruct {
extern "C" {
#endif
typedef struct ObjectStruct {
_object_id _otype; _object_id _otype;
Sint32 _ox; Sint32 _ox;
Sint32 _oy; Sint32 _oy;
@ -44,7 +40,7 @@ typedef struct ObjectStruct {
Sint32 _oVar6; Sint32 _oVar6;
_speech_id _oVar7; _speech_id _oVar7;
Sint32 _oVar8; Sint32 _oVar8;
} ObjectStruct; };
extern int objectactive[MAXOBJECTS]; extern int objectactive[MAXOBJECTS];
extern int nobjects; extern int nobjects;
@ -88,8 +84,4 @@ void objects_454BA8();
void objects_rnd_454BEA(); void objects_rnd_454BEA();
bool objects_lv_24_454B04(int s); 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) void SetPlrAnims(int pnum)
{ {
int gn;
if ((DWORD)pnum >= MAX_PLRS) { if ((DWORD)pnum >= MAX_PLRS) {
app_fatal("SetPlrAnims: illegal player %d", pnum); app_fatal("SetPlrAnims: illegal player %d", pnum);
} }
@ -524,7 +522,7 @@ void SetPlrAnims(int pnum)
} }
plr[pnum]._pSFNum = PlrGFXAnimLens[pc][10]; 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 (pc == PC_WARRIOR) {
if (gn == ANIM_ID_BOW) { if (gn == ANIM_ID_BOW) {
if (leveltype != DTYPE_TOWN) { if (leveltype != DTYPE_TOWN) {

14
Source/player.h

@ -5,8 +5,22 @@
*/ */
#pragma once #pragma once
#include <stdint.h>
namespace devilution { 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 { typedef enum PLR_MODE {
PM_STAND, PM_STAND,
PM_WALK, //Movement towards N, NW, or NE PM_WALK, //Movement towards N, NW, or NE

16
Source/trigs.cpp

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

251
enums.h

@ -18,17 +18,6 @@ typedef enum monster_goal {
MGOAL_TALKING = 7, MGOAL_TALKING = 7,
} monster_goal; } 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 { typedef enum dflag {
BFLAG_MISSILE = 0x01, BFLAG_MISSILE = 0x01,
BFLAG_VISIBLE = 0x02, BFLAG_VISIBLE = 0x02,
@ -40,12 +29,6 @@ typedef enum dflag {
BFLAG_EXPLORED = 0x80, BFLAG_EXPLORED = 0x80,
} dflag; } dflag;
typedef enum clicktype {
CLICK_NONE = 0,
CLICK_LEFT = 1,
CLICK_RIGHT = 2,
} clicktype;
typedef enum placeflag { typedef enum placeflag {
PLACE_SCATTER = 1, PLACE_SCATTER = 1,
PLACE_SPECIAL = 2, PLACE_SPECIAL = 2,
@ -66,64 +49,6 @@ typedef enum dungeon_message {
DMSG_DIABLO = 1 << 4, DMSG_DIABLO = 1 << 4,
} dungeon_message; } 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 { typedef enum theme_id {
THEME_BARREL = 0x0, THEME_BARREL = 0x0,
THEME_SHRINE = 0x1, THEME_SHRINE = 0x1,
@ -262,118 +187,6 @@ typedef enum game_info {
GAMEINFO_PLAYERS = 6, GAMEINFO_PLAYERS = 6,
} game_info; } 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 { typedef enum _music_id {
TMUSIC_TOWN, TMUSIC_TOWN,
TMUSIC_L1, TMUSIC_L1,
@ -718,68 +531,6 @@ typedef enum player_graphic {
PFILE_NONDEATH = 0x17F PFILE_NONDEATH = 0x17F
} player_graphic; } 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 { typedef enum dlrg_flag {
DLRG_HDOOR = 0x01, DLRG_HDOOR = 0x01,
DLRG_VDOOR = 0x02, DLRG_VDOOR = 0x02,
@ -793,4 +544,4 @@ typedef enum conn_type {
SELCONN_LOOPBACK, SELCONN_LOOPBACK,
} conn_type; } conn_type;
} } // namespace devilution

Loading…
Cancel
Save