[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 27-Mar-1995 as a part of ColdCore, see: @help Credit