	    A STEP BY STEP GUIDE TO CONVERTING TADS GAMES TO WADV.T
					by G. Kevin Wilson

	Well, my package would be pretty shoddy if I didn't include at least
a little support for older games, wouldn't it?  Fortunately, I have made few
monumental changes, preferring instead to shore up the original foundation of
ADV.T, and add a fresh coat of paint.  In reality you will have to do almost
nothing yourself to convert a game over.  But bear in mind the following list
of things that Often Go Wrong (tm).

  1.) Calls to scoreStatus() now take no arguments.
  2.) init() should be renamed userinit() in your game, and must replace the
	existing userinit().
  3.) Go through your game and see what all you have modified or replaced
	from the old ADV.T file.  If you are trying to get an evocable
	feature to work, but it's not taking effect, chances are that you've
	replaced an essential function in your game somewhere.
  4.) Make sure that you've correctly set a scoring method in WADV.T.
  5.) R(ead) T(he) F(rigging) WADV.T file.

	Now, take a look at UNDER.T.  This is a short game I originally
wrote using ADV.T, and then converted it over to WADV.T afterwards.  As you
will notice, there are a few rather unusual lines in it.  These are generally
so that you can test out UNDER.T with a variety of different evocable
features to satisfy yourself that things do, in fact, work as advertised.
Let's look at these weird lines now:

--------------------------------------------------
LINE 1:
#include <wadv.t>

	[This is one of the more obvious mistakes you can make.  If you don't
remember to change adv.t to wadv.t, you are never going to see any of the
new features.]

LINE 25:
replace userinit:function

	[Remember to REPLACE userinit.  There is a default 'marker' function
in FUNCTION.T that you must override.]

LINES 34-36
    Me.location := shazam;                // move player to initial location
    shazam.lookAround( true );                    // show player where he is
    shazam.isseen := true;                  // note that we've seen the room

	[These three lines move the player to the first room and make him
look around right away.  I used to have init() do this stuff.]

LINE 39
   scoreStatus();

	[Initialize the status line.  Note that scoreStatus now takes no
arguments at all.  There was no reason to pass all those things around before
except to give the author more control, and now that control has been moved
to SCORE.T, undiminished.]

LINES 143-146
#ifdef BITTY_COMBAT
	 if (Broom = Me.ready)
	   Me.ready := Staff;
#endif

	[This is for your convenience.  This segment of code here makes things
more consistant from the player's point of view when using the Itty Bitty
Combat module.  On the other hand, it might give you grief without the combat
module if I didn't have the #ifdef statement.  There is no other reason to do
this.  If you plan to stick to one setup for your game, you should never have
to do anything like this.]

LINE 261
Broom: item, qcontainer // , weapon // Add this when using BITTY_COMBAT.

	[Ok, when you use the Itty Bitty Combat module, you must remove the
first // from this line, and be sure to replace it when you are not using
the module.  I could add weapon to the standard OBJECTS.T, I suppose, but
there's no real need to do so.]
--------------------------------------------------

	And that's it.  I had to change a total of, count them, 11 lines.
Unless you count the other 2 appearances of scoreStatus.  Even then, only 13
lines.  And now I can use all the spiffy little features that I added to
WADV.T.  Even a much larger game will not need many changes unless you did
some really weird stuff with it.

Where to go from here:
	I advise you to now go read both UNDER.T, and WADV.T.  It's a good
idea to add and take out several of the features to get the hang of things.
You'll find that it's really easy to do, I'm sure.  And of course, if you're
not sure what a certain piece of code is doing, just ask me.  If I don't
know, I can find out.

				G. Kevin Wilson
				Whizzard
				whizzard@uclink.berkeley.edu
