daroloso@watmath.waterloo.edu (Dani A. Roloson) (05/31/91)
If you're interested in creating Infocom-like text-only adventures on your home computer, TADS is a great start. The package does all the parsing and defines most of the common adventure verbs and item types in editable include files. TADS is a shareware object-oriented programming tool for the Atari ST, Macintosh, and IBM PC Compatible (MS-DOS/PC-DOS) which is available from High Energy Software, P.O. Box 50422, Palo Alto, CA 94303. (Atari users can try out atari/games/tads/tads.lzh on atari.archive.umich.edu) For my $25 US, I got the TADS Author's Manual, a sample game, updated versions of the include files and programs, and a tool for combining the game runner and game into a single file. I am pleased with the quality of the manual, the response to the question I asked with my payment, and the complexity and flexibility that the package allows. I would like to get together with other TADS users even on different platforms since a game written for the Atari can be compiled on all three systems. Sample simple adventure: ************************ #include <adv.t> #include <std.t> fireVerb: deepverb verb = 'fire' 'shoot' 'blast' sdesc = "fire" doAction = 'Fire' ; /* This is where you start the game. */ startroom: room sdesc = "Hallway" ldesc = "You are in the hallway. There is an room to the east. " east = engineroom ; engineroom: room sdesc = "Engine Room" ldesc = "You are in the engine room. The only exit is to the west. " west = startroom ; /* The engine can not be taken since it is a fixed item. */ engine: fixeditem sdesc = "diesel engine" ldesc = "It's an old-fashioned diesel engine. You can't imagine how it runs this spaceship. " location = engineroom noun = 'engine' adjective = 'diesel' 'old-fashioned' 'spaceship' ; /* The slime gun starts out in your possession. */ slimegun: item shotsleft = 6 sdesc = "slime gun" ldesc = "It's standard equipment in the Denebian Space Patrol. " location = Me noun = 'gun' 'pistol' 'blaster' adjective = 'slime' 'space' 'denebian' /* Don't allow the gun to be dropped. */ /* ver = verify, do = direct object */ verDoDrop( actor ) = { "You can't leave the gun here. "; } /* Allow the gun to be fired if you still have slime. */ verDoFire( actor ) = { if ( self.shotsleft < 1 ) { "No more slime left."; } } doFire( actor ) = { /* Decrement number of shots left. */ self.shotsleft := self.shotsleft - 1; /* If I'm not in the engine room */ if ( Me.location <> engineroom ) { "You get slime all over yourself."; } else { "The slime clogs up the engine and the spaceship explodes."; die(); } } ; ****************************************************************** WARNING: The following is probably only interesting to TADS users. ****************************************************************** > Marvin, pick up the paper Although the TADS parser recognizes the actor Marvin, most of the standard responses assume Me was the actor. e.g. "You don't see the paper." instead of "Marvin doesn't see the paper." I have spent a great deal of time editting ADV.T changing "You" to "caps(); actor.sdesc;" and and "don't" to : if ( actor = Me ) { { "don't"; } else { "doesn't"; } plus similiar changes for "your", "are", "see", "have", etc. While I was at it, I reorganized the file into functions, prepositions, verbs, and items alphabetically unless there was a better ordering plus cleaned up the indentation and brace style and a few typos. Before I mail the file back to the authors, are there any other suggestions? Even though I have made all these changes and allowed my actors in my game to pick up items, I keep getting an error from "Marvin, pick up the paper" which usually says that I am trying to compare two different data types in a comparison. However, "give paper to Marvin" works fine. Any ideas? Dani Roloson ------------------------------------------------------------------------------- From the TADS manual (please read carefully): (Like all TADS limits, this can be changed at compile-time with user-specified compiler options; of course, string space is also limited by the amount of computer in your memory, which you unfortunately cannot change with compiler options.