LAYOUT OF TEXT FILE (ignore indentations!)
-------------------
[INTRO]

 [<Introduction message>]
  [ ... ]

MESSAGES

<Input not understood message>
<Walked into wall message>
<Speak to who? message>

LOCATIONS

<any text (ignored) >
<location name (e.g. "in a room") [25] >
<location description [255] >
<room number to the nw> <n> <ne> <e> <se> <s> <sw> <w> <up> <down> <in> <out>
[ { actions - see below } ]

OBJECTS

<any text>
<a/an/some/etc. [8] >
<object name [18] >
[ALT <alternative name [20] >]
 [ ... ]
<object description [255] >
<object location number>
<Y/F/FIXED if fixed or any other text if not>
<Y/H/HIDDEN if hidden or any text if not>
[VERB <verb name [16] >]
 [ALT <verb name [20] >]
   [ ... ]
 [WITH <object number>]
 [ { actions - see below } ]

COMMANDS

<command name>
[ALT <alternative name [20] >]
 [ ... ]
[ { actions - see below } ]

END


{ actions } =

[<action> <parameter1 (if rqd)> <param2> <param3>]
 [ ... ]
[<message> [255] ]
[IF <condition> <parameter1 (if rqd)> <param2>]
 [AND <condition> ... ]
  [ ... ]
 [<action> <param 1> <param2> <param3>]
  [ ... ]


ACTIONS:

EXIT
SETVAR varnum, newvalue
SETVARTOLOC varnum
ADDTOVAR varnum, increment
SETOBLOC obnum, location
SETOBLOCTOVAR obnum, variable
SETPATH loc, direction, destn
MOVETO loc
MOVETOVAR varnum
SHOWOB obnum
HIDEOB obnum
FIXOB obnum
UNFIXOB obnum
DISPLAY

CONDITIONS:

VAREQUALS varnum, value
NOTVAREQUALS varnum, value
CARRYING obnum
NOTCARRYING obnum
ATLOC loc
NOTATLOC loc
CANSEE obnum
CANTSEE obnum

LIMITS:

250 objects
250 alternative names
80 locations
300 action sections
250 conditions
500 actions
308-1234 lines of text
50 variables


BUILT-IN COMMANDS: (can be overridden)

NORTH/N
NORTHEAST/NE
...
LOOK/L
INVENTORY/INV/I
EXAMINE/EX <object>
GET/TAKE/PICK UP <object>
DROP/PUT DOWN <object>
LOAD
SAVE

To exit: QUIT/EXIT


Notes
-----

Object location -1 = inventory
                 0 = not in game
Outcome messages are counted as actions
All text sections (descriptions/outcome messages) are stored in one array but all have a 255 character limit. If you need more, start a new line, or for descriptions just add some text as an automatic action.
Only need to override main command name [e.g. get rather than take] to override command.