Private Type npcData
unknownB1 As Byte
unknownW1 As Integer
unknownW2 As Integer
unknownDW1 As Long
unknownDW2 As Long
unknownDW3 As Long
unknownDW4 As Long
unknownF1 As Single
unknownF2 As Single
unknownF3 As Single
unknownF4 As Single
posX As Single
posY As Single
posZ As Single
scaleX As Single
scaleY As Single
scaleZ As Single
unknownDW5 As Long
npcFileLen As Byte
npcFile As String
End Type
Private offsets() As Long
Dim tempLong As Long
Open App.Path & "/" & fileName For Binary Access Read Lock Write As fh
Get fh, , blockCount
ReDim offsets(blockCount)
For i = 0 To blockCount - 1
Get fh, , tempLong
Get fh, , offsets(tempLong)
Next i
'Skip to NPC Block
Seek fh, offsets(2) + 1
Get fh, , npcCount
ReDim npcData(npcCount)
For i = 0 To npcCount - 1
Get fh, , npcData(i).unknownB1
Get fh, , npcData(i).unknownW1
Get fh, , npcData(i).unknownW2
Get fh, , npcData(i).unknownDW1
Get fh, , npcData(i).unknownDW2
Get fh, , npcData(i).unknownDW3
Get fh, , npcData(i).unknownDW4
Get fh, , npcData(i).unknownF1
Get fh, , npcData(i).unknownF2
Get fh, , npcData(i).unknownF3
Get fh, , npcData(i).unknownF4
Get fh, , npcData(i).posX
Get fh, , npcData(i).posY
Get fh, , npcData(i).posZ
Get fh, , npcData(i).scaleX
Get fh, , npcData(i).scaleY
Get fh, , npcData(i).scaleZ
Get fh, , npcData(i).unknownDW5
Get fh, , npcData(i).npcFileLen
npcData(i).npcFile = Space$(npcData(i).npcFileLen)
Get fh, , npcData(i).npcFile
Next i
Close fh