[Turn off line numbering]1: arg @args; 2: var len, out, con, vow, rare, c, caps, maxcaps, flag, last, min, max, extra; 3: 4: [(min ?= 3), (max ?= 10), (extra ?= #[])] = args; 5: len = random(max - min) + min; 6: out = ""; 7: con = "bcdfghjklmnprst"; 8: rare = ["q", "aa", "ee", "oo", "qu", "v", "w", "x", "z", "y"]; 9: vow = "aeiou"; 10: if ((| extra['con] |)) 11: con += extra['con]; 12: if ((| extra['vow] |)) 13: vow += extra['vow]; 14: if ((| extra['rare] |)) 15: rare += extra['rare]; 16: flag = random(15); 17: maxcaps = random(4) + 2; 18: while (strlen(out) < len) { 19: switch (flag) { 20: case 1, 2: 21: if (rare) { 22: c = rare.random(); 23: if (random(2) == 1) 24: rare = setremove(rare, c); 25: out += c; 26: flag = random(15); 27: } 28: case 3 .. 8: 29: c = vow.random(); 30: while (c == last) 31: c = vow.random(); 32: out += c; 33: flag = random(7) + 3; 34: case 9 .. 15: 35: c = con.random(); 36: while (c == last) 37: c = con.random(); 38: out += c; 39: flag = random(10); 40: } 41: last = c; 42: } 43: return out;
// Created 27-Mar-1995 as a part of ColdCore, see: @help Credit