TinyFugue Macros
I've only been writing tf macros since after version 4 was released.
Most of these probably require version 4 - in particular, one of these
macro files, which seemed completely basic to me, apparently didn't work
at all for the person I wrote it for because he was using version 3.5.
So consider yourself warned. :)
Update 2003/06/02: An alpha release of tf 5.0 is finally available
to the public four years after it was first announced. Any macros that
have been updated for use with 5.0 will be clearly indicated, and the 4.0
versions will remain available.
In case you're not familiar with how to configure your tf, I'll give a
brief summary here. At startup, tf executes the commands in your .tfrc.
You've probably used this at least enough to define the worlds you connect
to. To use these files, just save them to your home directory and add a
/load line to your .tfrc for each one. For example, if you saved a file
with the name tf.macros, you would add the following line to your .tfrc:
/load tf.macros
For more information, go here.
The Macros
- Multidescer
new!
- A fan of my FugueEdit macros wrote me saying that she thought it would be
a good idea to write a multidescer that worked entirely within tf, avoiding
the same sorts of porting issues that motivated me to write FugueEdit. So
I did. Use this if you want to store several "stock" descriptions in your
client and switch between them, like having a closet full of clothes instead
of wearing the same thing every day.
- Nospoof Recall updated June 18, 2003
- This macro was written for people (like me) who hate seeing all the
output of NOSPOOF but sometimes need to track a spoofer. It removes
nospoof information from what you see but records it in your world's
buffer so that you can access it with /recall. However, I don't suggest you
use this if you're still using 4.0, because in normal emulation mode it
strips ansi codes, and in raw emulation mode you keep ansi color but lose
wordwrapping. This problem was addressed by the new attribute handling
in version 5.0.
- Object Porter updated June 2, 2003
- This is a useful macro I got from Pedersen's web page, which
unfortunately appears to have bitten the proverbial dust since I snarfed it.
It defines a macro, /clone, that can be used to quickly reproduce an object
between worlds you are connected to, with no intermediate logfile. I've
updated it to use OUTPUTSUFFIX to indicate the end of the @decompile,
because the old version was failing on large
objects that filled more than one output buffer.
- Page Hiliting updated June 2, 2003
- Ever miss someone's personal page because it gets lost in the noise?
These macros hilite pages and make them easier to see. I wrote them
specifically with MUX in mind; they may not work so well on other servers.
The latest version matches a "random" color to the player's name, allowing
a rough sort of threading when you're paging multiple people simultaneously.
- Nonstandard Mail Checker
updated June 2, 2003
- MIT's mail system is kinda strange... the only way I could know if
I had new mail was to check the output of the "from -t" command. So I
wrote a macro to automatically check it every five minutes, and
reset the mail status variable accordingly. You probably won't want
to use this code verbatim, but it's a relatively uncomplicated
example of how to make the status line work for you. The newer version
uses some of the new features of tf 5.0 to simplify things a bit. The
4.0 version is still available here.
- Repeating Commands from Input History
updated May 20, 2003
- These macros are meant to emulate the functionality of shell "!command"
syntax. Basically, if you type a line beginning with ! and hit return,
it'll look for the most recent command you executed that begins with
"command" and do it again. For example, if you typed something like
"@search big-complicated-string", then talked with a friend for a while,
then wanted to execute the search again, you wouldn't want to retype
the whole thing or up-arrow through everything you said to find the
command you were looking for. With this, you can just type "!@search"
and tf will resend the last input beginning with @search, as long as
it hasn't gone off the end of your input history (100 lines by default).
As an added bonus, if you enter "!command" and hit backquote (`)
instead of return, it'll grab the most recent matching command and
bring into your input buffer for editing.
(This mirrors the functionality of the spacebar when doing the same
thing in the shell, but I wanted to use a less common key for this purpose.)
The latest version fixes a bug where trying to repeat a TF command would send
the command to the open world instead of handling it within TF.
- FugueEdit updated May 20, 2003
- Probably the most common tf macro out there is one that will grab the
text of an attribute into the input buffer for editing. The incarnation
I was given required some softcode to implement, and the only tf-side code
you had to define was the gag-trigger that got the input. This worked,
but I was annoyed that I had to port this piece of softcode to every game
I was on. So I recoded it to be defined entirely within tf.
It uses the usual syntax: "ed <obj>/<attr>". The latest
version has two more commands: "ng <obj>" (for editing names) and
"lock <obj>[/<type>]" (for editing locks).
- World Type Macros
- When I first started using tf, I almost never bothered to define types
for my worlds because they were all tiny derivatives and I wanted
all my macros to work everywhere. But as I gained experience, I
discovered world typing can be a nifty tool for customizing tf's
behavior. These macros make "pub message" MUX-based syntax do
the right thing on TinyMUSH, TinyMURE, RhostMUSH and PennMUSH, so
I don't have to remember which world is which kind once I've defined
the world with the corresponding type. To make them work for you,
just define your worlds with the appropriate type, e.g.
"/addworld -Ttiny.mux chaotic chaoticmux.org 4201". Also included
are macros to emulate MUX's "lastpaged" behavior on TinyMUSH and
RhostMUSH, as well as macros from my brief foray into LP MUDs that
make "message and :message work in place of say message and
emote message on lp typed worlds. (Ugh!)
- Automatic Pinger
- More often than I'd like, some of my favorite servers will go down
or become unreachable. This macro assumes you have open a /telnet
connection to a shell from which you can run the ping command.
It sends a 5-count ping command every five minutes and does some
gagging and hiliting on the output. With some minimal hacking it
could be made to take the server you want to ping as an input argument,
I just didn't bother.
- Morse Code Translator
- This one's completely silly, I admit it. ChaoticMUX has two
functions, morse() and unmorse(), that do what you might expect:
morse() translates text into morse code, and unmorse translates morse
code into text. Well, whenever someone started speaking in morse code
(it happens), I didn't want to keep cutting and pasting into the
unmorse function, so I wrote a trigger to automatically translate
anything that looks like morse code. "Looks like" is a bit vague,
but this regexp seems to do the right thing most of the time.
If you're not on ChaoticMUX you probably won't care about this one.
- Zwrite Mode
- I wrote this for a friend who didn't like to connect to my mux because
he was used to hitting return at the end of every line, even if he wasn't
finished with a sentence. Note I don't use this myself;
it is included here as an example of a complicated send hook.
Also note that the aforementioned friend still never connects to my mux. *sigh*
- Parenmatch Bindings
- Another set of macros I don't use. :) These bind ), ], and } keys to
look for the matching left paren in your input and flash back to it briefly
so you can see what you're matching. It's a nice idea and it works
well in emacs, but I don't use it because if you keep typing during
the flashback period, the text gets inserted at the flashback point.
Yick. Also if you paste text it tries to execute the macro once for
every close paren in the stuff you pasted, which is undesirable. If
anyone has a better solution feel free to email it to me. Also please
note I didn't write these, someone sent them to the tinyfugue mailing list
and I grabbed them without remembering to note who should be credited. :(
- Ansi Color Tables
- This is a fun macro from the tf mailing list - I remembered to note
the author this time, it's David Moore. Just type /colors to see all the
possible tf color combinations.