Files
Justin Marshall 101266ab72 Initial commit.
2026-04-27 10:35:40 -07:00

261 lines
5.5 KiB
C++

//******************************************************************
// msg.h
//******************************************************************
enum {
CMD_STAND = 0,
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_ENDREFLECT,
CMD_OPEN_NAKRUL,
CMD_OPEN_NEST,
CMD_OPEN_CRYPT,
// thse are commands which are never sent
FAKE_CMD_SETID,
FAKE_CMD_DROPID,
NUM_CMDS
};
//******************************************************************
// net commands
//******************************************************************
#pragma pack(push,1)
typedef struct TCmd {
BYTE bCmd;
} TCmd;
void NetSendCmd(BOOL bHiPri,BYTE bCmd);
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 NetSendCmdQuest(BOOL bHiPri,BYTE q);
void NetSendCmdGItem(BOOL bHiPri,BYTE bCmd,BYTE mast,BYTE pnum,BYTE bCursitem);
void NetSendCmdPItem(BOOL bHiPri,BYTE bCmd,BYTE x,BYTE y);
void NetSendCmdDItem(BOOL bHiPri,int ii);
void NetSendCmdChItem(BOOL bHiPri,BYTE bLoc);
void NetSendCmdDelItem(BOOL bHiPri,BYTE bLoc);
void NetSendCmdDamage(BOOL bHiPri,BYTE bPlr,DWORD dwDam);
void NetSendCmdMonstDamage(BOOL bHiPri,WORD bMonst,DWORD dwDam);
typedef struct TCmdPlrInfoHdr {
BYTE bCmd;
WORD wOffset;
WORD wBytes;
} TCmdPlrInfoHdr;
// better not be bigger than this, the net will choke
#define MAX_SEND_STR_LEN 80
#define SEND_ALL_MASK 0xffffffff
void NetSendString(DWORD dwSendMask,const char * pszStr);
#pragma pack(pop)
//******************************************************************
// net syncing
//******************************************************************
#pragma pack(push,1)
typedef struct TSyncHeader {
BYTE bCmd;
BYTE bLevel;
WORD wLen;
BYTE bObjId;
BYTE bObjCmd;
BYTE bItemI;
BYTE bItemX;
BYTE bItemY;
WORD wItemIndx;
WORD wItemCI;
int dwItemSeed;
BYTE bItemId;
BYTE bItemDur;
BYTE bItemMDur;
BYTE bItemCh;
BYTE bItemMCh;
WORD wItemVal;
DWORD dwItemBuff;
BYTE bPInvLoc;
WORD wPInvIndx;
WORD wPInvCI;
int dwPInvSeed;
// drb.patch1.start.02/10/97
BYTE bPInvId;
// drb.patch1.end.02/10/97
WORD wPLToHit;
WORD wMaxDam;
BYTE bMinStr;
BYTE bMinMag;
BYTE bMinDex;
BYTE bAC;
} TSyncHeader;
typedef struct TSyncMonster {
BYTE _mndx;
BYTE _mx;
BYTE _my;
BYTE _menemy;
BYTE _mdelta;
} TSyncMonster;
#pragma pack(pop)
//******************************************************************
// msg sizes
//******************************************************************
#define MIN_MSG_SIZE 128
#define MAX_MSG_SIZE 512
extern DWORD gdwNormalMsgSize; // MIN_MSG_SIZE..MAX_MSG_SIZE
extern DWORD gdwLargestMsgSize; // MIN_MSG_SIZE..MAX_MSG_SIZE
//******************************************************************
// net packets (which hold net commands inside them)
//******************************************************************
#pragma pack(push,1)
typedef struct TPktHdr {
BYTE px;
BYTE py;
BYTE targx;
BYTE targy;
DWORD php;
DWORD pmhp;
BYTE bstr;
BYTE bmag;
BYTE bdex;
WORD wCheck; // @@ debug -- delete this
WORD wLen; // @@ debug -- delete this
} TPktHdr;
typedef struct TPkt {
TPktHdr hdr;
BYTE body[MAX_MSG_SIZE - sizeof TPktHdr];
} TPkt;
#pragma pack(pop)
//******************************************************************
//******************************************************************
extern BOOL deltaload;
void DeltaSaveLevel();
void DeltaLoadLevel();
void DeltaSendAllLevels(int pnum);
DWORD ParseCmd(int pnum, const TCmd * pCmd);
void DeltaAddItem(int ii);
// PATCH1.JMM
#if _DEBUG
void __cdecl DROPLOG(const char * pszFmt,...);
void VerifyItemActiveList( void );
#else
#define VerifyItemActiveList( )
#define DROPLOG //
#endif
// ENDPATCH1