Still isn't 100% complete and parts of object and sfx might be wrong as they are not tested, I'll update object and sfx as I start adding them to the map editor.
Feel free to post any of the unknowns you've figured out.
Code:DWORD version
:IF(version >= 1 )
DWORD offset_x
DWORD offset_y
:ENDIF
:FOREACH( 129 )
:FOREACH( 129 )
FLOAT height
:IF( height >= 4000.0f ) // Die
height -= 4000.0f
:ENDIF
:IF( height >= 3000.0f ) // NoMove
height -= 3000.0f
:ENDIF
:IF( height >= 2000.0f ) // NoFly
height -= 2000.0f
:ENDIF
:IF( height >= 1000.0f ) // NoWalk
height -= 1000.0f
:ENDIF
:ENDFOR
:ENDFOR
:FOREACH( 16 )
:FOREACH( 16 )
BYTE height
patch_type[BYTE] type
:ENDFOR
:ENDFOR
:IF(version >= 2 )
:FOREACH( 16 )
:FOREACH( 16 )
BYTE unknown
:ENDFOR
:ENDFOR
:ENDIF
BYTE layer_count
:FOREACH( layer_count )
SHORT tile_id
:FOREACH( 16 )
:FOREACH( 16 )
DWORD patch_visible
:ENDFOR
:ENDFOR
:FOREACH( 128 )
:FOREACH( 128 )
BYTE r
BYTE g
BYTE b
BYTE a
:ENDFOR
:ENDFOR
:ENDFOR
DWORD object_count
:FOREACH( object_count )
DWORD type // Must be 0
FLOAT angle
FLOAT unknown1
FLOAT unknown2
FLOAT unknown3
FLOAT position_x
FLOAT position_y
FLOAT position_z
FLOAT scale_x
FLOAT scale_y
FLOAT scale_z
DWORD unknown4
DWORD mesh_id
DWORD unknown5
DWORD unknown6
:ENDFOR
DWORD sfx_count
:FOREACH( sfx_count )
DWORD type // Must be 3
FLOAT angle
FLOAT unknown1
FLOAT unknown2
FLOAT unknown3
FLOAT position_x
FLOAT position_y
FLOAT position_z
FLOAT scale_x
FLOAT scale_y
FLOAT scale_z
DWORD unknown4
DWORD sfx_id
DWORD unknown5
DWORD unknown6
:ENDFOR
:ENUM patch_type
NONE = 0
WATER = 1
CLOUD = 2
:ENDENUM

