[Turn on line numbering]
arg @args;
var len, out, con, vow, rare, c, caps, maxcaps, flag, last, min, max, extra;
[(min ?= 3), (max ?= 10), (extra ?= #[])] = args;
len = random(max - min) + min;
out = "";
con = "bcdfghjklmnprst";
rare = ["q", "aa", "ee", "oo", "qu", "v", "w", "x", "z", "y"];
vow = "aeiou";
if ((| extra['con] |))
con += extra['con];
if ((| extra['vow] |))
vow += extra['vow];
if ((| extra['rare] |))
rare += extra['rare];
flag = random(15);
maxcaps = random(4) + 2;
while (strlen(out) < len) {
switch (flag) {
case 1, 2:
if (rare) {
c = rare.random();
if (random(2) == 1)
rare = setremove(rare, c);
out += c;
flag = random(15);
}
case 3 .. 8:
c = vow.random();
while (c == last)
c = vow.random();
out += c;
flag = random(7) + 3;
case 9 .. 15:
c = con.random();
while (c == last)
c = con.random();
out += c;
flag = random(10);
}
last = c;
}
return out;
["// Created 26-Mar-1995 as a part of ColdCore, see: @help Credit"]