Cano Map Format 2 - ZaneDubya/MedievaLandsPublic GitHub Wiki

New map format 2

Map is stored as tiles. Tiles are read left to right, top to bottom.

Data types

  • u8 = unsigned byte
  • u16 = unsigned short
  • u32 = unsigned int
  • i7 = "7-bit integer", a number that ranges from 0-2 billion. Values between 0-127 fit in one byte. 128-16383 fit in 2 bytes. Values less than 2 million fit in 3 bytes. This data type optimizes files size when most of the values are less than 2 million, and is 1/4 the size of a 32bit integer when values are 0-127.
  • sa = "Ascii-prefix", a string of ascii characters (8 bits per character, space character is 0x20), prefixed by a 7-bit integer length. It is not zero-terminated.

Map Data

Map Header:
- u16    Magic "0xD839"
- u16    Map Format "2"

Map Data:
- i7    Version "1"
- i7    Flags
- i7    Width in Tiles
- i7    Height in Tiles

Tile Data

Flags:
- i7      Flags 
          .000 0001 = Is walkable. If 0, players cannot enter tile by walk movement,
                      regardless of adjacent tile blocking.
          .000 0010 = Has blocking data. If 0, all cardinal directions are walkable as exits.

Blocking Data (if FlagBlockingData = 1):
- u8    Default blocking (can be overridden by map script)
        .... 0001 = North is default blocked
        .... 0010 = East is default blocked
        .... 0100 = South is default blocked
        .... 1000 = West is default blocked

Decoration (Deco) Data:
- i7    Deco count
        For each deco:
        i7   deco anchor
                  0 = north,
                  1 = east   (models rotate 90), 
                  2 = south  (models rotate 180), 
                  3 = west   (models rotate 270), 
                  4 = center
        i7   deco type
        .... deco data

Event Data:
7bit    Event count
        For each Event:
        7bit event type
        7bit event index (per map)

Event Types:

  • 0x00 on arrive
  • 0x01 on depart
  • 0x10 on face n
  • 0x11 on face e
  • 0x12 on face s
  • 0x13 on face w
  • 0x20 on move n
  • 0x21 on move e
  • 0x22 on move s
  • 0x23 on move w
  • 0x30 on use item
  • 0x31 on use spell/skill
  • 0x40 set encounter