| |
| |
| |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| typedef struct RECT32 {
|
| int x;
|
| int y;
|
| int w;
|
| int h;
|
| } RECT32;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct PLStruct {
|
| const char *PLName;
|
| int PLPower;
|
| int PLParam1;
|
| int PLParam2;
|
| char PLMinLvl;
|
| int PLIType;
|
| BYTE PLGOE;
|
| BOOL PLDouble;
|
| BOOL PLOk;
|
| int PLMinVal;
|
| int PLMaxVal;
|
| int PLMultVal;
|
| } PLStruct;
|
|
|
| typedef struct UItemStruct {
|
| const char *UIName;
|
| char UIItemId;
|
| char UIMinLvl;
|
| char UINumPL;
|
| int UIValue;
|
| char UIPower1;
|
| int UIParam1;
|
| int UIParam2;
|
| char UIPower2;
|
| int UIParam3;
|
| int UIParam4;
|
| char UIPower3;
|
| int UIParam5;
|
| int UIParam6;
|
| char UIPower4;
|
| int UIParam7;
|
| int UIParam8;
|
| char UIPower5;
|
| int UIParam9;
|
| int UIParam10;
|
| char UIPower6;
|
| int UIParam11;
|
| int UIParam12;
|
| } UItemStruct;
|
|
|
| typedef struct ItemDataStruct {
|
| int iRnd;
|
| char iClass;
|
| char iLoc;
|
| int iCurs;
|
| char itype;
|
| char iItemId;
|
| const char *iName;
|
| const char *iSName;
|
| char iMinMLvl;
|
| int iDurability;
|
| int iMinDam;
|
| int iMaxDam;
|
| int iMinAC;
|
| int iMaxAC;
|
| char iMinStr;
|
| char iMinMag;
|
| char iMinDex;
|
|
|
| int iFlags;
|
|
|
| int iMiscId;
|
|
|
| int iSpell;
|
| BOOL iUsable;
|
| int iValue;
|
| int iMaxValue;
|
| } ItemDataStruct;
|
|
|
| typedef struct ItemGetRecordStruct {
|
| int nSeed;
|
| unsigned short wCI;
|
| int nIndex;
|
| unsigned int dwTimestamp;
|
| } ItemGetRecordStruct;
|
|
|
| typedef struct ItemStruct {
|
| int _iSeed;
|
| WORD _iCreateInfo;
|
| int _itype;
|
| int _ix;
|
| int _iy;
|
| BOOL _iAnimFlag;
|
| unsigned char *_iAnimData;
|
| int _iAnimLen;
|
| int _iAnimFrame;
|
| int _iAnimWidth;
|
| int _iAnimWidth2;
|
| BOOL _iDelFlag;
|
| char _iSelFlag;
|
| BOOL _iPostDraw;
|
| BOOL _iIdentified;
|
| char _iMagical;
|
| char _iName[64];
|
| char _iIName[64];
|
| char _iLoc;
|
|
|
| char _iClass;
|
| int _iCurs;
|
| int _ivalue;
|
| int _iIvalue;
|
| int _iMinDam;
|
| int _iMaxDam;
|
| int _iAC;
|
|
|
| int _iFlags;
|
|
|
| int _iMiscId;
|
|
|
| int _iSpell;
|
| int _iCharges;
|
| int _iMaxCharges;
|
| int _iDurability;
|
| int _iMaxDur;
|
| int _iPLDam;
|
| int _iPLToHit;
|
| int _iPLAC;
|
| int _iPLStr;
|
| int _iPLMag;
|
| int _iPLDex;
|
| int _iPLVit;
|
| int _iPLFR;
|
| int _iPLLR;
|
| int _iPLMR;
|
| int _iPLMana;
|
| int _iPLHP;
|
| int _iPLDamMod;
|
| int _iPLGetHit;
|
| int _iPLLight;
|
| char _iSplLvlAdd;
|
| char _iRequest;
|
| int _iUid;
|
| int _iFMinDam;
|
| int _iFMaxDam;
|
| int _iLMinDam;
|
| int _iLMaxDam;
|
| int _iPLEnAc;
|
| char _iPrePower;
|
| char _iSufPower;
|
| int _iVAdd1;
|
| int _iVMult1;
|
| int _iVAdd2;
|
| int _iVMult2;
|
| char _iMinStr;
|
| unsigned char _iMinMag;
|
| char _iMinDex;
|
| BOOL _iStatFlag;
|
| int IDidx;
|
| int offs016C;
|
| #ifdef HELLFIRE
|
| int _iDamAcFlags;
|
| #endif
|
| } ItemStruct;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct PlayerStruct {
|
| int _pmode;
|
| char walkpath[MAX_PATH_LENGTH];
|
| BOOLEAN plractive;
|
| int destAction;
|
| int destParam1;
|
| int destParam2;
|
| int destParam3;
|
| int destParam4;
|
| int plrlevel;
|
| int _px;
|
| int _py;
|
| int _pfutx;
|
| int _pfuty;
|
| int _ptargx;
|
| int _ptargy;
|
| int _pownerx;
|
| int _pownery;
|
| int _poldx;
|
| int _poldy;
|
| int _pxoff;
|
| int _pyoff;
|
| int _pxvel;
|
| int _pyvel;
|
| int _pdir;
|
| int _nextdir;
|
| int _pgfxnum;
|
| unsigned char *_pAnimData;
|
| int _pAnimDelay;
|
| int _pAnimCnt;
|
| int _pAnimLen;
|
| int _pAnimFrame;
|
| int _pAnimWidth;
|
| int _pAnimWidth2;
|
| int _peflag;
|
| int _plid;
|
| int _pvid;
|
| int _pSpell;
|
| char _pSplType;
|
| char _pSplFrom;
|
| int _pTSpell;
|
| char _pTSplType;
|
| int _pRSpell;
|
|
|
| char _pRSplType;
|
| int _pSBkSpell;
|
| char _pSBkSplType;
|
| char _pSplLvl[64];
|
| unsigned __int64 _pMemSpells;
|
| unsigned __int64 _pAblSpells;
|
| unsigned __int64 _pScrlSpells;
|
| UCHAR _pSpellFlags;
|
| int _pSplHotKey[4];
|
| char _pSplTHotKey[4];
|
| int _pwtype;
|
| BOOLEAN _pBlockFlag;
|
| BOOLEAN _pInvincible;
|
| char _pLightRad;
|
| BOOLEAN _pLvlChanging;
|
| char _pName[PLR_NAME_LEN];
|
|
|
|
|
|
|
|
|
|
|
|
|
| char _pClass;
|
| int _pStrength;
|
| int _pBaseStr;
|
| int _pMagic;
|
| int _pBaseMag;
|
| int _pDexterity;
|
| int _pBaseDex;
|
| int _pVitality;
|
| int _pBaseVit;
|
| int _pStatPts;
|
| int _pDamageMod;
|
| int _pBaseToBlk;
|
| int _pHPBase;
|
| int _pMaxHPBase;
|
| int _pHitPoints;
|
| int _pMaxHP;
|
| int _pHPPer;
|
| int _pManaBase;
|
| int _pMaxManaBase;
|
| int _pMana;
|
| int _pMaxMana;
|
| int _pManaPer;
|
| char _pLevel;
|
| char _pMaxLvl;
|
| int _pExperience;
|
| int _pMaxExp;
|
| int _pNextExper;
|
| char _pArmorClass;
|
| char _pMagResist;
|
| char _pFireResist;
|
| char _pLghtResist;
|
| int _pGold;
|
| BOOL _pInfraFlag;
|
| int _pVar1;
|
| int _pVar2;
|
| int _pVar3;
|
| int _pVar4;
|
| int _pVar5;
|
| int _pVar6;
|
| int _pVar7;
|
| int _pVar8;
|
| BOOLEAN _pLvlVisited[NUMLEVELS];
|
| BOOLEAN _pSLvlVisited[NUMLEVELS];
|
| int _pGFXLoad;
|
| unsigned char *_pNAnim[8];
|
| int _pNFrames;
|
| int _pNWidth;
|
| unsigned char *_pWAnim[8];
|
| int _pWFrames;
|
| int _pWWidth;
|
| unsigned char *_pAAnim[8];
|
| int _pAFrames;
|
| int _pAWidth;
|
| int _pAFNum;
|
| unsigned char *_pLAnim[8];
|
| unsigned char *_pFAnim[8];
|
| unsigned char *_pTAnim[8];
|
| int _pSFrames;
|
| int _pSWidth;
|
| int _pSFNum;
|
| unsigned char *_pHAnim[8];
|
| int _pHFrames;
|
| int _pHWidth;
|
| unsigned char *_pDAnim[8];
|
| int _pDFrames;
|
| int _pDWidth;
|
| unsigned char *_pBAnim[8];
|
| int _pBFrames;
|
| int _pBWidth;
|
| ItemStruct InvBody[NUM_INVLOC];
|
| ItemStruct InvList[NUM_INV_GRID_ELEM];
|
| int _pNumInv;
|
| char InvGrid[NUM_INV_GRID_ELEM];
|
| ItemStruct SpdList[MAXBELTITEMS];
|
| ItemStruct HoldItem;
|
| int _pIMinDam;
|
| int _pIMaxDam;
|
| int _pIAC;
|
| int _pIBonusDam;
|
| int _pIBonusToHit;
|
| int _pIBonusAC;
|
| int _pIBonusDamMod;
|
| unsigned __int64 _pISpells;
|
| int _pIFlags;
|
| int _pIGetHit;
|
| char _pISplLvlAdd;
|
| char _pISplCost;
|
| int _pISplDur;
|
| int _pIEnAc;
|
| int _pIFMinDam;
|
| int _pIFMaxDam;
|
| int _pILMinDam;
|
| int _pILMaxDam;
|
| int _pOilType;
|
| unsigned char pTownWarps;
|
| unsigned char pDungMsgs;
|
| unsigned char pLvlLoad;
|
| #ifdef HELLFIRE
|
| unsigned char pDungMsgs2;
|
| #else
|
| unsigned char pBattleNet;
|
| #endif
|
| BOOLEAN pManaShield;
|
| char bReserved[3];
|
| WORD wReflections;
|
| short wReserved[7];
|
| DWORD pDiabloKillLevel;
|
| int pDifficulty;
|
| int pDamAcFlags;
|
| int dwReserved[5];
|
| unsigned char *_pNData;
|
| unsigned char *_pWData;
|
| unsigned char *_pAData;
|
| unsigned char *_pLData;
|
| unsigned char *_pFData;
|
| unsigned char *_pTData;
|
| unsigned char *_pHData;
|
| unsigned char *_pDData;
|
| unsigned char *_pBData;
|
| void *pReserved;
|
| } PlayerStruct;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct TextDataStruct {
|
| const char *txtstr;
|
| int scrlltxt;
|
| int txtspd;
|
| int sfxnr;
|
| } TextDataStruct;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| typedef struct MissileData {
|
| unsigned char mName;
|
| void (*mAddProc)(int, int, int, int, int, int, char, int, int);
|
| void (*mProc)(int);
|
| BOOL mDraw;
|
| unsigned char mType;
|
| unsigned char mResist;
|
| unsigned char mFileNum;
|
| int mlSFX;
|
| int miSFX;
|
| } MissileData;
|
|
|
| typedef struct MisFileData {
|
| unsigned char mAnimName;
|
| unsigned char mAnimFAmt;
|
| const char *mName;
|
| int mFlags;
|
| unsigned char *mAnimData[16];
|
| unsigned char mAnimDelay[16];
|
| unsigned char mAnimLen[16];
|
| int mAnimWidth[16];
|
| int mAnimWidth2[16];
|
| } MisFileData;
|
|
|
| typedef struct ChainStruct {
|
| int idx;
|
| int _mitype;
|
| int _mirange;
|
| } ChainStruct;
|
|
|
| typedef struct MissileStruct {
|
| int _mitype;
|
| int _mix;
|
| int _miy;
|
| int _mixoff;
|
| int _miyoff;
|
| int _mixvel;
|
| int _miyvel;
|
| int _misx;
|
| int _misy;
|
| int _mitxoff;
|
| int _mityoff;
|
| int _mimfnum;
|
| int _mispllvl;
|
| BOOL _miDelFlag;
|
| BYTE _miAnimType;
|
| int _miAnimFlags;
|
| unsigned char *_miAnimData;
|
| int _miAnimDelay;
|
| int _miAnimLen;
|
| int _miAnimWidth;
|
| int _miAnimWidth2;
|
| int _miAnimCnt;
|
| int _miAnimAdd;
|
| int _miAnimFrame;
|
| BOOL _miDrawFlag;
|
| BOOL _miLightFlag;
|
| BOOL _miPreFlag;
|
| int _miUniqTrans;
|
| int _mirange;
|
| int _misource;
|
| int _micaster;
|
| int _midam;
|
| BOOL _miHitFlag;
|
| int _midist;
|
| int _mlid;
|
| int _mirnd;
|
| int _miVar1;
|
| int _miVar2;
|
| int _miVar3;
|
| int _miVar4;
|
| int _miVar5;
|
| int _miVar6;
|
| int _miVar7;
|
| int _miVar8;
|
| } MissileStruct;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct CKINFO {
|
| DWORD dwSize;
|
| DWORD dwOffset;
|
| } CKINFO;
|
|
|
| typedef struct TSnd {
|
| WAVEFORMATEX fmt;
|
| CKINFO chunk;
|
| const char *sound_path;
|
| LPDIRECTSOUNDBUFFER DSB;
|
| int start_tc;
|
| } TSnd;
|
|
|
| #pragma pack(push, 1)
|
| typedef struct TSFX {
|
| unsigned char bFlags;
|
| const char *pszName;
|
| TSnd *pSnd;
|
| } TSFX;
|
| #pragma pack(pop)
|
|
|
|
|
|
|
|
|
|
|
| typedef struct AnimStruct {
|
| BYTE *CMem;
|
| BYTE *Data[8];
|
| int Frames;
|
| int Rate;
|
| } AnimStruct;
|
|
|
| typedef struct MonsterData {
|
| int width;
|
| int mImage;
|
| const char *GraphicType;
|
| BOOL has_special;
|
| const char *sndfile;
|
| BOOL snd_special;
|
| BOOL has_trans;
|
| const char *TransFile;
|
| int Frames[6];
|
| int Rate[6];
|
| const char *mName;
|
| char mMinDLvl;
|
| char mMaxDLvl;
|
| char mLevel;
|
| int mMinHP;
|
| int mMaxHP;
|
| char mAi;
|
| int mFlags;
|
| unsigned char mInt;
|
| unsigned char mHit;
|
| unsigned char mAFNum;
|
| unsigned char mMinDamage;
|
| unsigned char mMaxDamage;
|
| unsigned char mHit2;
|
| unsigned char mAFNum2;
|
| unsigned char mMinDamage2;
|
| unsigned char mMaxDamage2;
|
| unsigned char mArmorClass;
|
| char mMonstClass;
|
| unsigned short mMagicRes;
|
| unsigned short mMagicRes2;
|
| unsigned short mTreasure;
|
| char mSelFlag;
|
| unsigned short mExp;
|
| } MonsterData;
|
|
|
| typedef struct CMonster {
|
| #ifdef HELLFIRE
|
| int mtype;
|
| #else
|
| unsigned char mtype;
|
| #endif
|
|
|
| unsigned char mPlaceFlags;
|
| AnimStruct Anims[6];
|
| TSnd *Snds[4][2];
|
| int width;
|
| int width2;
|
| #ifdef HELLFIRE
|
| int mMinHP;
|
| int mMaxHP;
|
| #else
|
| unsigned char mMinHP;
|
| unsigned char mMaxHP;
|
| #endif
|
| BOOL has_special;
|
| unsigned char mAFNum;
|
| char mdeadval;
|
| MonsterData *MData;
|
|
|
|
|
| BYTE *trans_file;
|
| } CMonster;
|
|
|
| typedef struct MonsterStruct {
|
| int _mMTidx;
|
| int _mmode;
|
| unsigned char _mgoal;
|
| int _mgoalvar1;
|
| int _mgoalvar2;
|
| int _mgoalvar3;
|
| int field_18;
|
| unsigned char _pathcount;
|
| int _mx;
|
| int _my;
|
| int _mfutx;
|
| int _mfuty;
|
| int _moldx;
|
| int _moldy;
|
| int _mxoff;
|
| int _myoff;
|
| int _mxvel;
|
| int _myvel;
|
| int _mdir;
|
| int _menemy;
|
| unsigned char _menemyx;
|
| unsigned char _menemyy;
|
| short falign_52;
|
| unsigned char *_mAnimData;
|
| int _mAnimDelay;
|
| int _mAnimCnt;
|
| int _mAnimLen;
|
| int _mAnimFrame;
|
| BOOL _meflag;
|
| BOOL _mDelFlag;
|
| int _mVar1;
|
| int _mVar2;
|
| int _mVar3;
|
| int _mVar4;
|
| int _mVar5;
|
| int _mVar6;
|
| int _mVar7;
|
| int _mVar8;
|
| int _mmaxhp;
|
| int _mhitpoints;
|
| unsigned char _mAi;
|
| unsigned char _mint;
|
| short falign_9A;
|
| int _mFlags;
|
| BYTE _msquelch;
|
| int falign_A4;
|
| int _lastx;
|
| int _lasty;
|
| int _mRndSeed;
|
| int _mAISeed;
|
| int falign_B8;
|
| unsigned char _uniqtype;
|
| unsigned char _uniqtrans;
|
| char _udeadval;
|
| char mWhoHit;
|
| char mLevel;
|
| unsigned short mExp;
|
| unsigned char mHit;
|
| unsigned char mMinDamage;
|
| unsigned char mMaxDamage;
|
| unsigned char mHit2;
|
| unsigned char mMinDamage2;
|
| unsigned char mMaxDamage2;
|
| #ifdef HELLFIRE
|
| char mArmorClass;
|
| #else
|
| unsigned char mArmorClass;
|
| #endif
|
| char falign_CB;
|
| unsigned short mMagicRes;
|
| int mtalkmsg;
|
| unsigned char leader;
|
| unsigned char leaderflag;
|
| unsigned char packsize;
|
| unsigned char mlid;
|
| const char *mName;
|
| CMonster *MType;
|
| MonsterData *MData;
|
| } MonsterStruct;
|
|
|
| typedef struct UniqMonstStruct {
|
| #ifdef HELLFIRE
|
| int mtype;
|
| #else
|
| char mtype;
|
| #endif
|
| const char *mName;
|
| const char *mTrnName;
|
| unsigned char mlevel;
|
| unsigned short mmaxhp;
|
| unsigned char mAi;
|
| unsigned char mint;
|
| unsigned char mMinDamage;
|
| unsigned char mMaxDamage;
|
| unsigned short mMagicRes;
|
| unsigned short mUnqAttr;
|
| unsigned char mUnqVar1;
|
| unsigned char mUnqVar2;
|
| int mtalkmsg;
|
| } UniqMonstStruct;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct ObjDataStruct {
|
| char oload;
|
| char ofindex;
|
| char ominlvl;
|
| char omaxlvl;
|
| char olvltype;
|
| char otheme;
|
| char oquest;
|
| int oAnimFlag;
|
| int oAnimDelay;
|
| int oAnimLen;
|
| int oAnimWidth;
|
| BOOL oSolidFlag;
|
| BOOL oMissFlag;
|
| BOOL oLightFlag;
|
| char oBreak;
|
| char oSelFlag;
|
| BOOL oTrapFlag;
|
| } ObjDataStruct;
|
|
|
| typedef struct ObjectStruct {
|
| int _otype;
|
| int _ox;
|
| int _oy;
|
| int _oLight;
|
| int _oAnimFlag;
|
| unsigned char *_oAnimData;
|
| int _oAnimDelay;
|
| int _oAnimCnt;
|
| int _oAnimLen;
|
| int _oAnimFrame;
|
| int _oAnimWidth;
|
| int _oAnimWidth2;
|
| BOOL _oDelFlag;
|
| char _oBreak;
|
| BOOL _oSolidFlag;
|
| BOOL _oMissFlag;
|
| char _oSelFlag;
|
| BOOL _oPreFlag;
|
| BOOL _oTrapFlag;
|
| BOOL _oDoorFlag;
|
| int _olid;
|
| int _oRndSeed;
|
| int _oVar1;
|
| int _oVar2;
|
| int _oVar3;
|
| int _oVar4;
|
| int _oVar5;
|
| int _oVar6;
|
| int _oVar7;
|
| int _oVar8;
|
| } ObjectStruct;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct PortalStruct {
|
| BOOL open;
|
| int x;
|
| int y;
|
| int level;
|
| int ltype;
|
| BOOL setlvl;
|
| } PortalStruct;
|
|
|
|
|
|
|
|
|
|
|
| #pragma pack(push, 1)
|
| typedef struct TCmd {
|
| BYTE bCmd;
|
| } TCmd;
|
|
|
| typedef struct TCmdLoc {
|
| BYTE bCmd;
|
| BYTE x;
|
| BYTE y;
|
| } TCmdLoc;
|
|
|
| typedef struct TCmdLocParam1 {
|
| BYTE bCmd;
|
| BYTE x;
|
| BYTE y;
|
| WORD wParam1;
|
| } TCmdLocParam1;
|
|
|
| typedef struct TCmdLocParam2 {
|
| BYTE bCmd;
|
| BYTE x;
|
| BYTE y;
|
| WORD wParam1;
|
| WORD wParam2;
|
| } TCmdLocParam2;
|
|
|
| typedef struct TCmdLocParam3 {
|
| BYTE bCmd;
|
| BYTE x;
|
| BYTE y;
|
| WORD wParam1;
|
| WORD wParam2;
|
| WORD wParam3;
|
| } TCmdLocParam3;
|
|
|
| typedef struct TCmdParam1 {
|
| BYTE bCmd;
|
| WORD wParam1;
|
| } TCmdParam1;
|
|
|
| typedef struct TCmdParam2 {
|
| BYTE bCmd;
|
| WORD wParam1;
|
| WORD wParam2;
|
| } TCmdParam2;
|
|
|
| typedef struct TCmdParam3 {
|
| BYTE bCmd;
|
| WORD wParam1;
|
| WORD wParam2;
|
| WORD wParam3;
|
| } TCmdParam3;
|
|
|
| typedef struct TCmdGolem {
|
| BYTE bCmd;
|
| BYTE _mx;
|
| BYTE _my;
|
| BYTE _mdir;
|
| char _menemy;
|
| int _mhitpoints;
|
| BYTE _currlevel;
|
| } TCmdGolem;
|
|
|
| typedef struct TCmdQuest {
|
| BYTE bCmd;
|
| BYTE q;
|
| BYTE qstate;
|
| BYTE qlog;
|
| BYTE qvar1;
|
| } TCmdQuest;
|
|
|
| typedef struct TCmdGItem {
|
| BYTE bCmd;
|
| BYTE bMaster;
|
| BYTE bPnum;
|
| BYTE bCursitem;
|
| BYTE bLevel;
|
| BYTE x;
|
| BYTE y;
|
| WORD wIndx;
|
| WORD wCI;
|
| int dwSeed;
|
| BYTE bId;
|
| BYTE bDur;
|
| BYTE bMDur;
|
| BYTE bCh;
|
| BYTE bMCh;
|
| WORD wValue;
|
| DWORD dwBuff;
|
| int dwTime;
|
| #ifdef HELLFIRE
|
| WORD wToHit;
|
| WORD wMaxDam;
|
| BYTE bMinStr;
|
| BYTE bMinMag;
|
| BYTE bMinDex;
|
| BYTE bAC;
|
| #endif
|
| } TCmdGItem;
|
|
|
| typedef struct TCmdPItem {
|
| BYTE bCmd;
|
| BYTE x;
|
| BYTE y;
|
| WORD wIndx;
|
| WORD wCI;
|
| int dwSeed;
|
| BYTE bId;
|
| BYTE bDur;
|
| BYTE bMDur;
|
| BYTE bCh;
|
| BYTE bMCh;
|
| WORD wValue;
|
| DWORD dwBuff;
|
| #ifdef HELLFIRE
|
| WORD wToHit;
|
| WORD wMaxDam;
|
| BYTE bMinStr;
|
| BYTE bMinMag;
|
| BYTE bMinDex;
|
| BYTE bAC;
|
| #endif
|
| } TCmdPItem;
|
|
|
| typedef struct TCmdChItem {
|
| BYTE bCmd;
|
| BYTE bLoc;
|
| WORD wIndx;
|
| WORD wCI;
|
| int dwSeed;
|
| BOOLEAN bId;
|
| } TCmdChItem;
|
|
|
| typedef struct TCmdDelItem {
|
| BYTE bCmd;
|
| BYTE bLoc;
|
| } TCmdDelItem;
|
|
|
| typedef struct TCmdDamage {
|
| BYTE bCmd;
|
| BYTE bPlr;
|
| DWORD dwDam;
|
| } TCmdDamage;
|
|
|
| #ifdef HELLFIRE
|
| typedef struct TCmdMonDamage {
|
| BYTE bCmd;
|
| WORD wMon;
|
| DWORD dwDam;
|
| } TCmdMonDamage;
|
| #endif
|
|
|
| typedef struct TCmdPlrInfoHdr {
|
| BYTE bCmd;
|
| WORD wOffset;
|
| WORD wBytes;
|
| } TCmdPlrInfoHdr;
|
|
|
| typedef struct TCmdString {
|
| BYTE bCmd;
|
| char str[MAX_SEND_STR_LEN];
|
| } TCmdString;
|
|
|
| typedef struct TFakeCmdPlr {
|
| BYTE bCmd;
|
| BYTE bPlr;
|
| } TFakeCmdPlr;
|
|
|
| typedef struct TFakeDropPlr {
|
| BYTE bCmd;
|
| BYTE bPlr;
|
| DWORD dwReason;
|
| } TFakeDropPlr;
|
|
|
| typedef struct TSyncHeader {
|
| BYTE bCmd;
|
| BYTE bLevel;
|
| WORD wLen;
|
| BYTE bObjId;
|
| BYTE bObjCmd;
|
| BYTE bItemI;
|
| BYTE bItemX;
|
| BYTE bItemY;
|
| WORD wItemIndx;
|
| WORD wItemCI;
|
| DWORD dwItemSeed;
|
| BYTE bItemId;
|
| BYTE bItemDur;
|
| BYTE bItemMDur;
|
| BYTE bItemCh;
|
| BYTE bItemMCh;
|
| WORD wItemVal;
|
| DWORD dwItemBuff;
|
| BYTE bPInvLoc;
|
| WORD wPInvIndx;
|
| WORD wPInvCI;
|
| DWORD dwPInvSeed;
|
| BYTE bPInvId;
|
| #ifdef HELLFIRE
|
| WORD wToHit;
|
| WORD wMaxDam;
|
| BYTE bMinStr;
|
| BYTE bMinMag;
|
| BYTE bMinDex;
|
| BYTE bAC;
|
| #endif
|
| } TSyncHeader;
|
|
|
| typedef struct TSyncMonster {
|
| BYTE _mndx;
|
| BYTE _mx;
|
| BYTE _my;
|
| BYTE _menemy;
|
| BYTE _mdelta;
|
| } TSyncMonster;
|
|
|
| typedef struct TPktHdr {
|
| BYTE px;
|
| BYTE py;
|
| BYTE targx;
|
| BYTE targy;
|
| int php;
|
| int pmhp;
|
| BYTE bstr;
|
| BYTE bmag;
|
| BYTE bdex;
|
| WORD wCheck;
|
| WORD wLen;
|
| } TPktHdr;
|
|
|
| typedef struct TPkt {
|
| TPktHdr hdr;
|
| BYTE body[493];
|
| } TPkt;
|
|
|
| typedef struct DMonsterStr {
|
| BYTE _mx;
|
| BYTE _my;
|
| BYTE _mdir;
|
| BYTE _menemy;
|
| BYTE _mactive;
|
| int _mhitpoints;
|
| } DMonsterStr;
|
|
|
| typedef struct DObjectStr {
|
| BYTE bCmd;
|
| } DObjectStr;
|
|
|
| typedef struct DLevel {
|
| TCmdPItem item[MAXITEMS];
|
| DObjectStr object[MAXOBJECTS];
|
| DMonsterStr monster[MAXMONSTERS];
|
| } DLevel;
|
|
|
| typedef struct LocalLevel {
|
| BYTE automapsv[DMAXX][DMAXY];
|
| } LocalLevel;
|
|
|
| typedef struct DPortal {
|
| BYTE x;
|
| BYTE y;
|
| BYTE level;
|
| BYTE ltype;
|
| BYTE setlvl;
|
| } DPortal;
|
|
|
| typedef struct MultiQuests {
|
| BYTE qstate;
|
| BYTE qlog;
|
| BYTE qvar1;
|
| } MultiQuests;
|
|
|
| typedef struct DJunk {
|
| DPortal portal[MAXPORTAL];
|
| MultiQuests quests[MAXMULTIQUESTS];
|
| } DJunk;
|
| #pragma pack(pop)
|
|
|
| typedef struct TMegaPkt {
|
| struct TMegaPkt *pNext;
|
| DWORD dwSpaceLeft;
|
| BYTE data[32000];
|
| } TMegaPkt;
|
|
|
| typedef struct TBuffer {
|
| DWORD dwNextWriteOffset;
|
| BYTE bData[4096];
|
| } TBuffer;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct QuestStruct {
|
| unsigned char _qlevel;
|
| unsigned char _qtype;
|
| unsigned char _qactive;
|
| unsigned char _qlvltype;
|
| int _qtx;
|
| int _qty;
|
| unsigned char _qslvl;
|
| unsigned char _qidx;
|
| #ifndef HELLFIRE
|
| unsigned char _qmsg;
|
| #else
|
| unsigned int _qmsg;
|
| #endif
|
| unsigned char _qvar1;
|
| unsigned char _qvar2;
|
| BOOL _qlog;
|
| } QuestStruct;
|
|
|
| typedef struct QuestData {
|
| unsigned char _qdlvl;
|
| char _qdmultlvl;
|
| unsigned char _qlvlt;
|
| unsigned char _qdtype;
|
| unsigned char _qdrnd;
|
| unsigned char _qslvl;
|
| int _qflags;
|
| int _qdmsg;
|
| const char *_qlstr;
|
| } QuestData;
|
|
|
| #ifdef HELLFIRE
|
| typedef struct CornerStoneStruct {
|
| int x;
|
| int y;
|
| BOOL activated;
|
| ItemStruct item;
|
| } CornerStoneStruct;
|
| #endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| typedef struct TMenuItem {
|
| DWORD dwFlags;
|
| const char *pszStr;
|
| void (*fnMenu)(BOOL);
|
| } TMenuItem;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| typedef struct SpellData {
|
| unsigned char sName;
|
| unsigned char sManaCost;
|
| unsigned char sType;
|
| const char *sNameText;
|
| const char *sSkillText;
|
| int sBookLvl;
|
| int sStaffLvl;
|
| BOOL sTargeted;
|
| BOOL sTownSpell;
|
| int sMinInt;
|
| unsigned char sSFX;
|
| unsigned char sMissiles[3];
|
| unsigned char sManaAdj;
|
| unsigned char sMinMana;
|
| int sStaffMin;
|
| int sStaffMax;
|
| int sBookCost;
|
| int sStaffCost;
|
| } SpellData;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct TNQ {
|
| unsigned char _qsttype;
|
| unsigned char _qstmsg;
|
| BOOLEAN _qstmsgact;
|
| } TNQ;
|
|
|
| typedef struct TownerStruct {
|
| int _tmode;
|
| int _ttype;
|
| int _tx;
|
| int _ty;
|
| int _txoff;
|
| int _tyoff;
|
| int _txvel;
|
| int _tyvel;
|
| int _tdir;
|
| unsigned char *_tAnimData;
|
| int _tAnimDelay;
|
| int _tAnimCnt;
|
| int _tAnimLen;
|
| int _tAnimFrame;
|
| int _tAnimFrameCnt;
|
| char _tAnimOrder;
|
| int _tAnimWidth;
|
| int _tAnimWidth2;
|
| int _tTenPer;
|
| int _teflag;
|
| int _tbtcnt;
|
| int _tSelFlag;
|
| BOOL _tMsgSaid;
|
| TNQ qsts[MAXQUESTS];
|
| int _tSeed;
|
| int _tVar1;
|
| int _tVar2;
|
| int _tVar3;
|
| int _tVar4;
|
| char _tName[PLR_NAME_LEN];
|
| unsigned char *_tNAnim[8];
|
| int _tNFrames;
|
| unsigned char *_tNData;
|
| } TownerStruct;
|
|
|
| typedef struct QuestTalkData {
|
| int _qinfra;
|
| int _qblkm;
|
| int _qgarb;
|
| int _qzhar;
|
| int _qveil;
|
| int _qmod;
|
| int _qbutch;
|
| int _qbol;
|
| int _qblind;
|
| int _qblood;
|
| int _qanvil;
|
| int _qwarlrd;
|
| int _qking;
|
| int _qpw;
|
| int _qbone;
|
| int _qvb;
|
| #ifdef HELLFIRE
|
| int _qgrv;
|
| int _qfarm;
|
| int _qgirl;
|
| int _qtrade;
|
| int _qdefiler;
|
| int _qnakrul;
|
| int _qjersy;
|
| int _qhf8;
|
| #endif
|
| } QuestTalkData;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct ScrollStruct {
|
| int _sxoff;
|
| int _syoff;
|
| int _sdx;
|
| int _sdy;
|
| int _sdir;
|
| } ScrollStruct;
|
|
|
| typedef struct THEME_LOC {
|
| int x;
|
| int y;
|
| int ttval;
|
| int width;
|
| int height;
|
| } THEME_LOC;
|
|
|
| typedef struct MICROS {
|
| WORD mt[16];
|
| } MICROS;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct ShadowStruct {
|
| unsigned char strig;
|
| unsigned char s1;
|
| unsigned char s2;
|
| unsigned char s3;
|
| unsigned char nv1;
|
| unsigned char nv2;
|
| unsigned char nv3;
|
| } ShadowStruct;
|
|
|
| typedef struct HALLNODE {
|
| int nHallx1;
|
| int nHally1;
|
| int nHallx2;
|
| int nHally2;
|
| int nHalldir;
|
| struct HALLNODE *pNext;
|
| } HALLNODE;
|
|
|
| typedef struct ROOMNODE {
|
| int nRoomx1;
|
| int nRoomy1;
|
| int nRoomx2;
|
| int nRoomy2;
|
| int nRoomDest;
|
| } ROOMNODE;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct ThemeStruct {
|
| char ttype;
|
| int ttval;
|
| } ThemeStruct;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct InvXY {
|
| int X;
|
| int Y;
|
| } InvXY;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct LightListStruct {
|
| int _lx;
|
| int _ly;
|
| int _lradius;
|
| int _lid;
|
| int _ldel;
|
| int _lunflag;
|
| int field_18;
|
| int _lunx;
|
| int _luny;
|
| int _lunr;
|
| int _xoff;
|
| int _yoff;
|
| int _lflags;
|
| } LightListStruct;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct DeadStruct {
|
| unsigned char *_deadData[8];
|
| int _deadFrame;
|
| int _deadWidth;
|
| int _deadWidth2;
|
| char _deadtrans;
|
| } DeadStruct;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| typedef struct _gamedata {
|
| int dwSeed;
|
| BYTE bDiff;
|
| } _gamedata;
|
|
|
| typedef struct _uidefaultstats {
|
| WORD strength;
|
| WORD magic;
|
| WORD dexterity;
|
| WORD vitality;
|
| } _uidefaultstats;
|
|
|
| typedef struct _uiheroinfo {
|
| struct _uiheroinfo *next;
|
| char name[16];
|
| WORD level;
|
| BYTE heroclass;
|
| BYTE herorank;
|
| WORD strength;
|
| WORD magic;
|
| WORD dexterity;
|
| WORD vitality;
|
| int gold;
|
| int hassaved;
|
| BOOL spawned;
|
| } _uiheroinfo;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| typedef struct _SNETCAPS {
|
| DWORD size;
|
| DWORD flags;
|
| DWORD maxmessagesize;
|
| DWORD maxqueuesize;
|
| DWORD maxplayers;
|
| DWORD bytessec;
|
| DWORD latencyms;
|
| DWORD defaultturnssec;
|
| DWORD defaultturnsintransit;
|
| } _SNETCAPS;
|
|
|
| typedef struct _SNETEVENT {
|
| DWORD eventid;
|
| DWORD playerid;
|
| void *data;
|
| DWORD databytes;
|
| } _SNETEVENT;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| typedef struct _SNETPLAYERDATA {
|
| int size;
|
| char *playername;
|
| char *playerdescription;
|
| int reserved;
|
| } _SNETPLAYERDATA;
|
|
|
| typedef struct _SNETPROGRAMDATA {
|
| int size;
|
| const char *programname;
|
| const char *programdescription;
|
| int programid;
|
| int versionid;
|
| int reserved1;
|
| int maxplayers;
|
| _gamedata *initdata;
|
| int initdatabytes;
|
| void *reserved2;
|
| int optcategorybits;
|
| char *cdkey;
|
| char *registereduser;
|
| int spawned;
|
| int lcid;
|
| } _SNETPROGRAMDATA;
|
|
|
| typedef struct _SNETUIDATA {
|
| int size;
|
| int uiflags;
|
| HWND parentwindow;
|
| void (*artcallback)();
|
| void (*authcallback)();
|
| void (*createcallback)();
|
| void (*drawdesccallback)();
|
| void (*selectedcallback)();
|
| void (*messageboxcallback)();
|
| void (*soundcallback)();
|
| void (*statuscallback)();
|
| void (*getdatacallback)();
|
| void (*categorycallback)();
|
| void (*categorylistcallback)();
|
| void (*newaccountcallback)();
|
| void (*profilecallback)();
|
| const char **profilefields;
|
| void (*profilebitmapcallback)();
|
| int(__stdcall *selectnamecallback)(
|
| const struct _SNETPROGRAMDATA *,
|
| const struct _SNETPLAYERDATA *,
|
| const struct _SNETUIDATA *,
|
| const struct _SNETVERSIONDATA *,
|
| DWORD provider,
|
| char *, DWORD,
|
| char *, DWORD,
|
| BOOL *
|
| );
|
| void (*changenamecallback)();
|
| } _SNETUIDATA;
|
|
|
| typedef struct _SNETVERSIONDATA {
|
| int size;
|
| const char *versionstring;
|
| const char *executablefile;
|
| const char *originalarchivefile;
|
| const char *patcharchivefile;
|
| } _SNETVERSIONDATA;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| #pragma pack(push, 1)
|
| typedef struct PkItemStruct {
|
| DWORD iSeed;
|
| WORD iCreateInfo;
|
| WORD idx;
|
| BYTE bId;
|
| BYTE bDur;
|
| BYTE bMDur;
|
| BYTE bCh;
|
| BYTE bMCh;
|
| WORD wValue;
|
| DWORD dwBuff;
|
| } PkItemStruct;
|
|
|
| typedef struct PkPlayerStruct {
|
| FILETIME archiveTime;
|
| char destAction;
|
| char destParam1;
|
| char destParam2;
|
| BYTE plrlevel;
|
| BYTE px;
|
| BYTE py;
|
| BYTE targx;
|
| BYTE targy;
|
| char pName[PLR_NAME_LEN];
|
| char pClass;
|
| BYTE pBaseStr;
|
| BYTE pBaseMag;
|
| BYTE pBaseDex;
|
| BYTE pBaseVit;
|
| char pLevel;
|
| BYTE pStatPts;
|
| int pExperience;
|
| int pGold;
|
| int pHPBase;
|
| int pMaxHPBase;
|
| int pManaBase;
|
| int pMaxManaBase;
|
| char pSplLvl[37];
|
| unsigned __int64 pMemSpells;
|
| PkItemStruct InvBody[NUM_INVLOC];
|
| PkItemStruct InvList[NUM_INV_GRID_ELEM];
|
| char InvGrid[NUM_INV_GRID_ELEM];
|
| BYTE _pNumInv;
|
| PkItemStruct SpdList[MAXBELTITEMS];
|
| char pTownWarps;
|
| char pDungMsgs;
|
| char pLvlLoad;
|
| #ifdef HELLFIRE
|
| unsigned char pDungMsgs2;
|
| #else
|
| char pBattleNet;
|
| #endif
|
| BOOLEAN pManaShield;
|
| char bReserved[3];
|
| WORD wReflections;
|
| short wReserved2;
|
| char pSplLvl2[10];
|
| short wReserved8;
|
| DWORD pDiabloKillLevel;
|
| int pDifficulty;
|
| int pDamAcFlags;
|
| int dwReserved[5];
|
| } PkPlayerStruct;
|
| #pragma pack(pop)
|
|
|
|
|
|
|
|
|
|
|
| typedef struct PATHNODE {
|
| char f;
|
| char h;
|
| char g;
|
| int x;
|
| int y;
|
| struct PATHNODE *Parent;
|
| struct PATHNODE *Child[8];
|
| struct PATHNODE *NextNode;
|
| } PATHNODE;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| typedef struct SHA1Context {
|
| int state[5];
|
| int count[2];
|
| char buffer[64];
|
| } SHA1Context;
|
|
|
|
|
|
|
|
|
|
|
| #pragma pack(push, 1)
|
| typedef struct TMsg TMsg;
|
|
|
| typedef struct TMsgHdr {
|
| TMsg *pNext;
|
| int dwTime;
|
| BYTE bLen;
|
| } TMsgHdr;
|
|
|
| typedef struct TMsg {
|
| TMsgHdr hdr;
|
|
|
|
|
| unsigned char body[3];
|
| } TMsg;
|
| #pragma pack(pop)
|
|
|
|
|
|
|
|
|
|
|
| typedef struct _FILEHEADER {
|
| int signature;
|
| int headersize;
|
| int filesize;
|
| WORD version;
|
| short sectorsizeid;
|
| int hashoffset;
|
| int blockoffset;
|
| int hashcount;
|
| int blockcount;
|
| char pad[72];
|
| } _FILEHEADER;
|
|
|
| typedef struct _HASHENTRY {
|
| int hashcheck[2];
|
| int lcid;
|
| int block;
|
| } _HASHENTRY;
|
|
|
| typedef struct _BLOCKENTRY {
|
| int offset;
|
| int sizealloc;
|
| int sizefile;
|
| int flags;
|
| } _BLOCKENTRY;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| typedef struct TriggerStruct {
|
| int _tx;
|
| int _ty;
|
| int _tmsg;
|
| int _tlvl;
|
| } TriggerStruct;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct STextStruct {
|
| int _sx;
|
| int _syoff;
|
| char _sstr[128];
|
| BOOL _sjust;
|
| char _sclr;
|
| int _sline;
|
| BOOL _ssel;
|
| int _sval;
|
| } STextStruct;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct MEMFILE {
|
| DWORD end;
|
| LONG offset;
|
| DWORD buf_len;
|
| DWORD dist;
|
| DWORD bytes_to_read;
|
| BYTE *buf;
|
| HANDLE file;
|
| } MEMFILE;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct _plrmsg {
|
| DWORD time;
|
| unsigned char player;
|
| char str[144];
|
| } _plrmsg;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct _PcxHeader {
|
| BYTE Manufacturer;
|
| BYTE Version;
|
| BYTE Encoding;
|
| BYTE BitsPerPixel;
|
| WORD Xmin;
|
| WORD Ymin;
|
| WORD Xmax;
|
| WORD Ymax;
|
| WORD HDpi;
|
| WORD VDpi;
|
| BYTE Colormap[48];
|
| BYTE Reserved;
|
| BYTE NPlanes;
|
| WORD BytesPerLine;
|
| WORD PaletteInfo;
|
| WORD HscreenSize;
|
| WORD VscreenSize;
|
| BYTE Filler[54];
|
| } PCXHEADER;
|
|
|
|
|
|
|
|
|
|
|
| typedef struct TDataInfo {
|
| BYTE *srcData;
|
| DWORD srcOffset;
|
| BYTE *destData;
|
| DWORD destOffset;
|
| DWORD size;
|
| } TDataInfo;
|
|
|