- Joined
- Nov 25, 2008
- Messages
- 1,309
This code is used to generate random names based on a pattern string.
JASS:
//===========================================================================
//
// Random Name Generator
//
// Author: Zeatherann
// Description: Generates random names based on the input pattern string.
//
//===========================================================================
//***************************************************************************
//*
//* Global Variables - These string arrays contain all the data needed for the name generator.
//*
//***************************************************************************
globals
string array udg_Names_v
string array udg_Names_V
string array udg_Names_B
string array udg_Names_c
string array udg_Names_C
string array udg_Names_s
endglobals
//***************************************************************************
//*
//* Random Name Generator
//*
//***************************************************************************
//====================================================================================================
// NameGenerator_Initialize
// takes nothing
// returns nothing
//
// This function must be called once, before any calls to GenerateName, as it initializes the data required by that function.
//
// NOTE: I usually make it filter out triple letters, but in order to not create dozens more string than I have to, I"ve chosen to not check this.
//====================================================================================================
function NameGenerator_Initialize takes nothing returns nothing
set udg_Names_v[0]="a"
set udg_Names_v[1]="e"
set udg_Names_v[2]="i"
set udg_Names_v[3]="o"
set udg_Names_v[4]="u"
set udg_Names_v[5]="y"
set udg_Names_V[0]="a"
set udg_Names_V[1]="ae"
set udg_Names_V[2]="ai"
set udg_Names_V[3]="au"
set udg_Names_V[4]="ay"
set udg_Names_V[5]="e"
set udg_Names_V[6]="ea"
set udg_Names_V[7]="ee"
set udg_Names_V[8]="ei"
set udg_Names_V[9]="eu"
set udg_Names_V[10]="ey"
set udg_Names_V[11]="i"
set udg_Names_V[12]="ia"
set udg_Names_V[13]="ie"
set udg_Names_V[14]="o"
set udg_Names_V[15]="oe"
set udg_Names_V[16]="oi"
set udg_Names_V[17]="oo"
set udg_Names_V[18]="ou"
set udg_Names_V[19]="u"
set udg_Names_V[20]="ui"
set udg_Names_V[21]="y"
set udg_Names_B[0]="b"
set udg_Names_B[1]="bl"
set udg_Names_B[2]="br"
set udg_Names_B[3]="c"
set udg_Names_B[4]="ch"
set udg_Names_B[5]="chr"
set udg_Names_B[6]="cl"
set udg_Names_B[7]="cr"
set udg_Names_B[8]="d"
set udg_Names_B[9]="dr"
set udg_Names_B[10]="f"
set udg_Names_B[11]="g"
set udg_Names_B[12]="h"
set udg_Names_B[13]="j"
set udg_Names_B[14]="k"
set udg_Names_B[15]="l"
set udg_Names_B[16]="ll"
set udg_Names_B[17]="m"
set udg_Names_B[18]="n"
set udg_Names_B[19]="p"
set udg_Names_B[20]="ph"
set udg_Names_B[21]="qu"
set udg_Names_B[22]="r"
set udg_Names_B[23]="rh"
set udg_Names_B[24]="s"
set udg_Names_B[25]="sch"
set udg_Names_B[26]="sh"
set udg_Names_B[27]="sl"
set udg_Names_B[28]="sm"
set udg_Names_B[29]="sn"
set udg_Names_B[30]="st"
set udg_Names_B[31]="str"
set udg_Names_B[32]="sw"
set udg_Names_B[33]="t"
set udg_Names_B[34]="th"
set udg_Names_B[35]="thr"
set udg_Names_B[36]="tr"
set udg_Names_B[37]="v"
set udg_Names_B[38]="w"
set udg_Names_B[39]="wh"
set udg_Names_B[40]="y"
set udg_Names_B[41]="z"
set udg_Names_B[42]="zh"
set udg_Names_c[0]="b"
set udg_Names_c[1]="c"
set udg_Names_c[2]="d"
set udg_Names_c[3]="f"
set udg_Names_c[4]="g"
set udg_Names_c[5]="h"
set udg_Names_c[6]="j"
set udg_Names_c[7]="k"
set udg_Names_c[8]="l"
set udg_Names_c[9]="m"
set udg_Names_c[10]="n"
set udg_Names_c[11]="p"
set udg_Names_c[12]="r"
set udg_Names_c[13]="s"
set udg_Names_c[14]="t"
set udg_Names_c[15]="v"
set udg_Names_c[16]="w"
set udg_Names_c[17]="x"
set udg_Names_c[18]="y"
set udg_Names_c[19]="z"
set udg_Names_C[0]="b"
set udg_Names_C[1]="c"
set udg_Names_C[2]="ch"
set udg_Names_C[3]="ck"
set udg_Names_C[4]="d"
set udg_Names_C[5]="f"
set udg_Names_C[6]="g"
set udg_Names_C[7]="gh"
set udg_Names_C[8]="h"
set udg_Names_C[9]="k"
set udg_Names_C[10]="l"
set udg_Names_C[11]="ld"
set udg_Names_C[12]="ll"
set udg_Names_C[13]="lt"
set udg_Names_C[14]="m"
set udg_Names_C[15]="n"
set udg_Names_C[16]="nd"
set udg_Names_C[17]="nn"
set udg_Names_C[18]="nt"
set udg_Names_C[19]="p"
set udg_Names_C[20]="ph"
set udg_Names_C[21]="q"
set udg_Names_C[22]="r"
set udg_Names_C[23]="rd"
set udg_Names_C[24]="rr"
set udg_Names_C[25]="rt"
set udg_Names_C[26]="s"
set udg_Names_C[27]="sh"
set udg_Names_C[28]="ss"
set udg_Names_C[29]="st"
set udg_Names_C[30]="t"
set udg_Names_C[31]="th"
set udg_Names_C[32]="v"
set udg_Names_C[33]="w"
set udg_Names_C[34]="y"
set udg_Names_C[35]="z"
set udg_Names_s[0]="ach"
set udg_Names_s[1]="ack"
set udg_Names_s[2]="ad"
set udg_Names_s[3]="age"
set udg_Names_s[4]="ald"
set udg_Names_s[5]="ale"
set udg_Names_s[6]="an"
set udg_Names_s[7]="ang"
set udg_Names_s[8]="ar"
set udg_Names_s[9]="ard"
set udg_Names_s[10]="as"
set udg_Names_s[11]="ash"
set udg_Names_s[12]="at"
set udg_Names_s[13]="ath"
set udg_Names_s[14]="augh"
set udg_Names_s[15]="aw"
set udg_Names_s[16]="ban"
set udg_Names_s[17]="bel"
set udg_Names_s[18]="bur"
set udg_Names_s[19]="cer"
set udg_Names_s[20]="cha"
set udg_Names_s[21]="che"
set udg_Names_s[22]="dan"
set udg_Names_s[23]="dar"
set udg_Names_s[24]="del"
set udg_Names_s[25]="den"
set udg_Names_s[26]="dra"
set udg_Names_s[27]="dyn"
set udg_Names_s[28]="ech"
set udg_Names_s[29]="eld"
set udg_Names_s[30]="elm"
set udg_Names_s[31]="em"
set udg_Names_s[32]="en"
set udg_Names_s[33]="end"
set udg_Names_s[34]="eng"
set udg_Names_s[35]="enth"
set udg_Names_s[36]="er"
set udg_Names_s[37]="ess"
set udg_Names_s[38]="est"
set udg_Names_s[39]="et"
set udg_Names_s[40]="gar"
set udg_Names_s[41]="gha"
set udg_Names_s[42]="hat"
set udg_Names_s[43]="hin"
set udg_Names_s[44]="hon"
set udg_Names_s[45]="ia"
set udg_Names_s[46]="ight"
set udg_Names_s[47]="ild"
set udg_Names_s[48]="im"
set udg_Names_s[49]="ina"
set udg_Names_s[50]="ine"
set udg_Names_s[51]="ing"
set udg_Names_s[52]="ir"
set udg_Names_s[53]="is"
set udg_Names_s[54]="iss"
set udg_Names_s[55]="it"
set udg_Names_s[56]="kal"
set udg_Names_s[57]="kel"
set udg_Names_s[59]="kim"
set udg_Names_s[60]="kin"
set udg_Names_s[61]="ler"
set udg_Names_s[62]="lor"
set udg_Names_s[63]="lye"
set udg_Names_s[64]="mor"
set udg_Names_s[65]="mos"
set udg_Names_s[66]="nal"
set udg_Names_s[67]="ny"
set udg_Names_s[68]="nys"
set udg_Names_s[69]="old"
set udg_Names_s[70]="om"
set udg_Names_s[71]="on"
set udg_Names_s[72]="or"
set udg_Names_s[73]="orm"
set udg_Names_s[74]="os"
set udg_Names_s[75]="ough"
set udg_Names_s[76]="per"
set udg_Names_s[77]="pol"
set udg_Names_s[78]="qua"
set udg_Names_s[79]="que"
set udg_Names_s[80]="rad"
set udg_Names_s[81]="rak"
set udg_Names_s[82]="ran"
set udg_Names_s[83]="ray"
set udg_Names_s[84]="ril"
set udg_Names_s[85]="ris"
set udg_Names_s[86]="rod"
set udg_Names_s[87]="roth"
set udg_Names_s[88]="ryn"
set udg_Names_s[89]="sam"
set udg_Names_s[90]="say"
set udg_Names_s[91]="ser"
set udg_Names_s[92]="shy"
set udg_Names_s[93]="skel"
set udg_Names_s[94]="sul"
set udg_Names_s[95]="tai"
set udg_Names_s[96]="tan"
set udg_Names_s[97]="tas"
set udg_Names_s[98]="ther"
set udg_Names_s[99]="tia"
set udg_Names_s[100]="tin"
set udg_Names_s[101]="ton"
set udg_Names_s[102]="tor"
set udg_Names_s[103]="tur"
set udg_Names_s[104]="um"
set udg_Names_s[105]="und"
set udg_Names_s[106]="unt"
set udg_Names_s[107]="urn"
set udg_Names_s[108]="usk"
set udg_Names_s[109]="ust"
set udg_Names_s[110]="ver"
set udg_Names_s[111]="ves"
set udg_Names_s[112]="vor"
set udg_Names_s[113]="war"
set udg_Names_s[114]="wor"
set udg_Names_s[115]="yer"
endfunction
//====================================================================================================
// GenerateName
// takes string Pattern - The string to base the form of a random name on.
// returns string - The randomly generated name.
//
// This function generates a random name based on the string Pattern passed to it.
//====================================================================================================
function GenerateName takes string Pattern returns string
local string Return=""
local string Character
local integer Length=StringLength(Pattern)
local integer Index=0
loop
exitwhen Index==Length
set Character=SubString(Pattern,Index,Index+1)
if(Character=="v")then
set Character=udg_Names_v[GetRandomInt(0,5)]
elseif(Character=="V")then
set Character=udg_Names_V[GetRandomInt(0,21)]
elseif(Character=="c")then
set Character=udg_Names_c[GetRandomInt(0,19)]
elseif(Character=="C")then
set Character=udg_Names_C[GetRandomInt(0,35)]
elseif(Character=="B")then
set Character=udg_Names_B[GetRandomInt(0,42)]
elseif(Character=="s")then
set Character=udg_Names_s[GetRandomInt(0,115)]
endif
if(Index==0)then
set Character=StringCase(SubString(Character,0,1),true)+SubString(Character,1,StringLength(Character))
endif
set Return=Return+Character
set Index=Index+1
endloop
return Return
endfunction
//***************************************************************************
//*
//* Example Use
//*
//***************************************************************************
function Example_Initialize takes nothing returns nothing
call NameGenerator_Initialize()
endfunction
function Example_Make_A_Name takes nothing returns nothing
call BJDebugMsg(GenerateName("Bss")) // Possible output: Blirlor.
call BJDebugMsg(GenerateName("B's-s")) // Possible output: Bl'ir-lor.
endfunction