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.


kareila@chaoticmux.org
Mon Jun 2 01:36:44 EDT 2003
Go back to Kareila's Webspace