diff --git a/structs.h b/structs.h index 2979b7f44..7002bbff9 100644 --- a/structs.h +++ b/structs.h @@ -1,3 +1,23 @@ +////////////////////////////////////////////////// +// items +////////////////////////////////////////////////// + +struct PLStruct +{ + const char *PLName; + char PLPower; + int PLParam1; + int PLParam2; + int PLMinLvl; + int PLIType; + int PLGOE; + int PLDouble; + int PLOk; + int PLMinVal; + int PLMaxVal; + int PLMultVal; +}; + struct UItemStruct { char *UIName; @@ -25,62 +45,6 @@ struct UItemStruct int UIParam12; }; -struct PLStruct -{ - const char *PLName; - char PLPower; - int PLParam1; - int PLParam2; - int PLMinLvl; - int PLIType; - int PLGOE; - int PLDouble; - int PLOk; - int PLMinVal; - int PLMaxVal; - int PLMultVal; -}; - -struct TextDataStruct -{ - char *txtstr; - int scrlltxt; - int txtspd; - int sfxnr; -}; - -struct RECT32 -{ - int x; - int y; - int w; - int h; -}; - -struct TSnd -{ - WAVEFORMATEX fmt; - int len; - int offset; - char *sound_path; - IDirectSoundBuffer *DSB; - int start_tc; -}; - -struct TSFX -{ - unsigned char bFlags; - char *pszName; - TSnd *pSnd; -}; - -struct TMenuItem -{ - unsigned int dwFlags; - char *pszStr; - void (__cdecl *fnMenu)(); /* fix, should have one arg */ -}; - struct ItemDataStruct { int iRnd; @@ -108,318 +72,318 @@ struct ItemDataStruct int iMaxValue; }; -struct MissileData -{ - unsigned char mName; - void (__fastcall *mAddProc)(int, int, int, int, int, int, int, int, int); - void (__fastcall *mProc)(int); - int mDraw; - unsigned char mType; - unsigned char mResist; - unsigned char mFileNum; - int mlSFX; - int miSFX; -}; - -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]; -}; - -struct MonsterData +struct ItemGetRecordStruct { - 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; + int nSeed; + unsigned short wCI; + int nIndex; + int dwTimestamp; }; -struct UniqMonstStruct +struct ItemStruct { - char mtype; - char *mName; - char *mMode; - 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; + 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 _isin; // 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 }; -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; -}; +////////////////////////////////////////////////// +// player +////////////////////////////////////////////////// -struct QuestData +struct PlayerStruct { - unsigned char _qdlvl; - char _qdmultlvl; - unsigned char _qlvlt; - unsigned char _qdtype; - unsigned char _qdrnd; - unsigned char _qslvl; - int _qflags; //__declspec(align(4)) /* unsigned char */ - int _qdmsg; - char *_qlstr; -}; - -struct SpellData -{ - unsigned char sName; - unsigned char sManaCost; - unsigned char sType; - char *sNameText; - char *sSkillText; - int sBookLvl; - int sStaffLvl; - int sTargeted; - unsigned char sTownSpell; - int sMinInt; - unsigned char sSFX; - unsigned char sMissiles[3]; - unsigned char sManaAdj; - unsigned char sMinMana; - int sStaffMin; - int sStaffMax; - int sBookCost; - int sStaffCost; -}; - -struct Coord -{ - char x; - char y; -}; - -struct RECT8 -{ - Coord x; - Coord y; -}; - -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; -}; - -struct ShadowStruct -{ - unsigned char strig; - unsigned char s1; - unsigned char s2; - unsigned char s3; - unsigned char nv1; - unsigned char nv2; - unsigned char nv3; -}; - -struct POINT32 /* remove this struct */ -{ - int x; - int y; -}; - -struct InvXY -{ - int X; - int Y; -}; - -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 _isin; // 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 + 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; + int _pTSplType; + int _pRSpell; + int _pRSplType; + int _pSBkSpell; + char _pSBkSplType; + char _pSplLvl[64]; + int remove_1; /* fix: remove and align 8 */ + int _pMemSpells[2]; + int _pAblSpells[2]; + int _pScrlSpells[2]; + int _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[17]; // NUMLEVELS + unsigned char _pSLvlVisited[10]; + char gap20F[9]; + 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; + int remove_2; /* fix: remove and align 8 */ + int _pISpells[2]; + 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; + unsigned char pBattleNet; + unsigned char pManaShield; + char bReserved[3]; + short wReserved[8]; + int 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; + int unused_54D4; }; -struct DeadStruct -{ - unsigned char *_deadData[8]; - int _deadFrame; - int field_24; // width - int field_28; // cel or fnum _deadtype? - int _deadtrans; -}; +////////////////////////////////////////////////// +// textdat +////////////////////////////////////////////////// -struct ScreenRow +struct TextDataStruct { - char col_unused_1[64]; - char pixels[640]; - char col_unused_2[64]; + char *txtstr; + int scrlltxt; + int txtspd; + int sfxnr; }; -struct Screen +////////////////////////////////////////////////// +// missiles +////////////////////////////////////////////////// + +// TPDEF PTR FCN VOID MIADDPRC +// TPDEF PTR FCN VOID MIPROC + +struct MissileData { - ScreenRow row_unused_1[160]; - ScreenRow row[480]; - ScreenRow row_unused_2[16]; + unsigned char mName; + void (__fastcall *mAddProc)(int, int, int, int, int, int, int, int, int); + void (__fastcall *mProc)(int); + int mDraw; + unsigned char mType; + unsigned char mResist; + unsigned char mFileNum; + int mlSFX; + int miSFX; }; -struct _SNETVERSIONDATA +struct MisFileData { - int size; - char *versionstring; - char *executablefile; - char *originalarchivefile; - char *patcharchivefile; + 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]; }; -struct LightListStruct +struct unk_missile_struct { - 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; + int field_0; + int field_4; + int field_8; }; struct MissileStruct @@ -470,6 +434,31 @@ struct MissileStruct int _miVar8; }; +////////////////////////////////////////////////// +// effects/sound +////////////////////////////////////////////////// + +struct TSnd +{ + WAVEFORMATEX fmt; + int len; + int offset; + char *sound_path; + IDirectSoundBuffer *DSB; + int start_tc; +}; + +struct TSFX +{ + unsigned char bFlags; + char *pszName; + TSnd *pSnd; +}; + +////////////////////////////////////////////////// +// monster +////////////////////////////////////////////////// + struct AnimStruct // note: wrong names { int CMem; // [unsigned] char * ?? @@ -478,6 +467,44 @@ struct AnimStruct // note: wrong names int Delay; }; +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; +}; + struct CMonster { unsigned char mtype; @@ -573,27 +600,205 @@ struct MonsterStruct // note: missing field _mAFNum MonsterData *MData; }; -struct DObjectStr +struct UniqMonstStruct +{ + char mtype; + char *mName; + char *mMode; + 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; +}; + +////////////////////////////////////////////////// +// objects +////////////////////////////////////////////////// + +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; +}; + +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; +}; + +////////////////////////////////////////////////// +// portal +////////////////////////////////////////////////// + +struct PortalStruct +{ + int open; + int x; + int y; + int level; + int ltype; + int setlvl; +}; + +////////////////////////////////////////////////// +// msg +////////////////////////////////////////////////// + +#pragma pack(push, 1) +struct TCmd +{ + unsigned char bCmd; +}; + +struct TCmdLoc +{ + unsigned char bCmd; + unsigned char x; + unsigned char y; +}; + +struct TCmdLocParam1 +{ + unsigned char bCmd; + unsigned char x; + unsigned char y; + unsigned short wParam1; +}; + +struct TCmdLocParam2 +{ + unsigned char bCmd; + unsigned char x; + unsigned char y; + unsigned short wParam1; + unsigned short wParam2; +}; + +struct TCmdLocParam3 +{ + unsigned char bCmd; + unsigned char x; + unsigned char y; + unsigned short wParam1; + unsigned short wParam2; + unsigned short wParam3; +}; + +struct TCmdParam1 +{ + unsigned char bCmd; + unsigned short wParam1; +}; + +struct TCmdParam2 +{ + unsigned char bCmd; + unsigned short wParam1; + unsigned short wParam2; +}; + +struct TCmdParam3 +{ + unsigned char bCmd; + unsigned short wParam1; + unsigned short wParam2; + unsigned short wParam3; +}; + +struct TCmdGolem { unsigned char bCmd; + unsigned char _mx; + unsigned char _my; + unsigned char _mdir; + unsigned char _menemy; + int _mhitpoints; + unsigned char _currlevel; }; -/* __declspec(align(1))*/ -#pragma pack(push, 1) -struct DMonsterStr +struct TCmdQuest { - char _mx; /* these might be unsigned */ - char _my; - char _mdir; - char _menemy; - char _mactive; - int _mhitpoints; + unsigned char bCmd; + unsigned char q; + unsigned char qstate; + unsigned char qlog; + unsigned char qvar1; }; -#pragma pack(pop) -/* __declspec(align(2))*/ -#pragma pack(push, 1) -struct TCmdPItem +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; +}; + +struct TCmdPItem { char bCmd; /* unsigned */ unsigned char x; @@ -609,326 +814,176 @@ struct TCmdPItem unsigned short wValue; int dwBuff; }; -#pragma pack(pop) -/* __declspec(align(1))*/ -struct DLevel +struct TCmdChItem { - TCmdPItem item[MAXITEMS]; - DObjectStr object[MAXOBJECTS]; - DMonsterStr monster[MAXMONSTERS]; + unsigned char bCmd; + unsigned char bLoc; + unsigned short wIndx; + unsigned short wCI; + int dwSeed; + unsigned char bId; }; -struct DPortal +struct TCmdDelItem { - unsigned char x; - unsigned char y; - unsigned char level; - unsigned char ltype; - unsigned char setlvl; + unsigned char bCmd; + unsigned char bLoc; }; -struct MultiQuests +struct TCmdDamage { - unsigned char qstate; - unsigned char qlog; - unsigned char qvar1; + unsigned char bCmd; + unsigned char bPlr; + int dwDam; }; -struct DJunk +struct TCmdPlrInfoHdr { - DPortal portal[MAXPORTAL]; - MultiQuests quests[MAXMULTIQUESTS]; + unsigned char bCmd; + unsigned short wOffset; + unsigned short wBytes; }; -/* __declspec(align(1)) */ -#pragma pack(push, 1) -struct PkItemStruct +struct TCmdString { - int iSeed; - short iCreateInfo; - short idx; - char bId; - char bDur; - char bMDur; - char bCh; - char bMCh; - short wValue; - int dwBuff; + unsigned char bCmd; + char str[80]; +}; + +struct TFakeCmdPlr +{ + unsigned char bCmd; + unsigned char bPlr; +}; + +struct TFakeDropPlr +{ + unsigned char bCmd; + unsigned char bPlr; + int dwReason; }; #pragma pack(pop) -/* __declspec(align(2)) */ +struct TSyncHeader /* todo: packed */ +{ + 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; +}; + #pragma pack(push, 1) -struct PkPlayerStruct +struct TSyncMonster { - 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; - 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]; - int pDiabloKillLevel; - int dwReserved[7]; + unsigned char _mndx; + unsigned char _mx; + unsigned char _my; + unsigned char _menemy; + unsigned char _mdelta; }; -#pragma pack(pop) -struct ObjectStruct +struct TPktHdr { - 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; + 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; +}; + +struct TPkt +{ + TPktHdr hdr; + unsigned char body[493]; +}; + +struct DMonsterStr +{ + char _mx; /* these might be unsigned */ + char _my; + char _mdir; + char _menemy; + char _mactive; + int _mhitpoints; +}; + +struct DObjectStr +{ + unsigned char bCmd; +}; + +struct DLevel +{ + TCmdPItem item[MAXITEMS]; + DObjectStr object[MAXOBJECTS]; + DMonsterStr monster[MAXMONSTERS]; +}; + +struct LocalLevel +{ + unsigned char automapsv[40][40]; }; -struct PATHNODE +struct DPortal { - char f; - char h; - short g; - int x; - int y; - struct PATHNODE *Parent; - struct PATHNODE *Child[8]; - struct PATHNODE *NextNode; + unsigned char x; + unsigned char y; + unsigned char level; + unsigned char ltype; + unsigned char setlvl; }; -struct PlayerStruct +struct MultiQuests { - 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; - int _pTSplType; - int _pRSpell; - int _pRSplType; - int _pSBkSpell; - char _pSBkSplType; - char _pSplLvl[64]; - int remove_1; - int _pMemSpells[2]; // __declspec(align(8)) - int _pAblSpells[2]; - int _pScrlSpells[2]; - int _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[17]; // NUMLEVELS - unsigned char _pSLvlVisited[10]; - char gap20F[9]; - 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; - int remove_2; - int _pISpells[2]; //__declspec(align(8)) - 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; - unsigned char pBattleNet; - unsigned char pManaShield; - char bReserved[3]; - short wReserved[8]; - int 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; - int unused_54D4; + unsigned char qstate; + unsigned char qlog; + unsigned char qvar1; +}; + +struct DJunk +{ + DPortal portal[MAXPORTAL]; + MultiQuests quests[MAXMULTIQUESTS]; +}; +#pragma pack(pop) + +struct TMegaPkt +{ + TMegaPkt *pNext; + int dwSpaceLeft; + unsigned char data[32000]; }; +////////////////////////////////////////////////// +// quests +////////////////////////////////////////////////// + struct QuestStruct { unsigned char _qlevel; @@ -945,32 +1000,64 @@ struct QuestStruct int _qlog; /* char */ }; -struct SHA1Context +struct QuestData { - int state[5]; - int count[2]; - char buffer[64]; + 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; }; -struct ThemeStruct -{ - char ttype; /* aligned 4 */ - int ttval; -}; +////////////////////////////////////////////////// +// gamemenu/gmenu +////////////////////////////////////////////////// -struct TMsgHeader +// TPDEF PTR FCN VOID TMenuFcn + +struct TMenuItem { - char next; - char start_tc; - char len; + unsigned int dwFlags; + char *pszStr; + void (__cdecl *fnMenu)(); /* fix, should have one arg */ }; -struct TMsg +// TPDEF PTR FCN VOID TMenuUpdateFcn + +////////////////////////////////////////////////// +// spells +////////////////////////////////////////////////// + +struct SpellData { - TMsgHeader hdr; - char data; + unsigned char sName; + unsigned char sManaCost; + unsigned char sType; + char *sNameText; + char *sSkillText; + int sBookLvl; + int sStaffLvl; + int sTargeted; + unsigned char sTownSpell; + int sMinInt; + unsigned char sSFX; + unsigned char sMissiles[3]; + unsigned char sManaAdj; + unsigned char sMinMana; + int sStaffMin; + int sStaffMax; + int sBookCost; + int sStaffCost; }; +////////////////////////////////////////////////// +// towners +////////////////////////////////////////////////// + struct TNQ { unsigned char _qsttype; @@ -1015,469 +1102,488 @@ struct TownerStruct unsigned char *_tNData; }; -struct _SNETUIDATA -{ - int size; - int uiflags; - HWND parentwindow; - void (__cdecl *artcallback)(); - void (__cdecl *authcallback)(); - void (__cdecl *createcallback)(); - void (__cdecl *drawdesccallback)(); - void (__cdecl *selectedcallback)(); - void (__cdecl *messageboxcallback)(); - void (__cdecl *soundcallback)(); - void (__cdecl *statuscallback)(); - void (__cdecl *getdatacallback)(); - void (__cdecl *categorycallback)(); - void (__cdecl *categorylistcallback)(); - void (__cdecl *newaccountcallback)(); - void (__cdecl *profilecallback)(); - int profilefields; - void (__cdecl *profilebitmapcallback)(); - void (__cdecl *selectnamecallback)(); - void (__cdecl *changenamecallback)(); -}; - -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; -}; - -struct _uiheroinfo -{ - _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; -}; - -struct _HASHENTRY +struct QuestTalkData { - int hashcheck[2]; - int lcid; - int block; + 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; }; -struct _BLOCKENTRY -{ - int offset; - int sizealloc; - int sizefile; - int flags; -}; +////////////////////////////////////////////////// +// gendung +////////////////////////////////////////////////// -/* __declspec(align(2)) */ -#pragma pack(push, 1) -struct TCmdGItem +struct ScrollStruct { - 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; + int _sxoff; + int _syoff; + int _sdx; + int _sdy; + int _sdir; }; -#pragma pack(pop) -struct TCmdLoc +struct THEME_LOC { - unsigned char bCmd; - unsigned char x; - unsigned char y; + int x; + int y; + int ttval; + int width; + int height; }; -/* __declspec(align(1)) */ -#pragma pack(push, 1) -struct TCmdParam1 -{ - unsigned char bCmd; - unsigned short wParam1; -}; -#pragma pack(pop) +////////////////////////////////////////////////// +// drlg +////////////////////////////////////////////////// -/* __declspec(align(1)) */ -#pragma pack(push, 1) -struct TCmdLocParam1 +struct ShadowStruct { - unsigned char bCmd; - unsigned char x; - unsigned char y; - unsigned short wParam1; + unsigned char strig; + unsigned char s1; + unsigned char s2; + unsigned char s3; + unsigned char nv1; + unsigned char nv2; + unsigned char nv3; }; -#pragma pack(pop) -/* __declspec(align(1)) */ -#pragma pack(push, 1) -struct TPktHdr +struct HALLNODE { - 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; + int nHallx1; + int nHally1; + int nHallx2; + int nHally2; + int nHalldir; + HALLNODE *pNext; }; -#pragma pack(pop) -struct _SNETEVENT +struct ROOMNODE { - int eventid; - int playerid; - void *data; - int databytes; + int nRoomx1; + int nRoomy1; + int nRoomx2; + int nRoomy2; + int nRoomDest; }; -struct _SNETPLAYERDATA -{ - int size; - char *playername; - char *playerdescription; - int reserved; -}; +////////////////////////////////////////////////// +// themes +////////////////////////////////////////////////// -struct _SNETCAPS +struct ThemeStruct { - int size; - int flags; - int maxmessagesize; - int maxqueuesize; - int maxplayers; - int bytessec; - int latencyms; - int defaultturnssec; - int defaultturnsintransit; + char ttype; /* aligned 4 */ + int ttval; }; -struct TMPQHeader // _FILEHEADER -{ - int dwID; - int dwHeaderSize; - int dwArchiveSize; - short wFormatVersion; - short wSectorSize; - int dwHashTablePos; - int dwBlockTablePos; - int dwHashTableSize; - int dwBlockTableSize; - char field_20[72]; -}; +////////////////////////////////////////////////// +// inv +////////////////////////////////////////////////// -struct _uidefaultstats +struct InvXY { - unsigned short strength; - unsigned short magic; - unsigned short dexterity; - unsigned short vitality; + int X; + int Y; }; -/* __declspec(align(1)) */ -#pragma pack(push, 1) -struct TCmdLocParam2 -{ - unsigned char bCmd; - unsigned char x; - unsigned char y; - unsigned short wParam1; - unsigned short wParam2; -}; -#pragma pack(pop) +////////////////////////////////////////////////// +// lighting +////////////////////////////////////////////////// -/* __declspec(align(1)) */ -#pragma pack(push, 1) -struct TCmdLocParam3 +struct LightListStruct { - unsigned char bCmd; - unsigned char x; - unsigned char y; - unsigned short wParam1; - unsigned short wParam2; - unsigned short wParam3; + 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; }; -#pragma pack(pop) -/* __declspec(align(1)) */ -#pragma pack(push, 1) -struct TCmdParam2 +////////////////////////////////////////////////// +// dead +////////////////////////////////////////////////// + +struct DeadStruct { - unsigned char bCmd; - unsigned short wParam1; - unsigned short wParam2; + unsigned char *_deadData[8]; + int _deadFrame; + int field_24; // width + int field_28; // cel or fnum _deadtype? + int _deadtrans; }; -#pragma pack(pop) -/* __declspec(align(1)) */ -#pragma pack(push, 1) -struct TCmdParam3 +////////////////////////////////////////////////// +// dx +////////////////////////////////////////////////// + +struct ScreenRow { - unsigned char bCmd; - unsigned short wParam1; - unsigned short wParam2; - unsigned short wParam3; + char col_unused_1[64]; + char pixels[640]; + char col_unused_2[64]; }; -#pragma pack(pop) -struct TCmd +struct Screen /* create union for work data vs visible data */ { - unsigned char bCmd; + ScreenRow row_unused_1[160]; + ScreenRow row[480]; + ScreenRow row_unused_2[16]; }; -/* __declspec(align(2)) */ -#pragma pack(push, 1) -struct TCmdGolem +////////////////////////////////////////////////// +// storm +////////////////////////////////////////////////// + +// TPDEF PTR FCN VOID SEVTHANDLER + +// TPDEF PTR FCN UCHAR SMSGIDLEPROC +// TPDEF PTR FCN VOID SMSGHANDLER + +struct _SNETCAPS { - unsigned char bCmd; - unsigned char _mx; - unsigned char _my; - unsigned char _mdir; - unsigned char _menemy; - int _mhitpoints; - unsigned char _currlevel; + int size; + int flags; + int maxmessagesize; + int maxqueuesize; + int maxplayers; + int bytessec; + int latencyms; + int defaultturnssec; + int defaultturnsintransit; }; -#pragma pack(pop) -struct TCmdQuest +struct _SNETEVENT { - unsigned char bCmd; - unsigned char q; - unsigned char qstate; - unsigned char qlog; - unsigned char qvar1; + int eventid; + int playerid; + void *data; + int databytes; }; -/* __declspec(align(1)) */ -#pragma pack(push, 1) -struct TCmdChItem +// 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 + +struct _SNETPLAYERDATA { - unsigned char bCmd; - unsigned char bLoc; - unsigned short wIndx; - unsigned short wCI; - int dwSeed; - unsigned char bId; + int size; + char *playername; + char *playerdescription; + int reserved; }; -#pragma pack(pop) -struct TCmdDelItem +struct _SNETPROGRAMDATA { - unsigned char bCmd; - unsigned char bLoc; + 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; }; -/* __declspec(align(2)) */ -#pragma pack(push, 1) -struct TCmdDamage +struct _SNETUIDATA { - unsigned char bCmd; - unsigned char bPlr; - int dwDam; + int size; + int uiflags; + HWND parentwindow; + void (__cdecl *artcallback)(); + void (__cdecl *authcallback)(); + void (__cdecl *createcallback)(); + void (__cdecl *drawdesccallback)(); + void (__cdecl *selectedcallback)(); + void (__cdecl *messageboxcallback)(); + void (__cdecl *soundcallback)(); + void (__cdecl *statuscallback)(); + void (__cdecl *getdatacallback)(); + void (__cdecl *categorycallback)(); + void (__cdecl *categorylistcallback)(); + void (__cdecl *newaccountcallback)(); + void (__cdecl *profilecallback)(); + int profilefields; + void (__cdecl *profilebitmapcallback)(); + void (__cdecl *selectnamecallback)(); + void (__cdecl *changenamecallback)(); }; -#pragma pack(pop) -struct TFakeCmdPlr +struct _SNETVERSIONDATA { - unsigned char bCmd; - unsigned char bPlr; + int size; + char *versionstring; + char *executablefile; + char *originalarchivefile; + char *patcharchivefile; }; -/* __declspec(align(2)) */ -#pragma pack(push, 1) -struct TFakeDropPlr +// TPDEF PTR FCN UCHAR SNETSPIBIND +// TPDEF PTR FCN UCHAR SNETSPIQUERY + +////////////////////////////////////////////////// +// diabloui +////////////////////////////////////////////////// + +// TPDEF PTR FCN VOID PLAYSND + +struct _gamedata { - unsigned char bCmd; - unsigned char bPlr; - int dwReason; + int dwSeed; + unsigned char bDiff; }; -#pragma pack(pop) -struct TCmdString +struct _uidefaultstats { - unsigned char bCmd; - char str[80]; + unsigned short strength; + unsigned short magic; + unsigned short dexterity; + unsigned short vitality; }; -/* __declspec(align(1)) */ -#pragma pack(push, 1) -struct TCmdPlrInfoHdr +struct _uiheroinfo { - unsigned char bCmd; - unsigned short wOffset; - unsigned short wBytes; + _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; }; -#pragma pack(pop) -struct PortalStruct +// 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) +struct PkItemStruct { - int open; - int x; - int y; - int level; - int ltype; - int setlvl; + int iSeed; + short iCreateInfo; + short idx; + char bId; + char bDur; + char bMDur; + char bCh; + char bMCh; + short wValue; + int dwBuff; }; -struct CircleCoord +struct PkPlayerStruct { - unsigned char n_1; - Coord delta_1[1]; - unsigned char n_4; - Coord delta_4[4]; - unsigned char n_16; - Coord delta_16[16]; - unsigned char n_24; - Coord delta_24[24]; - unsigned char n_32; - Coord delta_32[32]; - unsigned char n_40; - Coord delta_40[40]; - unsigned char n_48; - Coord delta_48[48]; - unsigned char n_56; - Coord delta_56[56]; - unsigned char n_64; - Coord delta_64[64]; - unsigned char n_72; - Coord delta_72[72]; - unsigned char n_80; - Coord delta_80[80]; - unsigned char n_88; - Coord delta_88[88]; - unsigned char n_96; - Coord delta_96[96]; - unsigned char n_104; - Coord delta_104[104]; - unsigned char n_112; - Coord delta_112[112]; - unsigned char n_120; - Coord delta_120[120]; - unsigned char n_128; - Coord delta_128[128]; - unsigned char n_136; - Coord delta_136[136]; - unsigned char n_144; - Coord delta_144[144]; + 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; + 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]; + int pDiabloKillLevel; + int dwReserved[7]; }; +#pragma pack(pop) -struct TriggerStruct -{ - int _tx; - int _ty; - int _tmsg; - int _tlvl; -}; +////////////////////////////////////////////////// +// path +////////////////////////////////////////////////// -struct THEME_LOC +struct PATHNODE { + char f; + char h; + short g; int x; int y; - int ttval; - int width; - int height; + struct PATHNODE *Parent; + struct PATHNODE *Child[8]; + struct PATHNODE *NextNode; }; -struct STextStruct +// TPDEF PTR FCN UCHAR CHECKFUNC1 + +// TPDEF PTR FCN UCHAR CHECKFUNC + +////////////////////////////////////////////////// +// sha +////////////////////////////////////////////////// + +struct SHA1Context { - int _sx; - int _syoff; - char _sstr[128]; - int _sjust; - int _sclr; - int _sline; - int _ssel; - int _sval; + int state[5]; + int count[2]; + char buffer[64]; }; -struct HALLNODE +////////////////////////////////////////////////// +// tmsg +////////////////////////////////////////////////// + +struct TMsgHeader { - int nHallx1; - int nHally1; - int nHallx2; - int nHally2; - int nHalldir; - HALLNODE *pNext; + char next; + char start_tc; + char len; }; -struct ROOMNODE +struct TMsg { - int nRoomx1; - int nRoomy1; - int nRoomx2; - int nRoomy2; - int nRoomDest; + TMsgHeader hdr; + char data; }; -struct LocalLevel +////////////////////////////////////////////////// +// mpqapi +////////////////////////////////////////////////// + +struct TMPQHeader // _FILEHEADER { - unsigned char automapsv[40][40]; + int dwID; + int dwHeaderSize; + int dwArchiveSize; + short wFormatVersion; + short wSectorSize; + int dwHashTablePos; + int dwBlockTablePos; + int dwHashTableSize; + int dwBlockTableSize; + char field_20[72]; }; -struct TMegaPkt +struct _HASHENTRY { - TMegaPkt *pNext; - int dwSpaceLeft; - unsigned char data[32000]; + int hashcheck[2]; + int lcid; + int block; }; -struct ScrollStruct +struct _BLOCKENTRY { - int _sxoff; - int _syoff; - int _sdx; - int _sdy; - int _sdir; + int offset; + int sizealloc; + int sizefile; + int flags; }; -struct _gamedata +// TPDEF PTR FCN UCHAR TGetNameFcn + +// TPDEF PTR FCN VOID TCrypt + +////////////////////////////////////////////////// +// trigs +////////////////////////////////////////////////// + +struct TriggerStruct { - int dwSeed; - unsigned char bDiff; + int _tx; + int _ty; + int _tmsg; + int _tlvl; }; -struct TPkt +////////////////////////////////////////////////// +// stores +////////////////////////////////////////////////// + +struct STextStruct { - TPktHdr hdr; - unsigned char body[493]; + int _sx; + int _syoff; + char _sstr[128]; + int _sjust; + int _sclr; + int _sline; + int _ssel; + int _sval; }; +////////////////////////////////////////////////// +// wave +////////////////////////////////////////////////// + struct MEMFILE { int end; @@ -1489,6 +1595,10 @@ struct MEMFILE int file; }; +////////////////////////////////////////////////// +// plrmsg +////////////////////////////////////////////////// + struct _plrmsg { int time; @@ -1496,56 +1606,9 @@ struct _plrmsg char str[144]; }; -struct ItemGetRecordStruct -{ - int nSeed; - unsigned short wCI; - int nIndex; - int dwTimestamp; -}; - -struct unk_missile_struct -{ - int field_0; - int field_4; - int field_8; -}; - -struct TSyncMonster -{ - unsigned char _mndx; - unsigned char _mx; - unsigned char _my; - unsigned char _menemy; - unsigned char _mdelta; -}; - -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; -}; +////////////////////////////////////////////////// +// capture +////////////////////////////////////////////////// struct PCXHeader { @@ -1565,22 +1628,104 @@ struct PCXHeader char padding[54]; }; -typedef struct +////////////////////////////////////////////////// +// encrypt +////////////////////////////////////////////////// + +struct TDataInfo { - unsigned char * pbInBuff; // Pointer to input data buffer - unsigned char * pbInBuffEnd; // End of the input buffer - unsigned char * pbOutBuff; // Pointer to output data buffer - unsigned char * pbOutBuffEnd; // Pointer to output data buffer - unsigned char * pbSize; -} TDataInfo; + unsigned char *pbInBuff; + unsigned char *pbInBuffEnd; + unsigned char *pbOutBuff; + unsigned char *pbOutBuffEnd; + unsigned char *pbSize; +}; + +////////////////////////////////////////////////// +// msgcmd +////////////////////////////////////////////////// -typedef struct { +struct ServerCommand +{ int field_0; int field_4; char command[128]; -} ServerCommand; +}; -typedef struct ChatCmd { +struct ChatCmd +{ struct ChatCmd *next; ServerCommand *extern_msgs[2]; -} ChatCmd; +}; + +////////////////////////////////////////////////// +// garbage (should be removed) +////////////////////////////////////////////////// + +struct RECT32 +{ + int x; + int y; + int w; + int h; +}; + +struct POINT32 +{ + int x; + int y; +}; + +struct Coord +{ + char x; + char y; +}; + +struct RECT8 +{ + Coord x; + Coord y; +}; + +struct CircleCoord +{ + unsigned char n_1; + Coord delta_1[1]; + unsigned char n_4; + Coord delta_4[4]; + unsigned char n_16; + Coord delta_16[16]; + unsigned char n_24; + Coord delta_24[24]; + unsigned char n_32; + Coord delta_32[32]; + unsigned char n_40; + Coord delta_40[40]; + unsigned char n_48; + Coord delta_48[48]; + unsigned char n_56; + Coord delta_56[56]; + unsigned char n_64; + Coord delta_64[64]; + unsigned char n_72; + Coord delta_72[72]; + unsigned char n_80; + Coord delta_80[80]; + unsigned char n_88; + Coord delta_88[88]; + unsigned char n_96; + Coord delta_96[96]; + unsigned char n_104; + Coord delta_104[104]; + unsigned char n_112; + Coord delta_112[112]; + unsigned char n_120; + Coord delta_120[120]; + unsigned char n_128; + Coord delta_128[128]; + unsigned char n_136; + Coord delta_136[136]; + unsigned char n_144; + Coord delta_144[144]; +};