1
0
Fork 0
mirror of https://github.com/galaxyhaxz/devilution synced 2024-11-14 16:29:02 +00:00
devilution/2020_03_31/structs.h
PrisonOfMirrors b720183846 initial up
2020-11-28 18:24:54 -06:00

1685 lines
29 KiB
C

//////////////////////////////////////////////////
// direct x
//////////////////////////////////////////////////
typedef HRESULT (WINAPI *DDCREATEPROC)(GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter);
typedef HRESULT (WINAPI *DSCREATEPROC)(GUID FAR *lpGUID, LPDIRECTSOUND FAR *lplpDS, IUnknown FAR *pUnkOuter);
//////////////////////////////////////////////////
// items
//////////////////////////////////////////////////
typedef struct PLStruct
{
const char *PLName;
int PLPower;
int PLParam1;
int PLParam2;
char PLMinLvl;
int PLIType;
BYTE PLGOE;
int PLDouble;
int PLOk;
int PLMinVal;
int PLMaxVal;
int PLMultVal;
} PLStruct;
typedef struct UItemStruct
{
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;
char *iName;
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;
int 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;
unsigned short _iCreateInfo;
int _itype;
int _ix;
int _iy;
int _iAnimFlag;
unsigned char *_iAnimData; // PSX name -> ItemFrame
int _iAnimLen;
int _iAnimFrame;
int _iAnimWidth;
int _iAnimWidth2; // width 2?
int _iDelFlag; // set when item is flagged for deletion, deprecated in 1.02
char _iSelFlag;
int _iPostDraw;
int _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;
int _iStatFlag;
int IDidx;
int offs016C; // _oldlight or _iInvalid
} ItemStruct;
//////////////////////////////////////////////////
// player
//////////////////////////////////////////////////
typedef struct PlayerStruct
{
int _pmode;
char walkpath[25];
unsigned char plractive;
int destAction;
int destParam1;
int destParam2;
int destParam3;
int destParam4;
int plrlevel;
int WorldX;
int WorldY;
int _px;
int _py;
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];
union {
__int64 _pMemSpells64;
int _pMemSpells[2];
};
union {
__int64 _pAblSpells64;
int _pAblSpells[2];
};
union {
__int64 _pScrlSpells64;
int _pScrlSpells[2];
};
char _pSpellFlags;
int _pSplHotKey[4];
char _pSplTHotKey[4];
int _pwtype;
unsigned char _pBlockFlag;
unsigned char _pInvincible;
char _pLightRad;
unsigned char _pLvlChanging;
char _pName[32];
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;
int _pInfraFlag;
int _pVar1;
int _pVar2;
int _pVar3;
int _pVar4;
int _pVar5;
int _pVar6;
int _pVar7;
int _pVar8;
unsigned char _pLvlVisited[NUMLEVELS];
unsigned char _pSLvlVisited[NUMLEVELS]; // only 10 used
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[7];
ItemStruct InvList[40];
int _pNumInv;
char InvGrid[40];
ItemStruct SpdList[8];
ItemStruct HoldItem;
int _pIMinDam;
int _pIMaxDam;
int _pIAC;
int _pIBonusDam;
int _pIBonusToHit;
int _pIBonusAC;
int _pIBonusDamMod;
union {
__int64 _pISpells64;
int _pISpells[2];
};
int _pIFlags;
int _pIGetHit;
char _pISplLvlAdd;
char _pISplCost; /* unused (beta): reduce mana cost of spells */
int _pISplDur; /* unused (beta): increase duration of spells */
int _pIEnAc;
int _pIFMinDam;
int _pIFMaxDam;
int _pILMinDam;
int _pILMaxDam;
int _pOilType; /* unused (beta): current oil applied to item */
unsigned char pTownWarps;
unsigned char pDungMsgs;
unsigned char pLvlLoad;
unsigned char pBattleNet;
unsigned char pManaShield;
char bReserved[3];
short wReserved[8];
DWORD pDiabloKillLevel;
int dwReserved[7];
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;
//////////////////////////////////////////////////
// textdat
//////////////////////////////////////////////////
typedef struct TextDataStruct
{
char *txtstr;
int scrlltxt;
int txtspd;
int sfxnr;
} TextDataStruct;
//////////////////////////////////////////////////
// missiles
//////////////////////////////////////////////////
// TPDEF PTR FCN VOID MIADDPRC
// TPDEF PTR FCN VOID MIPROC
typedef struct MissileData
{
unsigned char mName;
void (* mAddProc)(int, int, int, int, int, int, char, int, int);
void (* mProc)(int);
int mDraw;
unsigned char mType;
unsigned char mResist;
unsigned char mFileNum;
int mlSFX;
int miSFX;
} MissileData;
typedef struct MisFileData
{
unsigned char mAnimName;
unsigned char mAnimFAmt;
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;
int _miDelFlag;
BYTE _miAnimType;
int _miAnimFlags;
unsigned char *_miAnimData;
int _miAnimDelay;
int _miAnimLen;
int _miAnimWidth;
int _miAnimWidth2;
int _miAnimCnt;
int _miAnimAdd;
int _miAnimFrame;
int _miDrawFlag;
int _miLightFlag;
int _miPreFlag;
int _miUniqTrans;
int _mirange;
int _misource;
int _micaster;
int _midam;
int _miHitFlag;
int _midist;
int _mlid;
int _mirnd;
int _miVar1;
int _miVar2;
int _miVar3;
int _miVar4;
int _miVar5;
int _miVar6;
int _miVar7;
int _miVar8;
} MissileStruct;
//////////////////////////////////////////////////
// effects/sound
//////////////////////////////////////////////////
typedef struct CKINFO {
DWORD dwSize;
DWORD dwOffset;
} CKINFO;
typedef struct TSnd
{
WAVEFORMATEX fmt;
CKINFO chunk;
char *sound_path;
IDirectSoundBuffer *DSB;
int start_tc;
} TSnd;
#pragma pack(push, 1)
typedef struct TSFX
{
unsigned char bFlags;
char *pszName;
TSnd *pSnd;
} TSFX;
#pragma pack(pop)
//////////////////////////////////////////////////
// monster
//////////////////////////////////////////////////
typedef struct AnimStruct // note: wrong names
{
BYTE *CMem; // [unsigned] char * ??
unsigned char *Frames[8]; // probably Data[8]
int Rate;
int Delay;
} AnimStruct;
typedef struct MonsterData
{
int flags; // width?
int mType;
char *GraphicType;
int has_special;
char *sndfile;
int snd_special;
int has_trans;
char *TransFile;
int Frames[6];
int Rate[6];
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;
char mArmorClass;
char mMonstClass;
unsigned short mMagicRes;
unsigned short mMagicRes2;
unsigned short mTreasure;
char mSelFlag;
unsigned short mExp;
} MonsterData;
typedef struct CMonster
{
unsigned char mtype;
unsigned char mPlaceFlags;
AnimStruct Anims[6];
TSnd *Snds[4][2];
int flags_1; // width
int flags_2; // width 2
unsigned char mMinHP;
unsigned char mMaxHP;
int has_special;
unsigned char mAFNum;
char mdeadval;
MonsterData *MData;
BYTE *trans_file;
} CMonster;
typedef struct MonsterStruct // note: missing field _mAFNum
{
int _mMTidx;
int _mmode;
char _mgoal;
int _mgoalvar1;
int _mgoalvar2;
int _mgoalvar3;
int field_18; // _mgoalvar4?
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;
int _meflag;
int _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;
char mArmorClass;
char falign_CB;
WORD mMagicRes;
int mtalkmsg;
unsigned char leader;
unsigned char leaderflag;
unsigned char packsize;
unsigned char mlid;
char *mName;
CMonster *MType;
MonsterData *MData;
} MonsterStruct;
typedef struct UniqMonstStruct
{
char mtype;
char *mName;
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;
//////////////////////////////////////////////////
// objects
//////////////////////////////////////////////////
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;
int oSolidFlag;
int oMissFlag;
int oLightFlag;
char oBreak;
char oSelFlag;
int 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;
int _oDelFlag;
char _oBreak; // check
int _oSolidFlag;
int _oMissFlag;
char _oSelFlag; // check
int _oPreFlag;
int _oTrapFlag;
int _oDoorFlag;
int _olid;
int _oRndSeed;
int _oVar1;
int _oVar2;
int _oVar3;
int _oVar4;
int _oVar5;
int _oVar6;
int _oVar7;
int _oVar8;
} ObjectStruct;
//////////////////////////////////////////////////
// portal
//////////////////////////////////////////////////
typedef struct PortalStruct
{
int open;
int x;
int y;
int level;
int ltype;
int setlvl;
} PortalStruct;
//////////////////////////////////////////////////
// msg
//////////////////////////////////////////////////
#pragma pack(push, 1)
typedef struct TCmd
{
unsigned char bCmd;
} TCmd;
typedef struct TCmdLoc
{
unsigned char bCmd;
unsigned char x;
unsigned char y;
} TCmdLoc;
typedef struct TCmdLocParam1
{
unsigned char bCmd;
unsigned char x;
unsigned char y;
unsigned short wParam1;
} TCmdLocParam1;
typedef struct TCmdLocParam2
{
unsigned char bCmd;
unsigned char x;
unsigned char y;
unsigned short wParam1;
unsigned short wParam2;
} TCmdLocParam2;
typedef struct TCmdLocParam3
{
unsigned char bCmd;
unsigned char x;
unsigned char y;
unsigned short wParam1;
unsigned short wParam2;
unsigned short wParam3;
} TCmdLocParam3;
typedef struct TCmdParam1
{
unsigned char bCmd;
unsigned short wParam1;
} TCmdParam1;
typedef struct TCmdParam2
{
unsigned char bCmd;
unsigned short wParam1;
unsigned short wParam2;
} TCmdParam2;
typedef struct TCmdParam3
{
unsigned char bCmd;
unsigned short wParam1;
unsigned short wParam2;
unsigned short wParam3;
} TCmdParam3;
typedef struct TCmdGolem
{
unsigned char bCmd;
unsigned char _mx;
unsigned char _my;
unsigned char _mdir;
unsigned char _menemy;
int _mhitpoints;
unsigned char _currlevel;
} TCmdGolem;
typedef struct TCmdQuest
{
unsigned char bCmd;
unsigned char q;
unsigned char qstate;
unsigned char qlog;
unsigned char qvar1;
} TCmdQuest;
typedef struct TCmdGItem
{
unsigned char bCmd;
unsigned char bMaster;
unsigned char bPnum;
unsigned char bCursitem;
unsigned char bLevel;
unsigned char x;
unsigned char y;
unsigned short wIndx;
unsigned short wCI;
int dwSeed;
unsigned char bId;
unsigned char bDur;
unsigned char bMDur;
unsigned char bCh;
unsigned char bMCh;
unsigned short wValue;
int dwBuff;
int dwTime;
} TCmdGItem;
typedef struct TCmdPItem
{
char bCmd; /* unsigned */
unsigned char x;
unsigned char y;
unsigned short wIndx;
unsigned short wCI;
int dwSeed;
unsigned char bId;
unsigned char bDur;
unsigned char bMDur;
unsigned char bCh;
unsigned char bMCh;
unsigned short wValue;
int dwBuff;
} TCmdPItem;
typedef struct TCmdChItem
{
unsigned char bCmd;
unsigned char bLoc;
unsigned short wIndx;
unsigned short wCI;
int dwSeed;
unsigned char bId;
} TCmdChItem;
typedef struct TCmdDelItem
{
unsigned char bCmd;
unsigned char bLoc;
} TCmdDelItem;
typedef struct TCmdDamage
{
unsigned char bCmd;
unsigned char bPlr;
int dwDam;
} TCmdDamage;
typedef struct TCmdPlrInfoHdr
{
unsigned char bCmd;
unsigned short wOffset;
unsigned short wBytes;
} TCmdPlrInfoHdr;
typedef struct TCmdString
{
unsigned char bCmd;
char str[80];
} TCmdString;
typedef struct TFakeCmdPlr
{
unsigned char bCmd;
unsigned char bPlr;
} TFakeCmdPlr;
typedef struct TFakeDropPlr
{
unsigned char bCmd;
unsigned char bPlr;
int dwReason;
} TFakeDropPlr;
typedef struct TSyncHeader
{
unsigned char bCmd;
unsigned char bLevel;
unsigned short wLen;
unsigned char bObjId;
unsigned char bObjCmd;
unsigned char bItemI;
unsigned char bItemX;
unsigned char bItemY;
unsigned short wItemIndx;
unsigned short wItemCI;
int dwItemSeed;
unsigned char bItemId;
unsigned char bItemDur;
unsigned char bItemMDur;
unsigned char bItemCh;
unsigned char bItemMCh;
unsigned short wItemVal;
unsigned int dwItemBuff;
unsigned char bPInvLoc;
unsigned short wPInvIndx;
unsigned short wPInvCI;
int dwPInvSeed;
unsigned char bPInvId;
} TSyncHeader;
typedef struct TSyncMonster
{
unsigned char _mndx;
unsigned char _mx;
unsigned char _my;
unsigned char _menemy;
unsigned char _mdelta;
} TSyncMonster;
typedef struct TPktHdr
{
unsigned char px;
unsigned char py;
unsigned char targx;
unsigned char targy;
int php;
int pmhp;
unsigned char bstr;
unsigned char bmag;
unsigned char bdex;
unsigned short wCheck;
unsigned short wLen;
} TPktHdr;
typedef struct TPkt
{
TPktHdr hdr;
unsigned char body[493];
} TPkt;
typedef struct DMonsterStr
{
unsigned char _mx; /* these might be unsigned */
unsigned char _my;
unsigned char _mdir;
unsigned char _menemy;
unsigned char _mactive;
int _mhitpoints;
} DMonsterStr;
typedef struct DObjectStr
{
unsigned char bCmd;
} DObjectStr;
typedef struct DLevel
{
TCmdPItem item[MAXITEMS];
DObjectStr object[MAXOBJECTS];
DMonsterStr monster[MAXMONSTERS];
} DLevel;
typedef struct LocalLevel
{
unsigned char automapsv[40][40];
} LocalLevel;
typedef struct DPortal
{
unsigned char x;
unsigned char y;
unsigned char level;
unsigned char ltype;
unsigned char setlvl;
} DPortal;
typedef struct MultiQuests
{
unsigned char qstate;
unsigned char qlog;
unsigned char qvar1;
} MultiQuests;
typedef struct DJunk
{
DPortal portal[MAXPORTAL];
MultiQuests quests[MAXMULTIQUESTS];
} DJunk;
#pragma pack(pop)
typedef struct TMegaPkt
{
struct TMegaPkt *pNext;
int dwSpaceLeft;
unsigned char data[32000];
} TMegaPkt;
typedef struct TBuffer
{
unsigned int dwNextWriteOffset;
unsigned char bData[4096];
} TBuffer;
//////////////////////////////////////////////////
// quests
//////////////////////////////////////////////////
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;
unsigned char _qmsg;
unsigned char _qvar1;
unsigned char _qvar2;
int _qlog; /* char */
} QuestStruct;
typedef struct QuestData
{
unsigned char _qdlvl;
char _qdmultlvl;
unsigned char _qlvlt;
unsigned char _qdtype;
unsigned char _qdrnd;
unsigned char _qslvl;
int _qflags; /* unsigned char */
int _qdmsg;
char *_qlstr;
} QuestData;
//////////////////////////////////////////////////
// gamemenu/gmenu
//////////////////////////////////////////////////
// TPDEF PTR FCN VOID TMenuFcn
typedef struct TMenuItem
{
unsigned int dwFlags;
char *pszStr;
void (* fnMenu)(BOOL); /* fix, should have one arg */
} TMenuItem;
// TPDEF PTR FCN VOID TMenuUpdateFcn
//////////////////////////////////////////////////
// spells
//////////////////////////////////////////////////
typedef struct SpellData
{
unsigned char sName;
unsigned char sManaCost;
unsigned char sType;
char *sNameText;
char *sSkillText;
int sBookLvl;
int sStaffLvl;
int 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;
//////////////////////////////////////////////////
// towners
//////////////////////////////////////////////////
typedef struct TNQ
{
unsigned char _qsttype;
unsigned char _qstmsg;
unsigned char _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;
int _tMsgSaid;
TNQ qsts[16];
int _tSeed;
int _tVar1;
int _tVar2;
int _tVar3;
int _tVar4;
char _tName[32];
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;
} QuestTalkData;
//////////////////////////////////////////////////
// gendung
//////////////////////////////////////////////////
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;
//////////////////////////////////////////////////
// drlg
//////////////////////////////////////////////////
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;
//////////////////////////////////////////////////
// themes
//////////////////////////////////////////////////
typedef struct ThemeStruct
{
char ttype; /* aligned 4 */
int ttval;
} ThemeStruct;
//////////////////////////////////////////////////
// inv
//////////////////////////////////////////////////
typedef struct InvXY
{
int X;
int Y;
} InvXY;
//////////////////////////////////////////////////
// lighting
//////////////////////////////////////////////////
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;
//////////////////////////////////////////////////
// dead
//////////////////////////////////////////////////
typedef struct DeadStruct
{
unsigned char *_deadData[8];
int _deadFrame;
int _deadWidth;
int _deadWidth2;
char _deadtrans;
} DeadStruct;
//////////////////////////////////////////////////
// storm
//////////////////////////////////////////////////
// TPDEF PTR FCN VOID SEVTHANDLER
// TPDEF PTR FCN UCHAR SMSGIDLEPROC
// TPDEF PTR FCN VOID SMSGHANDLER
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;
// TPDEF PTR FCN UCHAR SNETABORTPROC
// TPDEF PTR FCN UCHAR SNETCATEGORYPROC
// TPDEF PTR FCN UCHAR SNETCHECKAUTHPROC
// TPDEF PTR FCN UCHAR SNETCREATEPROC
// TPDEF PTR FCN UCHAR SNETDRAWDESCPROC
// TPDEF PTR FCN UCHAR SNETENUMDEVICESPROC
// TPDEF PTR FCN UCHAR SNETENUMGAMESPROC
// TPDEF PTR FCN UCHAR SNETENUMPROVIDERSPROC
// TPDEF PTR FCN VOID SNETEVENTPROC
// TPDEF PTR FCN UCHAR SNETGETARTPROC
// TPDEF PTR FCN UCHAR SNETGETDATAPROC
// TPDEF PTR FCN INT SNETMESSAGEBOXPROC
// TPDEF PTR FCN UCHAR SNETPLAYSOUNDPROC
// TPDEF PTR FCN UCHAR SNETSELECTEDPROC
// TPDEF PTR FCN UCHAR SNETSTATUSPROC
typedef struct _SNETPLAYERDATA
{
int size;
char *playername;
char *playerdescription;
int reserved;
} _SNETPLAYERDATA;
typedef struct _SNETPROGRAMDATA
{
int size;
char *programname;
char *programdescription;
int programid;
int versionid;
int reserved1;
int maxplayers;
void *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)();
int profilefields;
void (* profilebitmapcallback)();
void (* selectnamecallback)();
void (* changenamecallback)();
} _SNETUIDATA;
typedef struct _SNETVERSIONDATA
{
int size;
char *versionstring;
char *executablefile;
char *originalarchivefile;
char *patcharchivefile;
} _SNETVERSIONDATA;
// TPDEF PTR FCN UCHAR SNETSPIBIND
// TPDEF PTR FCN UCHAR SNETSPIQUERY
//////////////////////////////////////////////////
// diabloui
//////////////////////////////////////////////////
// TPDEF PTR FCN VOID PLAYSND
typedef struct _gamedata
{
DWORD dwSeed;
unsigned char bDiff;
} _gamedata;
typedef struct _uidefaultstats
{
unsigned short strength;
unsigned short magic;
unsigned short dexterity;
unsigned short vitality;
} _uidefaultstats;
typedef struct _uiheroinfo
{
struct _uiheroinfo *next;
char name[16];
unsigned short level;
unsigned char heroclass;
unsigned char herorank;
unsigned short strength;
unsigned short magic;
unsigned short dexterity;
unsigned short vitality;
int gold;
int hassaved;
int spawned;
} _uiheroinfo;
// TPDEF PTR FCN UCHAR ENUMHEROPROC
// TPDEF PTR FCN UCHAR ENUMHEROS
// TPDEF PTR FCN UCHAR CREATEHERO
// TPDEF PTR FCN UCHAR DELETEHERO
// TPDEF PTR FCN UCHAR GETDEFHERO
// TPDEF PTR FCN INT PROGRESSFCN
//////////////////////////////////////////////////
// pack
//////////////////////////////////////////////////
#pragma pack(push, 1)
typedef struct PkItemStruct
{
int iSeed;
short iCreateInfo;
short idx;
char bId;
char bDur;
char bMDur;
char bCh;
char bMCh;
short wValue;
int dwBuff;
} PkItemStruct;
typedef struct PkPlayerStruct
{
FILETIME archiveTime;
char destAction;
char destParam1;
char destParam2;
char plrlevel;
char px;
char py;
char targx;
char targy;
char pName[32];
char pClass;
char pBaseStr;
char pBaseMag;
char pBaseDex;
char pBaseVit;
char pLevel;
char pStatPts;
int pExperience;
int pGold;
int pHPBase;
int pMaxHPBase;
int pManaBase;
int pMaxManaBase;
char pSplLvl[37];
int pMemSpells; /* __int64 */
int pMemSpells2;
PkItemStruct InvBody[7];
PkItemStruct InvList[40];
char InvGrid[40];
char _pNumInv;
PkItemStruct SpdList[8];
char pTownWarps;
char pDungMsgs;
char pLvlLoad;
char pBattleNet;
char pManaShield;
char bReserved[3];
short wReserved[8];
DWORD pDiabloKillLevel;
int dwReserved[7];
} PkPlayerStruct;
#pragma pack(pop)
//////////////////////////////////////////////////
// path
//////////////////////////////////////////////////
typedef struct PATHNODE
{
char f;
char h;
char g;
int x;
int y;
struct PATHNODE *Parent;
struct PATHNODE *Child[8];
struct PATHNODE *NextNode;
} PATHNODE;
// TPDEF PTR FCN UCHAR CHECKFUNC1
// TPDEF PTR FCN UCHAR CHECKFUNC
//////////////////////////////////////////////////
// sha
//////////////////////////////////////////////////
typedef struct SHA1Context
{
int state[5];
int count[2];
char buffer[64];
} SHA1Context;
//////////////////////////////////////////////////
// tmsg
//////////////////////////////////////////////////
#pragma pack(push, 1)
typedef struct TMsg TMsg;
typedef struct TMsgHdr
{
TMsg *pNext;
unsigned int dwTime;
unsigned char bLen;
} TMsgHdr;
typedef struct TMsg
{
TMsgHdr hdr;
unsigned char body[3];
} TMsg;
#pragma pack(pop)
//////////////////////////////////////////////////
// mpqapi
//////////////////////////////////////////////////
typedef struct _FILEHEADER
{
int signature;
int headersize;
int filesize;
short 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;
// TPDEF PTR FCN UCHAR TGetNameFcn
// TPDEF PTR FCN VOID TCrypt
//////////////////////////////////////////////////
// trigs
//////////////////////////////////////////////////
typedef struct TriggerStruct
{
int _tx;
int _ty;
int _tmsg;
int _tlvl;
} TriggerStruct;
//////////////////////////////////////////////////
// stores
//////////////////////////////////////////////////
typedef struct STextStruct
{
int _sx;
int _syoff;
char _sstr[128];
int _sjust;
char _sclr;
int _sline;
BOOL _ssel;
int _sval;
} STextStruct;
//////////////////////////////////////////////////
// wave
//////////////////////////////////////////////////
typedef struct MEMFILE
{
int end;
int offset;
int buf_len;
int dist;
int bytes_to_read;
char *buf;
int file;
} MEMFILE;
//////////////////////////////////////////////////
// plrmsg
//////////////////////////////////////////////////
typedef struct _plrmsg
{
int time;
char player;
char str[144];
} _plrmsg;
//////////////////////////////////////////////////
// capture
//////////////////////////////////////////////////
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;
//////////////////////////////////////////////////
// encrypt
//////////////////////////////////////////////////
typedef struct TDataInfo
{
unsigned char *pbInBuff;
unsigned char *pbInBuffEnd;
unsigned char *pbOutBuff;
unsigned char *pbOutBuffEnd;
unsigned char *pbSize;
} TDataInfo;
//////////////////////////////////////////////////
// codec
//////////////////////////////////////////////////
typedef struct CODECCHUNK {
DWORD checksum;
BYTE failed;
BYTE last_chunk_size;
WORD unused;
} CODECCHUNK;
//////////////////////////////////////////////////
// dthread
//////////////////////////////////////////////////
typedef struct TDeltaInfo {
TDeltaInfo *pNext;
int pnum;
BYTE cmd;
DWORD size;
BYTE data[4];
} TDeltaInfo;