I'll just copy-and-paste this:
http://dl.dropbox.com/u/4152380/Travestificator.exeTook me a while to optimize, but I think it's still slower than the online app used to be. If you want to save time on that,
first select the travesty level you want,
then copy and paste the entirety of text you want processed. The entirety of creature_standard takes around ten seconds to sort through on my machine, for instance, and it's rechecked every time you paste new text into the field or change the travesty level. However, the output is nearly instantaneous and no rehashes are needed between consecutive travesties.
Bonus point, it preserves tabbing, so the result even looks like raws.
KE_TRIGGER:1]
[PERMITH]
[PERMITTED_RACE]
[ETHIC:KILL_SYMBOL:BARON]
[PERMITTED_CAVE_STYLE:baronesses consort:countess:count levels your fort]
[PERMITTED_JOB:HUN]
[SCORT:ANY_GOALS]
[DUTY_BOL:WALL:EVIL:0]
[ETHING:NOT_APPOINTED_JOB:GEND
It's still not perfect, probably, but that's the best I could do. It requires .NET 2.0, which is the smallest requirement I could set my IDE to, but that should be good enough to run in Wine et al, IIRC.
The explanation, roughly, goes like this:
The program scans the text for all combinations of letters, one less in length than the level of the travesty (so at level 4 it looks for three-letter combinations), as well as all letters that follow those combinations, also keeping count of how often a given letter follows a given combination. For output, it takes an initial letter combination, then looks at which letters follow it in the text, and picks one at random, placing it at the end of the text. Then it uses the last letters of the text to form a new letter combination to look up, and the cycle continues until a required length has been met.
And some random travesties from the prog:
[CREATURES:TEETH_WITH] - Teeth with creatures?
[PERMITTED_RACKS:5] - Multiboobage?
[ATTACK:BONED:0:70:95:98:100] - Yep, we're boned.
[PLUSHERWORKSCRIPTIONS] - Engraved teddybears?