Daleken 1.12 Area File Format ----------------------------- This format is the result of a large amount of hair tearing and a lot of time spent gnashing teeth. It is an easy to read format that allows for both forward and backward compatibility. Default values are part of the system so they are easy to compensate for. Nesting is possible, such as is demonstrated in the player files for objects. The format is capable of reading most data required by the server, with only a few additions required for unique structures. Conditions: - all data types are known by the server. - all lines/sections are terminated by a ';' - system requires a key (one word string) and a value. - strings are quoted like in C/C++ - numbers are in the following formats: - straight decimal: 345; - OR'ed values: 200|100|45; - hex: 0xA0; - mapped from strings: (dark inside); - mapped from strings: (<room> dark inside); - this method allows for flexibility - array (a bit that is set, for array of another type) - arrays should be able to be indexed so that pieces can be missed (think of skills). - use the following format... [ @1 "aaa", @2 "xxx", @(<room> dark inside) "xxx" ]; - a complex section enclosed in curly braces {} in the reading tables - string identifier - type of the variable - string - number - vector - complex structure - linked list - one bit is to say if it is an array. - a default table to lookup on (for integers only really). - A union field with the default value - for a special case/complex section this can have the function to read instead. area { name "The Immortal Plane"; plane "Immortal"; }; object { vnum 700; name "flaming gate hell pit"; short "a &rflaming&x gate to &KHell&x"; long "Flames erupt from a pit in the ground leading to the depths of Hell.\n"; level 1000; weight 100; # a hash is a comment type (portal); # wear ("take" "hold"); # Bit fields start with parentheses # extra (none); material (<material> flame); # Flag table name in angle brackets value [ # Arrays start with a square bracket. "3266", "0", "0", "0" ]; affect { # Special fields start with a curly brace. name "permanent spell"; location "flaming shield"; }; event { time 12354; type ["object decay"]; }; }; room { vnum 700; resets { M 700 1; E 704 "lwielded"; }; }; eof area { name "The Immortal Plane"; plane "Immortal"; }; object 700 { name "flaming gate hell pit"; short "a &rflaming&x gate to &KHell&x"; long "Flames erupt from a pit in the ground leading to the depths of Hell.\n"; level 1000; weight 100; # a hash is a comment? type (portal); # wear ("take" "hold"); # Bit fields start with parentheses # extra (none); material (flame); value [ # Arrays start with a square bracket. "3266", "0", "0", "0" ]; affect { # Special fields start with a curly brace. name "permanent spell"; location "flaming shield"; }; event { time 12354; type ("object decay"); }; }; room 700 { resets { M 700 1; E 704 "lwielded"; }; }; eof