All it takes is a pool of water, a bridge, a couple spare mechanisms and a lever.
Step 1.) Either use a natural pool, or if it's too warm, build the washing station underground so the water don't evaporate. Call this the landing zone. For a dwarf not to drown don't fill the pool too much. 3/7 is enough to clean most of them.Step 2.) Draft the dwarf into his own personal army of one. Make sure his loins are ungirded, so keep him in his feelthy clothes as you don't want the bugger losing anything in the pool. March him onto one end of the bridge.
Step 3.) This part takes practice. Your Flingify() must not throw the dwarf too short nor too far. As I'm not certain yet if the weight of the dwarf (aka how much stuff he's got on) affects his toss range, it's best to remove it from the equation by keeping the dwarves unarmed and unarmored.
Step 4.) Launch the dwarf into the pool.
Step 5.) If you have not fired the dwarf too short and stunned him, or too far and bashed him against a wall, he should be in the pool, not drowning (as it's 3/7), and only mildly stunned. If everything works out, he'll have no more goblin blood splatter or vomit on him, and his clothes will instead be soaked in water. When he/she is unshaken, undraft them, and they oughta march out and go back to work and be only mildly upset at the dunking.
I have tested this, and for the most part (barring the accidents, and the one time the baby was literally thrown out with the bath water, stupid hatch drain), it seems to get most of the filth, though I've had a couple dwarfs fail to be clean without repeated dunkings. But eventually I get em clean-ish.
A lot of work yes, but you get tired of seeing blood and vomit all over your masterpiece clothes.
[ February 28, 2008: Message edited by: MickEfinn ]