Oh and the ptUnit list is only confirmed for players, since I only looked at the ptUnit generation for type 0 (ie players).
Code: Select all
ptUnit
+00 unit type
+04 unit id
+08 ptGame+1C
+0C unit unid
+10 Current animation mode
+14 ptUnitData (was at +70)
+18 act
+1C ptAct
+20 Seed (Low)
+24 Seed (High)
+28 Starting LowSeed
+2C hPath (no internal changes?)
+1C = hRoom
+3C Animspeed (DWORD)
+38 ptPos (hPath Structure)
+44 Current Frame the animation is (aka Frame counter)
+48 Remaining Frame
+4C Animation Speed(Word)
+4E Action Flag (Byte)
+50 AnimData.D2 record address for current mode
+5C ptStatsList
+24h = ptStats[Param] [color=#5f5f5f]Param = [ItemStatCost].[SendParams][/color]
+00h = iStatIndex[0]
+02h = iStatID[0]
+04h = iStatValue[0]
+08h = iStatIndex[1]
+0Ah = iStatID[1]
+0Ch = iStatValue[1]
+xxh = iStatIndex[X]
+xxh = iStatID[X]
+xxh = iStatValue[X]
+28h = iStatCount
+2Ah = iStatCount again?
+60 ptInventory
+00 = 1020304
+04 = ptGame+1c
+08 = ptUnit
+24 = unit unid
+74 0 at start, gets MemoryPool ptr at times
+80 ptGame
+94 originator ptUnit type (ptUnit+00) (missiles use this)
+98 originator ptUnit unID (ptUnit+0C) (missiles use this)
+A8 ptInfo
+00 = ptGame+1c
+AC Combat data
+B8 ItemCode for an item being dropped by this unit
+C4 flags
0010 = spawning
players
0E = inventory/skill spawning
+C8 flags
2000000 = lod
+D0 client # (0B at start)
Code: Select all
ptPlayerData Structure
+00 Player Name (0x10 Bytes)
+10 = normal quest ptr
+00 = ptBuffer
+04 = 60h * 2^3, 768
+14 = nightmare quest ptr
+00 = ptBuffer
+04 = 60h * 2^3, 768
+18 = hell quest ptr
+00 = ptBuffer
+04 = 60h * 2^3, 768
+1c = normal waypoint ptr
+00 = flags
+20 = nightmare waypoint ptr
+00 = flags
+24 = hell waypoint ptr
+00 = flags
+34 = ptArenaUnit
+48 Object Unique_ID
+9C ptClient
Details on stat list structures and functions at this link.
Code: Select all
ptItemData Structure
+00 quality
+14 cmdFlags
+18 flags
0000 0001 - ITEMFLAG_NEWITEM
0000 0004 - ITEMFLAG_TARGETING
0000 0010 - ITEMFLAG_IS_IDENTIFIED
0000 0020 - ITEMFLAG_QUANTITY
0000 0100 - ITEMFLAG_DURABILITY
0000 0800 - ITEMFLAG_SOCKETED
0000 1000 - ITEMFLAG_NON_SELLABLE
0000 2000 - ITEMFLAG_NEWITEM2
0001 0000 - ITEMFLAG_CHECKSECPRICE
0002 0000 - ITEMFLAG_CHECKGAMBLEPRICE
0040 0000 - ITEMFLAG_ETHEREAL
0100 0000 - ITEMFLAG_FROMPLAYER
0400 0000 - ITEMFLAG_RUNEWORD
8000 0000 - ? (always set for items, do not use)
+28 PlayerClass (What class requirement this item has)
+2C ilvl
+45 StorePage (BYTE)
+5C ptNode
+0C = Page
Code: Select all
ptInventory Structure
+00 nIdentifier (1020304)
+08 ptUnit
+24 Unit unid
+28 Socket_Counter
+34 ptCorpse
+3C next ptCorpse Unique_id
Code: Select all
PtGame
+0018 _ptLock (8 bytes, unknown what it's used for)
+001C MemoryPool
+00 ptQuestInfo
+04 ptUnit+74 of locking unit (forms a linked list?)
+006A Game type? (3 = realm?)
+006D Difficulty (0,1 or 2)
+0070 Lod(1) or D2c(0)
+0088 *ptClientLastJoined
+0090 # of players spawned counter
+0094 # of monsters spawned counter
+0098 # of objects spawned counter
+009C # of missiles spawned counter
+00A0 # of items spawned counter
+00A4 # of tiles spawned counter
+00A8 Current Frame (FrameCounter)
+00D0 low seed
+00D4 high seed
+00D8 ptRoom (act 1) list
+00DC ptRoom (act 2) list
+00E0 ptRoom (act 3) list
+00E4 ptRoom (act 4) list
+00E8 ptRoom (act 5) list
+00F4
+300 Ptr for Level with ID0 -->ID132(Levels.txt)
+10F0 shrine random effects list
+00 low seed
+04 high seed
+08 (8) shrine effects codes
+28 pointers to the (8) effects
+10F4
+00 last quest in linked list of quests
+0C
+00 pHistory (quest) --
20 = completed this game
80 = completed previous game
+10F8 ptClient list
+1120 ptUnit (character) list (80h dword)
+1320 ptUnit (monster) list (80h dword)
+1520 ptUnit (object) list (80h dword)
+1720 ptUnit (missile) list (80h dword) item?
+1920 ptUnit (item) list (80h dword) missile?
+1B20 ptUnit (tile) list (1 dword)
+1B24 ptUnit (tile) list (80h dword)
+1D28 ptArena
Code: Select all
ptClient
+004 conn_state (4 == connected)
+00D name
+174 *ptUnit (the player unit this client structure belongs to)
+4A8 *ptClientPrev (ptClient of previous player unit)
Code: Select all
ptSkill
+00 Pointer to Skills.txt
Code: Select all
ptRoom
+48 Flag (0 = spawn new units, 1 = don't spawn new units)
The only difference I have noticed in ptGame is that the player spawn count is now at +90, where frame count used to be.