You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1687 lines
30 KiB
1687 lines
30 KiB
////////////////////////////////////////////////// |
|
// 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; |
|
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; |
|
}; |
|
|
|
struct ItemDataStruct |
|
{ |
|
int iRnd; |
|
char iClass; |
|
char iLoc; |
|
int iCurs; |
|
char itype; |
|
char iItemId; |
|
char *iName; |
|
char *iSName; |
|
int iMinMLvl; |
|
int iDurability; |
|
int iMinDam; |
|
int iMaxDam; |
|
int iMinAC; |
|
int iMaxAC; |
|
char iMinStr; |
|
char iMinMag; |
|
char iMinDex; |
|
// item_special_effect |
|
int iFlags; |
|
// item_misc_id |
|
int iMiscId; |
|
// spell_id |
|
int iSpell; |
|
int iUsable; |
|
int iValue; |
|
int iMaxValue; |
|
}; |
|
|
|
struct ItemGetRecordStruct |
|
{ |
|
int nSeed; |
|
unsigned short wCI; |
|
int nIndex; |
|
int dwTimestamp; |
|
}; |
|
|
|
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; |
|
BOOL _iIdentified; |
|
char _iMagical; |
|
char _iName[64]; |
|
char _iIName[64]; |
|
char _iLoc; |
|
// item_class enum |
|
char _iClass; |
|
int _iCurs; |
|
int _ivalue; |
|
int _iIvalue; |
|
int _iMinDam; |
|
int _iMaxDam; |
|
int _iAC; |
|
// item_special_effect |
|
int _iFlags; |
|
// item_misc_id |
|
int _iMiscId; |
|
// spell_id |
|
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; // _oldlight or _iInvalid |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// player |
|
////////////////////////////////////////////////// |
|
|
|
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; |
|
int _pTSplType; |
|
int _pRSpell; |
|
// enum spell_type |
|
char _pRSplType; |
|
int _pSBkSpell; |
|
char _pSBkSplType; |
|
char _pSplLvl[64]; |
|
union { |
|
unsigned __int64 _pMemSpells64; |
|
int _pMemSpells[2]; |
|
}; |
|
union { |
|
unsigned __int64 _pAblSpells64; |
|
int _pAblSpells[2]; |
|
}; |
|
union { |
|
unsigned __int64 _pScrlSpells64; |
|
int _pScrlSpells[2]; |
|
}; |
|
UCHAR _pSpellFlags; |
|
int _pSplHotKey[4]; |
|
char _pSplTHotKey[4]; |
|
int _pwtype; |
|
unsigned char _pBlockFlag; |
|
unsigned char _pInvincible; |
|
char _pLightRad; |
|
unsigned char _pLvlChanging; |
|
char _pName[32]; |
|
// plr_class enum value. |
|
// TODO: this could very well be `enum plr_class _pClass` |
|
// since there are 3 bytes of alingment after this field. |
|
// it could just be that the compiler optimized away all accesses to |
|
// the higher bytes by using byte instructions, since all possible values |
|
// of plr_class fit into one byte. |
|
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[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; |
|
union { |
|
unsigned __int64 _pISpells64; |
|
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; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// textdat |
|
////////////////////////////////////////////////// |
|
|
|
struct TextDataStruct |
|
{ |
|
char *txtstr; |
|
int scrlltxt; |
|
int txtspd; |
|
int sfxnr; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// missiles |
|
////////////////////////////////////////////////// |
|
|
|
// TPDEF PTR FCN VOID MIADDPRC |
|
// TPDEF PTR FCN VOID MIPROC |
|
|
|
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 ChainStruct |
|
{ |
|
int idx; |
|
int _mitype; |
|
int _mirange; |
|
}; |
|
|
|
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; |
|
int _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; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// 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 |
|
{ |
|
unsigned char *CMem; |
|
unsigned char *Frames[8]; // probably Data[8] |
|
int Rate; |
|
int Delay; |
|
}; |
|
|
|
struct MonsterData |
|
{ |
|
int flags; // width? |
|
int mType; |
|
char *GraphicType; |
|
BOOL 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; |
|
unsigned char mArmorClass; |
|
char mMonstClass; |
|
unsigned short mMagicRes; |
|
unsigned short mMagicRes2; |
|
unsigned short mTreasure; |
|
char mSelFlag; |
|
unsigned short mExp; |
|
}; |
|
|
|
struct CMonster |
|
{ |
|
unsigned char mtype; |
|
// TODO: Add enum for place flags |
|
unsigned char mPlaceFlags; |
|
AnimStruct Anims[6]; |
|
TSnd *Snds[8]; |
|
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; |
|
// A TRN file contains a sequence of colour transitions, represented |
|
// as indexes into a palette. (a 256 byte array of palette indices) |
|
unsigned char *trans_file; |
|
}; |
|
|
|
struct MonsterStruct // note: missing field _mAFNum |
|
{ |
|
int _mMTidx; |
|
int _mmode; /* MON_MODE */ |
|
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; |
|
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; |
|
char _msquelch; /* unsigned char */ |
|
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; |
|
unsigned char mArmorClass; |
|
char falign_CB; |
|
unsigned short mMagicRes; |
|
int mtalkmsg; |
|
unsigned char leader; |
|
unsigned char leaderflag; |
|
unsigned char unpackfilesize; |
|
unsigned char mlid; |
|
char *mName; |
|
CMonster *MType; |
|
MonsterData *MData; |
|
}; |
|
|
|
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; |
|
BOOL 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 |
|
BOOL _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; |
|
}; |
|
|
|
struct TCmdQuest |
|
{ |
|
unsigned char bCmd; |
|
unsigned char q; |
|
unsigned char qstate; |
|
unsigned char qlog; |
|
unsigned char qvar1; |
|
}; |
|
|
|
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; |
|
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; |
|
}; |
|
|
|
struct TCmdChItem |
|
{ |
|
unsigned char bCmd; |
|
unsigned char bLoc; |
|
unsigned short wIndx; |
|
unsigned short wCI; |
|
int dwSeed; |
|
unsigned char bId; |
|
}; |
|
|
|
struct TCmdDelItem |
|
{ |
|
unsigned char bCmd; |
|
unsigned char bLoc; |
|
}; |
|
|
|
struct TCmdDamage |
|
{ |
|
unsigned char bCmd; |
|
unsigned char bPlr; |
|
int dwDam; |
|
}; |
|
|
|
struct TCmdPlrInfoHdr |
|
{ |
|
unsigned char bCmd; |
|
unsigned short wOffset; |
|
unsigned short wBytes; |
|
}; |
|
|
|
struct TCmdString |
|
{ |
|
unsigned char bCmd; |
|
char str[80]; |
|
}; |
|
|
|
struct TFakeCmdPlr |
|
{ |
|
unsigned char bCmd; |
|
unsigned char bPlr; |
|
}; |
|
|
|
struct TFakeDropPlr |
|
{ |
|
unsigned char bCmd; |
|
unsigned char bPlr; |
|
int dwReason; |
|
}; |
|
|
|
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; |
|
}; |
|
|
|
struct TSyncMonster |
|
{ |
|
unsigned char _mndx; |
|
unsigned char _mx; |
|
unsigned char _my; |
|
unsigned char _menemy; |
|
unsigned char _mdelta; |
|
}; |
|
|
|
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; |
|
}; |
|
|
|
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 DPortal |
|
{ |
|
unsigned char x; |
|
unsigned char y; |
|
unsigned char level; |
|
unsigned char ltype; |
|
unsigned char setlvl; |
|
}; |
|
|
|
struct MultiQuests |
|
{ |
|
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; |
|
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 */ |
|
}; |
|
|
|
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; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// gamemenu/gmenu |
|
////////////////////////////////////////////////// |
|
|
|
// TPDEF PTR FCN VOID TMenuFcn |
|
|
|
struct TMenuItem |
|
{ |
|
unsigned int dwFlags; |
|
char *pszStr; |
|
void (__cdecl *fnMenu)(); /* fix, should have one arg */ |
|
}; |
|
|
|
// TPDEF PTR FCN VOID TMenuUpdateFcn |
|
|
|
////////////////////////////////////////////////// |
|
// spells |
|
////////////////////////////////////////////////// |
|
|
|
struct SpellData |
|
{ |
|
unsigned char sName; |
|
unsigned char sManaCost; |
|
unsigned char sType; |
|
char *sNameText; |
|
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; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// towners |
|
////////////////////////////////////////////////// |
|
|
|
struct TNQ |
|
{ |
|
unsigned char _qsttype; |
|
unsigned char _qstmsg; |
|
unsigned char _qstmsgact; |
|
}; |
|
|
|
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; |
|
int _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; |
|
}; |
|
|
|
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; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// gendung |
|
////////////////////////////////////////////////// |
|
|
|
struct ScrollStruct |
|
{ |
|
int _sxoff; |
|
int _syoff; |
|
int _sdx; |
|
int _sdy; |
|
int _sdir; |
|
}; |
|
|
|
struct THEME_LOC |
|
{ |
|
int x; |
|
int y; |
|
int ttval; |
|
int width; |
|
int height; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// drlg |
|
////////////////////////////////////////////////// |
|
|
|
struct ShadowStruct |
|
{ |
|
unsigned char strig; |
|
unsigned char s1; |
|
unsigned char s2; |
|
unsigned char s3; |
|
unsigned char nv1; |
|
unsigned char nv2; |
|
unsigned char nv3; |
|
}; |
|
|
|
struct HALLNODE |
|
{ |
|
int nHallx1; |
|
int nHally1; |
|
int nHallx2; |
|
int nHally2; |
|
int nHalldir; |
|
HALLNODE *pNext; |
|
}; |
|
|
|
struct ROOMNODE |
|
{ |
|
int nRoomx1; |
|
int nRoomy1; |
|
int nRoomx2; |
|
int nRoomy2; |
|
int nRoomDest; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// themes |
|
////////////////////////////////////////////////// |
|
|
|
struct ThemeStruct |
|
{ |
|
char ttype; /* aligned 4 */ |
|
int ttval; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// inv |
|
////////////////////////////////////////////////// |
|
|
|
struct InvXY |
|
{ |
|
int X; |
|
int Y; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// lighting |
|
////////////////////////////////////////////////// |
|
|
|
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; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// dead |
|
////////////////////////////////////////////////// |
|
|
|
struct DeadStruct |
|
{ |
|
unsigned char *_deadData[8]; |
|
int _deadFrame; |
|
int _deadWidth; |
|
int _deadWidth2; |
|
int _deadtrans; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// dx |
|
////////////////////////////////////////////////// |
|
|
|
struct ScreenRow |
|
{ |
|
char col_unused_1[64]; |
|
char pixels[640]; |
|
char col_unused_2[64]; |
|
}; |
|
|
|
struct Screen /* create union for work data vs visible data */ |
|
{ |
|
ScreenRow row_unused_1[160]; |
|
ScreenRow row[480]; |
|
ScreenRow row_unused_2[16]; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// storm |
|
////////////////////////////////////////////////// |
|
|
|
// TPDEF PTR FCN VOID SEVTHANDLER |
|
|
|
// TPDEF PTR FCN UCHAR SMSGIDLEPROC |
|
// TPDEF PTR FCN VOID SMSGHANDLER |
|
|
|
struct _SNETCAPS |
|
{ |
|
int size; |
|
int flags; |
|
int maxmessagesize; |
|
int maxqueuesize; |
|
int maxplayers; |
|
int bytessec; |
|
int latencyms; |
|
int defaultturnssec; |
|
int defaultturnsintransit; |
|
}; |
|
|
|
struct _SNETEVENT |
|
{ |
|
int eventid; |
|
int playerid; |
|
void *data; |
|
int databytes; |
|
}; |
|
|
|
// 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 |
|
{ |
|
int size; |
|
char *playername; |
|
char *playerdescription; |
|
int reserved; |
|
}; |
|
|
|
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 _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 _SNETVERSIONDATA |
|
{ |
|
int size; |
|
char *versionstring; |
|
char *executablefile; |
|
char *originalarchivefile; |
|
char *patcharchivefile; |
|
}; |
|
|
|
// TPDEF PTR FCN UCHAR SNETSPIBIND |
|
// TPDEF PTR FCN UCHAR SNETSPIQUERY |
|
|
|
////////////////////////////////////////////////// |
|
// diabloui |
|
////////////////////////////////////////////////// |
|
|
|
// TPDEF PTR FCN VOID PLAYSND |
|
|
|
struct _gamedata |
|
{ |
|
int dwSeed; |
|
unsigned char bDiff; |
|
}; |
|
|
|
struct _uidefaultstats |
|
{ |
|
unsigned short strength; |
|
unsigned short magic; |
|
unsigned short dexterity; |
|
unsigned short vitality; |
|
}; |
|
|
|
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; |
|
}; |
|
|
|
// 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 iSeed; |
|
short iCreateInfo; |
|
short idx; |
|
char bId; |
|
char bDur; |
|
char bMDur; |
|
char bCh; |
|
char bMCh; |
|
short wValue; |
|
int dwBuff; |
|
}; |
|
|
|
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[MAX_SPELLS]; |
|
int pMemSpells; /* __int64 */ |
|
int pMemSpells2; |
|
PkItemStruct InvBody[7]; |
|
PkItemStruct InvList[40]; |
|
char InvGrid[40]; |
|
char _pNumInv; |
|
PkItemStruct SpdList[MAXBELTITEMS]; |
|
char pTownWarps; |
|
char pDungMsgs; |
|
char pLvlLoad; |
|
char pBattleNet; |
|
char pManaShield; |
|
char bReserved[3]; |
|
short wReserved[8]; |
|
int pDiabloKillLevel; |
|
int dwReserved[7]; |
|
}; |
|
#pragma pack(pop) |
|
|
|
////////////////////////////////////////////////// |
|
// path |
|
////////////////////////////////////////////////// |
|
|
|
struct PATHNODE |
|
{ |
|
char f; |
|
char h; |
|
short g; |
|
int x; |
|
int y; |
|
struct PATHNODE *Parent; |
|
struct PATHNODE *Child[8]; |
|
struct PATHNODE *NextNode; |
|
}; |
|
|
|
// TPDEF PTR FCN UCHAR CHECKFUNC1 |
|
|
|
// TPDEF PTR FCN UCHAR CHECKFUNC |
|
|
|
////////////////////////////////////////////////// |
|
// sha |
|
////////////////////////////////////////////////// |
|
|
|
struct SHA1Context |
|
{ |
|
int state[5]; |
|
int count[2]; |
|
char buffer[64]; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// tmsg |
|
////////////////////////////////////////////////// |
|
|
|
#pragma pack(push, 1) |
|
struct TMsg; |
|
|
|
struct TMsgHdr |
|
{ |
|
TMsg *pNext; |
|
unsigned int dwTime; |
|
unsigned char bLen; |
|
}; |
|
|
|
struct TMsg |
|
{ |
|
TMsgHdr hdr; |
|
unsigned char body[3]; |
|
}; |
|
#pragma pack(pop) |
|
|
|
////////////////////////////////////////////////// |
|
// mpqapi |
|
////////////////////////////////////////////////// |
|
|
|
struct _FILEHEADER |
|
{ |
|
int signature; |
|
int headersize; |
|
int filesize; |
|
short version; |
|
short sectorsizeid; |
|
int hashoffset; |
|
int blockoffset; |
|
int hashcount; |
|
int blockcount; |
|
char pad[72]; |
|
}; |
|
|
|
struct _HASHENTRY |
|
{ |
|
int hashcheck[2]; |
|
int lcid; |
|
int block; |
|
}; |
|
|
|
struct _BLOCKENTRY |
|
{ |
|
int offset; |
|
int sizealloc; |
|
int sizefile; |
|
int flags; |
|
}; |
|
|
|
// TPDEF PTR FCN UCHAR TGetNameFcn |
|
|
|
// TPDEF PTR FCN VOID TCrypt |
|
|
|
////////////////////////////////////////////////// |
|
// trigs |
|
////////////////////////////////////////////////// |
|
|
|
struct TriggerStruct |
|
{ |
|
int _tx; |
|
int _ty; |
|
int _tmsg; |
|
int _tlvl; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// stores |
|
////////////////////////////////////////////////// |
|
|
|
struct STextStruct |
|
{ |
|
int _sx; |
|
int _syoff; |
|
char _sstr[128]; |
|
int _sjust; |
|
int _sclr; |
|
int _sline; |
|
int _ssel; |
|
int _sval; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// wave |
|
////////////////////////////////////////////////// |
|
|
|
struct MEMFILE |
|
{ |
|
int end; |
|
int offset; |
|
int buf_len; |
|
int dist; |
|
int bytes_to_read; |
|
char *buf; |
|
int file; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// plrmsg |
|
////////////////////////////////////////////////// |
|
|
|
struct _plrmsg |
|
{ |
|
int time; |
|
char player; |
|
char str[144]; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// capture |
|
////////////////////////////////////////////////// |
|
|
|
struct PCXHeader |
|
{ |
|
char manufacturer; |
|
char version; |
|
char encoding; |
|
char bitsPerPixel; |
|
short xmin, ymin; |
|
short xmax, ymax; |
|
short horzRes, vertRes; |
|
char palette[48]; |
|
char reserved; |
|
char numColorPlanes; |
|
short bytesPerScanLine; |
|
short paletteType; |
|
short horzSize, vertSize; |
|
char padding[54]; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// encrypt |
|
////////////////////////////////////////////////// |
|
|
|
struct TDataInfo |
|
{ |
|
unsigned char *pbInBuff; |
|
unsigned char *pbInBuffEnd; |
|
unsigned char *pbOutBuff; |
|
unsigned char *pbOutBuffEnd; |
|
unsigned char *pbSize; |
|
}; |
|
|
|
////////////////////////////////////////////////// |
|
// msgcmd |
|
////////////////////////////////////////////////// |
|
|
|
struct ServerCommand |
|
{ |
|
int field_0; |
|
int field_4; |
|
char command[128]; |
|
}; |
|
|
|
struct ChatCmd |
|
{ |
|
struct ChatCmd *next; |
|
ServerCommand *extern_msgs[2]; |
|
};
|
|
|