The default directions are defined in three different files (travel.t, actions.t and en_us.t) and in a style which favours elegance over newbie-accessibility. I can now reveal that implementing new directions in TADS 3 is very simple, when you know how.
You should be able to stick the following code into your files and have it work:
//A new direction object
forwardDirection: Direction
name = 'forward'
dirProp = &forward
//an integer to sort this direction
//relative to other directions
//we'd give 'backwards' greater than 8000
//for example, so 'forwards' is always listed
//before it
sortingOrder = 8000
;
//the grammar rule for this direction object
//type 'forward' or 'f'
//to try and head in this direction
//(more synonyms preferable)
grammar directionName: 'forward' | 'f' : DirectionProd
dir = forwardDirection
;
/*
* According to actions.t:
*
* "To make it more convenient to use
* directional travel actions as
* synthesized commands, [we] define a set of
* action classes for the specific
* directions."
*/
DefineAction(Forward, TravelAction)
getDirection = forwardDirection
;
//kill the old 'forward' command.
//The only useful piece of code I found in
//"Relative Direction System for TADS 3" by
//Michael J. Roberts
//(It has been modified)
replace grammar directionName(fore): ' ': DirectionProd ;
You could then use this in the form:
firstRoom: Room 'The First Room'
"You are in the first room."
forward=secondRoom
;
secondRoom: Room 'The Second Room'
"You are in the second room.
Why not now implement a backward command
so you can get out of here?"
;
This concludes another edition of, "Why doesn't the Internet tell me...?"
1 comment:
Thank you so much for posting this. This is still pretty much the only thing out there describing how to do this.
Post a Comment