gamefile (version="1.0") | |- description? | |- map* (name, startroom) | | | |- room+ (class, name) | | | | | |- description | | | | | |= image? (file) | | | | | |- contents? | | | | | | | |= item (name) | | | | | | | += character (name, dialog="1") | | | | | |- ways? | | | | | | | += way+ (direction, room) | | | | | |- views? | | | | | | | +- view+ (direction) | | | | | +- event* (name) | | | | | +- actions | | | | | |- target* | | | | | | | |- description | | | | | | | |= condition (type, value) | | | | | | | += creator? (name) | | | | | |= action* (type?) | | | | | |- player-say* | | | | | |- npc-say* | | | | | |- inventory-item* | | | | | |- room-item* | | | | | |- alter-item* (property) | | | | | |- delete-item* | | | | | += random-success? | | | +- transitionroom (name, final="false", target) | | | |= precondition* (item) | | | +- ways* --> | |- player? (position, map, name="Player") | | | |- contents --> | | | +- target --> | |- history? | | | +- command* | |- dialogs* | | | +- dialog-owner+ (name) | | | +- dialog+ | | | |- phase | | | | | |- object (id, type="dialog_end_failure", nextphase="0") | | | | | | | |- say | | | | | | | +- reply | | | | | += reference (id) | | | += precondition (item) | +- gameobjects? | |- characters? | | | +- person+ (name) | | | |- description | | | |= action? (type?) | | | |= property* (name, value) | | | +- event* (name) --> | +- items? | +- gameitem+ (name) | |- description | |= property* (name, value) | |- event* (name) --> | +- combinations* | +- with-object* (name) | +- actions --> Tree representation of the DTD - generated using Matra 0.8.2b (http://matra.sourceforge.net/)