d2tweaks-rnd2k/include/diablo2/structures/data_tables.h
2024-04-16 21:45:38 -06:00

306 lines
22 KiB
C++

#pragma once
#include <cstdint>
namespace diablo2 {
namespace structures {
struct linkage;
struct playerclass_line;
struct bodylocs_line;
struct storepage_line;
struct elemtypes_line;
struct hitclass_line;
struct monmode_line;
struct properties_line;
struct unique_items //size=0x14C (332)
{
WORD uniqueId; //+00
BYTE uk1[0x20]; //+02
WORD uniqueNameId; //+22
BYTE uk2[0x08]; //+24
union {
BYTE flag; //+2C
struct {
BYTE ukf : 2;
BYTE carry1 : 1;
BYTE ladder : 1;
};
};
BYTE uk3[0x11F]; //+2D
};
struct data_tables {
playerclass_line* player_class; //+00000000 01415B48 playerclass.txt
linkage* player_class_info; //+00000004 01410524 playerclass info
bodylocs_line* body_locs; //+00000008 01415578 bodylocs.txt
linkage* body_locs_info; //+0000000C 01410504 bodylocs info
storepage_line* store_page; //+00000010 01414CC8 storepage.txt
linkage* store_page_info; //+00000014 01415B24 storepage info
elemtypes_line* elemtypes; //+00000018 01414958 elemtypes.txt
linkage* elemtypes_info; //+0000001C 01415B04 elemtypes info
hitclass_line* hit_class; //+00000020 01414148 hitclass.txt
linkage* hit_class_info; //+00000024 01415AE4 hitclass info
monmode_line* mon_mode; //+00000028 01416878 monmode.txt
linkage* mon_mode_info; //+0000002C 01415514 monmode info
void* pPlayerModeStub; //+00000030 014162E8 plrmode.txt
linkage* iPlayerMode; //+00000034 01414934 plrmode info
void* pSkillCalc; //+00000038 05279860 skillcalc.txt
linkage* iSkillCalc; //+0000003C 01410014 skillcalc info
uint8_t* pSkillsCode; //+00000040 0537A514 skillscode formulae
uint32_t dwSkillsCodeSize; //+00000044 00001768 size of skillscode block
uint32_t dwSkillsCodeSizeEx; //+00000048 00001768 size of skillscode block
uint8_t* pSkillDescCode; //+0000004C 0535C994 skilldesccode formulae
uint32_t dwSkillDescCodeSize; //+00000050 0000107F size of skilldesccode block
uint32_t dwSkillDescCodeSizeEx; //+00000054 0000107F size of skilldesccode block
const char* pMissileCalc; //+00000058 01419C28 misscalc.txt
linkage* iMissileCalc; //+0000005C 01417024 misscalc info
uint8_t* pMissCode; //+00000060 014A4944 misscode formulae
uint32_t dwMissCodeSize; //+00000064 000000D4 size of misscode block
uint32_t dwMissCodeSizeEx; //+00000068 000000D4 size of misscode block
const char* pSkillCode; //+0000006C 052C445C skillcode.txt (Id from skills.txt)
linkage* iSkillCode; //+00000070 0141F084 skillcode info
void* pEvents; //+00000074 0141ACA8 events.txt
linkage* iEvents; //+00000078 0141F064 events info
uint32_t* pCompCodes; //+0000007C 06C4FAFC compcode.txt
linkage* iCompCodes; //+00000080 01410544 compcode info
int nCompCodes; //+00000084 00000073 # of compcode records
void* pMonAI; //+00000088 0564351C monai.txt
linkage* iMonAI; //+0000008C 01414914 monai info
int nMonAI; //+00000090 00000098 # of monai records
linkage* iItems; //+00000094 014BA014 items info
uint8_t* pItemsCode; //+00000098 013FDED8 itemscode formulae
uint32_t dwItemsCodeSize; //+0000009C 000010E0 size of itemscode block
uint32_t dwItemsCodeSizeEx; //+000000A0 000010E0 size of itemscode block
uint32_t* pProperties; //+000000A4 0579E218 properties.txt
linkage* iProperties; //+000000A8 01489464 properties info
int nProperties; //+000000AC 00000110 # of properties records
linkage* iRunes; //+000000B0 014C4774 runes info
uint32_t* pMercDesc; //+000000B4 01417208 hiredesc.txt
linkage* iMercDesc; //+000000B8 01415534 hiredesc info
uint32_t* pStates; //+000000BC 05767EA0 states.txt (limit = 255)
linkage* iStates; //+000000C0 014A16C4 states info
int nStates; //+000000C4 000000BD # of states records
void* pStateMasks; //+000000C8 014A2574 statemasks.txt
uint32_t* fStateMasks[40]; //+000000CC 014A2574 statemasks[40] (statemasks.txt segment array)
short* pProgressiveStates; //+0000016C 014A23E4 progressive-state list
int nProgressiveStates; //+00000170 00000006 # of progressive states
short* pCurseStates; //+00000174 014A2254 curse-state list
int nCurseStates; //+00000178 0000001A # of curse states
short* pTransformStates; //+0000017C 014A20C4 transform-state list
int nTransformStates; //+00000180 00000007 # of transform states
short* pActionStates; //+00000184 014A3E74 action-state list
int nActionStates; //+00000188 00000007 # of action states
short* pColourStates; //+0000018C 014A3CE4 color-state list
int nColourStates; //+00000190 00000002 # of color states
void* pSoundCodes; //+00000194 057656BC soundcode.txt (sound column from sounds.txt)
linkage* iSoundCodes; //+00000198 0141F0E4 soundcode info
int nSoundCodes; //+0000019C 00000000 # of soundcode records (blanked out later)
uint32_t* pHirelings; //+000001A0 055D8CD8 hirelings.txt (limit = 256)
int nHirelings; //+000001A4 00000078 # of hirelings records
int pMercFirst[256]; //+000001A8 00000000 array of 256 integers (namefirst column from hirelings.txt)
int pMercLast[256]; //+000005A8 0000000C array of 256 integers (namelast column from hirelings.txt)
void* pNPCs; //+000009A8 05724F74 npcs.txt
int nNPCs; //+000009AC 00000011 # of npcs records
void* pColours; //+000009B0 01417568 colors.txt
linkage* iColours; //+000009B4 01415554 colors info
linkage* iTreasureClassEx; //+000009B8 014C4714 treasureclassex info
uint32_t* pTreasureClassEx; //+000009BC 05718D98 treasureclassex.txt (limit = 65534 - autotcs#)
int nTreasureClassEx; //+000009C0 0000043C # of treasureclassex records
uint32_t* aTreasureClass[45]; //+000009C4 0571D074 chest treasureclassex list (an array of 45 pointers)
uint32_t* pMonstats; //+00000A78 04FE0014 monstats.txt (limit = 32766)
linkage* iMonstats; //+00000A7C 0143C024 monstats info
int nMonstats; //+00000A80 000002E1 # of monstats records
void* pMonSounds; //+00000A84 013EBC9C monsounds.txt
linkage* iMonSounds; //+00000A88 01438024 monsounds info
int nMonSounds; //+00000A8C 0000008D # of monsounds records
uint32_t* pMonstats2; //+00000A90 05287408 monstats2.txt (no sign of that 1023 record limit)
linkage* iMonstats2; //+00000A94 01502014 monstats2 info
int nMonstats2; //+00000A98 00000245 # of monstats2 records
void* pMonPlace; //+00000A9C 01412648 monplace.txt
linkage* iMonPlace; //+00000AA0 01417BA4 monplace info
int nMonPlace; //+00000AA4 00000025 # of monplace records
void* pMonPreset; //+00000AA8 057248B0 monpreset.txt
void* aMonPresetI[5]; //+00000AAC 057248B0 array of 5 pointers to the monpreset sections for each of the 5 acts
void* aMonPresetII[5]; //+00000AC0 0000002F array of 5 integers (# of records for monpreset in each of the 5 acts)
uint32_t* pSuperUniques; //+00000AD4 05364928 superuniques.txt (limit = 512)
linkage* iSuperUniques; //+00000AD8 0145A1F4 superuniques info
int nSuperUniques; //+00000ADC 00000042 # of superunique records
uint16_t aSuperUniques[66]; //+00000AE0 00010000 array of 66 uint16_ts (the IdNos of the default superuniques, new ones are not added here [thankfully])
uint32_t* pMissiles; //+00000B64 05590014 missiles.txt (does some fixing for collidetype > 8)
linkage* iMissiles; //+00000B68 01492014 missiles info
int nMissiles; //+00000B6C 000002C4 # of missiles records
uint32_t* pMonLvl; //+00000B70 013B0064 monlvl.txt
int nMonLvl; //+00000B74 0000006F # of monlvl records
void* pMonSeq; //+00000B78 05375900 monseq.txt
linkage* iMonSeq; //+00000B7C 0143A024 monseq info
int nMonSeq; //+00000B80 000003F2 # of monseq records
uint32_t* pMonSeqTable; //+00000B84 0143E7E4 sequences table (created from monseq.txt)
int nMonSeqTable; //+00000B88 0000003C # of sequences
uint32_t* pSkillDesc; //+00000B8C 05741104 skilldesc.txt (limit = 32766) [JL and not JLE]
linkage* iSkillDesc; //+00000B90 014B8024 skilldesc info
int nSkillDesc; //+00000B94 000000DD # of skilldesc records
uint32_t* pSkills; //+00000B98 056E4D78 skills.txt (limit = 32766) [JL and not JLE]
linkage* iSkills; //+00000B9C 014B50E4 skills info
int nSkills; //+00000BA0 00000173 # of skills records
int* nClassSkillCount; //+00000BA4 014B9014 class skill count list
int nHighestClassSkillCount; //+00000BA8 0000001E # highest class skill count
short* nClassSkillList; //+00000BAC 014BCB54 class skill list
int nPassiveSkills; //+00000BB0 0000001C # of passive skills
uint16_t* pPassiveSkills; //+00000BB4 014BCB04 passiveskill list
linkage* iOverlay; //+00000BB8 01484024 overlay info
uint32_t* pOverlay; //+00000BBC 05352F54 overlay.txt
int nOverlay; //+00000BC0 00000125 # of overlay records
uint32_t* pCharStats; //+00000BC4 057AD178 charstats.txt
int nCharStats; //+00000BC8 00000007 # of charstats records
uint32_t* pItemStatCost; //+00000BCC 05219760 itemstatcost.txt (limit = 510) [511 used as END_OF_STATS in 'GF/JM' files]
linkage* iItemStatCost; //+00000BD0 0148C024 itemstatcost info
int nItemStatCost; //+00000BD4 0000016E # of itemstatcost records
void* pOPStats; //+00000BD8 014882A4 opstats nesting table
int nOPStats; //+00000BDC 000000D3 # of nested opstats
uint32_t* pMonEquip; //+00000BE0 013B3798 monequip.txt (limit = 32766)
int nMonEquip; //+00000BE4 0000002D # of monequip records
uint32_t* pPetType; //+00000BE8 05774138 pettype.txt (limit = 511)
linkage* iPetType; //+00000BEC 01486024 pettype info
int nPetType; //+00000BF0 00000014 # of pettype records
linkage* iItemTypes; //+00000BF4 0141E024 itemtypes info
uint32_t* pItemTypes; //+00000BF8 050D14AC itemtypes.txt
int nItemTypes; //+00000BFC 00000069 # of itemtypes records
int nItemTypesIndex; //+00000C00 00000004 (itemtypes#+31)/32
uint32_t* pItemTypesNest; //+00000C04 0537C41C itemtypes nesting table
linkage* iSets; //+00000C08 014B3CE4 sets info
void* pSets; //+00000C0C 057A162C sets.txt (limit = 32766)
int nSets; //+00000C10 00000020 # of sets records
linkage* iSetItems; //+00000C14 014B1024 setitems info
uint32_t* pSetItems; //+00000C18 056BBAC0 setitems.txt (limit = 32766)
int nSetItems; //+00000C1C 0000007F # of setitems records
linkage* iUniqueItems; //+00000C20 014AA044 uniqueitems info
unique_items* pUniqueItems; //+00000C24 0510E8B4 uniqueitems.txt (limit = 32766)
int nUniqueItems; //+00000C28 00000191 # of uniqueitems records
//linkage* iMonProp; //+00000C2C 01439024 monprop info
//FileMonpropTable* pMonProp; //+00000C30 05132A2C monprop.txt
//int nMonProp; //+00000C34 0000000E # of monprop records
//linkage* iMonType; //+00000C38 0141C024 montype info
//void* pMonType; //+00000C3C 06C4F014 montype.txt
//int nMonType; //+00000C40 0000003B # of montype records
//uint32_t* pMonTypeNest; //+00000C44 0141AAB4 montype nesting table
//int nMonTypeIndex; //+00000C48 00000002 (montype#+31)/32
//linkage* iMonUMod; //+00000C4C 0145A274 monumod info
//FileMonumodTable* pMonUMod; //+00000C50 0654F014 monumod.txt (limit = 512)
//int nMonUMod; //+00000C54 0000002B # of monumod records
//FileLevelsTable* pLevels; //+00000C58 0562D0EC levels.txt (limit = 1023)
//int nLevels; //+00000C5C 00000096 # of levels records
//FileLevelDefsTable* pLevelDefs; //+00000C60 055E134C leveldefs.txt
//FileLevelPresetTable* pLevelPreset; //+00000C64 0502C7E8 lvlprest.txt
//int nLevelPreset; //+00000C68 00000447 # of lvlprest records
//int nStuff; //+00000C6C 00000006 stuff value (ItemStatCost.txt + 0x140, record #1)
//int cStuff; //+00000C70 0000003F 2 ^ stuff - 1 (used as a controller field for opstats and other special stats)
//FileAnimDataTable* pAnimData; //+00000C74 052369C0 sgptAnimTables (see below)
//FileExperienceTable* pExperience; //+00000C78 05ECF014 experience.txt
//FileDifficultyLevelsTable* pDifficultyLevels; //+00000C7C 05750CD8 difficultylevels.txt (recordNo must equal 3)
//int nDifficultyLevels; //+00000C80 00000003 # of difficultylevels records
//BOOL bCompileTXT; //+00000C84 -txt switch
//void* ExpFieldI[6]; //+00000C88
//uint32_t unk0[4]; //+00000CA0
//void* pExpField; //+00000CB0
//void* ExpFieldII[4]; //+00000CB4
//void* pCubeMain; //+00000CC4
//int nCubeMain; //+00000CC8
//int nInventory; //+00000CCC
//D2InventoryRecordStrc* pInventory; //+00000CD0
//uint32_t unk1; //+00000CD4
//int nMasterItemList; //+00000CD8
//FileItemTable* pMasterItemList; //+00000CDC
//void* pWeapons; //+00000CE0
//int nWeapons; //+00000CE4
//void* pArmor; //+00000CE8
//int nArmor; //+00000CEC
//void* pMisc; //+00000CF0
//int nMisc; //+00000CF4
//uint32_t unk2; //+00000CF8
//int nGems; //+00000CFC
//FileGemsTable* pGems; //+00000D00
//int nLowQualityItems; //+00000D04
//FileLowQualityItemsTable* pLowQualityItems; //+00000D08
//int nBooks; //+00000D0C
//FileBooksTable* pBooks; //+00000D10
//int nRareAffix; //+00000D14
//FileRareAffixTable* pRareAffix; //+00000D18
//FileRareAffixTable* pRareSuffix; //+00000D1C
//FileRareAffixTable* pRarePrefix; //+00000D20
//int nItemRatio; //+00000D24
//FileItemratioTable* pItemRatio; //+00000D28
//uint32_t unk3; //+00000D2C
//int nGamble; //+00000D30
//uint32_t* pGambleSelection; //+00000D34
//int* pGambleChooseLimit[100]; //+00000D3C
//int nAffix; //+00000EC8
//FileAffixTable* pAffix; //+00000ECC [suffixes][prefixes][automagic]
//FileAffixTable* pMagicSuffix; //+00000ED0
//FileAffixTable* pMagicPrefix; //+00000ED4
//FileAffixTable* pAutoMagic; //+00000ED8
//int nRunes; //+00000EDC
//void* pRunes; //+00000EE0
//int nQualityItems; //+00000EE4
//FileQualityitemsTable* pQualityItems; //+00000EE8
//uint32_t unk4; //+00000EEC
//uint32_t dwHiSeed; //+00000EF0
//uint32_t dwLoSeed; //+00000EF4
//uint32_t dwAutoMapRand[72]; //+00000EFC
//void* pLvlTypes; //+00001018
//int* pPortalLevels; //+0000101C
//int nPortalLevels; //+00001020
//int nLvlTypes; //+00001024
//FileLevelWarpTable* pLevelWarp; //+00001028
//int nLevelWarp; //+0000102C
//FileLevelMazeTable* pLevelMaze; //+00001030
//int nLevelMaze; //+00001034
//void* pLvlSub; //+00001038
//int nLvlSub; //+0000103C
//void* sLvlSub; //+00001040
//uint32_t unk5; //+00001044
//void* ppLvlTypes; //+00001048
//uint32_t unk6; //+0000104C
//D2AutoMapShortStrc* pAutoMap; //+00001050
//int nAutoMap; //+00001054
//void* pMonLink; //+00001058
//int nMonItemPercent; //+0000105C
//void* pMonItemPercent; //+00001060
//void* pUniqueTitle; //+00001064
//void* pUniquePrefix; //+00001068
//void* pUniqueSuffix; //+0000106C
//void* pUniqueAppelation; //+00001070
//int nUniqueTitle; //+00001074
//int nUniquePrefix; //+00001078
//int nUniqueSuffix; //+0000107C
//int nUniqueAppelation; //+00001080
//uint32_t unk7[4]; //+00001084
//FileShrinesTable* pShrines; //+00001094
//int nShrines; //+00001098
//FileObjectsTable* pObjects; //+0000109C
//int nObjects; //+000010A0
//void* pObjGroup; //+000010A4
//int nObjectGroup; //+000010A8
//void* pArmType; //+000010AC
//int nMonMode; //+000010B0
//FileMonmodeTable* pMonMode[3]; //+000010B4
//void* pMonLoc; //+000010B8
//int nObjTypeAndMode; //+000010BC
//void* pObjTypeAndMode; //+000010C0
//void* pObjType; //+000010C4
//void* pObjMode; //+000010C8
//int nPlayerTypeAndMode; //+000010CC
//void* pPlayerTypeAndMode; //+000010D0
//void* pPlayerType; //+000010D4
//void* pPlayerMode; //+000010D8
};
}
}