Based on critters.pl from the Microlite20 site, I modified it to work with the Mnemosyne System.

UPDATED:05/02/08 changed the srand function to something a bit more random. Didn't want to add the Meriseinne Twister module or the truly random perl module - that feels like overkill. Plus, I am a very novice perl scripter, no need to complicate matters.

As an aside, the creatures will have the same capabilities in MUSE, they will just have simplified statistics.

#!/usr/bin/perl
srand(time ^ $$ ^ unpack "%L*", `ps axww | gzip`);
$usage="usage: $0 number maxhd\n";
$ARGV[0]=~/^(\d+)$/ && ($numb = $1) || die $usage;
$ARGV[1]=~/^(\d+)$/ && ($smass = $1) || die $usage;
%rule = (
'W','CT CT CX CDF CVFT CDFU CTU IT ICT A',
'A','KVKVtion',
'K','b c d f g j l m n p qu r s t v sP',
'I','ex in un re de',
'T','VF VEe',
'U','er ish ly en ing ness ment able ive',
'C','b c ch d f g h j k l m n p qu r s sh t th v w y sP Rr Ll',
'E','b c ch d f g dg l m n p r s t th v z',
'F','b tch d ff g gh ck ll m n n ng p r ss sh t tt th x y zz rR sP lL',
'P','p t k c',
'Q','b d g',
'L','b f k p s',
'R','P Q f th sh',
'V','a e i o u',
'D','aw ei ow ou ie ea ai oy',
'X','e i o aw ow oy'
);

for (1..$numb) { print &parse('W'), " : ", &stats, "\n\n"; }

sub parse {
$_=pop(@_);
/[^A-Z]/ && return $_;
@TMP=split(/\s+/, $rule{$_});
$_=splice(@TMP, rand @TMP, 1);
for (split('')) { print &parse($_); }
}

sub stats {
# $scl = int(rand()*$smass);
$scl = (rand>0.333? 0: int(rand()*$smass)-2);
$str = int(rand()*8)+3 + ($scl*2);
$ref = int(rand()*8)+3;
$hlt = int(rand()*8)+3;
$inq = int(rand()*8)+3;
$wil = int(rand()*8)+3;
$pre = int(rand()*8)+3;
$psi = int(rand()*8)+3;
$def = 10+$ref;
$ini = int(($ref+$inq)/2);
$tgh = int(($str+$wil)/2);
$lif = ($hlt*3)+($wil*2)+($scl*5);
$av = int(rand()*(20-$scl));
$mov = int(($str+$ref+$hlt)/3);
$dmg = int(rand()*4)+$str . 'd6';
$type = (rand>0.6?"By weapon":"Natural");

return "Scale $scl\n STR $str\t INT $inq\t PSI $psi\n REF $ref\t WIL $wil\n HLT $hlt\t PRE $pre\n DEF $def\t INI $ini\n TGH $tgh\t LIF $lif\t AV $av\n MOV $mov\n $type ($dmg)";
}

More to be done!