SayHelp screen 12: Installation
Permission is granted to port SAY and all filters which list as `TimB'
on sayfilter's list to another MUCK, so long as my name and copyrights remain,
and so long as it's clear which filters are mine. (You can mention `TimB'
as the first word in the filter's description under sayreg, or preferably you
can create an M3 character with my name to own the programs, which I get to use
if I drop in to your MUCK :)
You may not sell or cause to be sold, any or all of this say system, for 
profit or otherwise, alone or in some kind of accumulation, without first 
having consulted me and abiding by any constraints I impose.
Say consists of three main programs: say, sayfront, and sayreg. Say actually
does the speech bit; sayfront is a nicer front-end for setting say up, and
appears to the user as sayset, sayfilter, and sayhelp. Sayreg is called through
sayfront (for seedy historical reasons), and registers sayfilters to sayfilter's
sayfilter list. :)
1. Type 'say' on its own. You will see say's dbref at the end of the version
    message. Type sayreg on its own for its dbref. The dbref of sayfront is at
    the top of this page.
*  If you have problems with .broadcast add this before the var lines:
                $def .broadcast pop
   If you have problems with .popn, add the line
                $def .popn begin dup while 1 - swap pop repeat pop
*  If you have problems with .pmatch, add the line
                $def .pmatch pop #0
   If you have problems with .tell, add the line
                $def .tell me @ swap notify
   If you have problems with .muckerlevel, add the lines
                $define .muckerlevel dup "Wizard" flag?
                 if mlevel if 4 else 0 then else mlevel then $enddef
   You should remove the lines, particularly those marked *, from say,
   sayfront, or sayreg if your version contains them, but can work without them.
2. Use @list to take a copy of those three programs on this mud, and @prog
    to copy them to the new mud as say.muf, sayfront.muf, and sayreg.muf.
    They MUST each be @set =L
3. @act  say=#0       and  @act  sayset;sayhelp;sayfilter;sayreg=#0
`  @link say=say.muf  and  @link sayset=sayfront.muf
    The owner of the programs must also own the actions.
4. @set say.muf=_version: and @set say.muf=_message: to the lines you see when
    you type 'say' on its own. (Don't copy this MUCK's dbref for sayversion)
5. @set sayfront.muf=_trigger:1234 (dbint of new global say action; no #)
`  @set sayfront.muf=_sayreg:1234 (dbint of new sayreg program; no #)
`  @set sayreg.muf=H
6. Type sayfilter on this mud for a list of filters. Their dbrefs are listed
    with them. You must transfer at least the Replace, Null, Halt and
    @RandomVerbs filters.
   Filters MUST be @set =L
    (eg sayreg add Replace #1234 Replace filter. See sayhelp 4)
7. Helptexts: lsedit sayfront.muf=_help/n  where 'n' is each page of the
    helptext. Similarly for the filters: lsedit the filter program.
    (ie _help/1 _help/2 .. _help/12. NB sayhelp 99)
8. @set all program objects = 3 [Some don't need this, but set them anyway]
Bonus random tip: To get MPI executed in @lock  (courtesy of Revar)
` @lock obj=_propname:true  @set obj=_propname:{if:{MPITEST},true}