package generators import ( "encoding/json" "math/rand" "os" ) type AasimarData struct { Male struct { Nm1 []string `json:"nm1"` Nm2 []string `json:"nm2"` Nm3 []string `json:"nm3"` Nm4 []string `json:"nm4"` Nm5 []string `json:"nm5"` Nm6 []string `json:"nm6"` } `json:"male"` Female struct { Nm7 []string `json:"nm7"` Nm8 []string `json:"nm8"` Nm9 []string `json:"nm9"` Nm10 []string `json:"nm10"` Nm11 []string `json:"nm11"` Nm12 []string `json:"nm12"` Nm13 []string `json:"nm13"` } `json:"female"` } var aasimarData AasimarData func LoadAasimarData(path string) error { file, err := os.Open(path) if err != nil { return err } defer file.Close() return json.NewDecoder(file).Decode(&aasimarData) } func GenerateAasimarName(gender string) string { if gender == "female" { return generateAasimarFemaleName() } return generateAasimarMaleName() } func generateAasimarMaleName() string { nm1 := aasimarData.Male.Nm1 nm2 := aasimarData.Male.Nm2 nm3 := aasimarData.Male.Nm3 nm4 := aasimarData.Male.Nm4 nm5 := aasimarData.Male.Nm5 nm6 := aasimarData.Male.Nm6 i := rand.Intn(10) var nMs string if i < 6 { rnd := rand.Intn(len(nm1)) rnd2 := rand.Intn(len(nm2)) rnd3 := rand.Intn(len(nm3)) rnd4 := rand.Intn(len(nm4)) rnd5 := rand.Intn(len(nm6)) for nm3[rnd3] == nm1[rnd] || nm3[rnd3] == nm6[rnd5] { rnd3 = rand.Intn(len(nm3)) } nMs = nm1[rnd] + nm2[rnd2] + nm3[rnd3] + nm4[rnd4] + nm6[rnd5] } else { rnd := rand.Intn(len(nm1)) rnd2 := rand.Intn(len(nm2)) rnd3 := rand.Intn(len(nm3)) rnd4 := rand.Intn(len(nm4)) rnd5 := rand.Intn(len(nm6)) rnd6 := rand.Intn(len(nm5)) rnd7 := rand.Intn(len(nm4)) for nm5[rnd6] == nm3[rnd3] || nm5[rnd6] == nm6[rnd5] { rnd6 = rand.Intn(len(nm5)) } nMs = nm1[rnd] + nm2[rnd2] + nm3[rnd3] + nm4[rnd4] + nm5[rnd6] + nm4[rnd7] + nm6[rnd5] } return nMs } func generateAasimarFemaleName() string { nm7 := aasimarData.Female.Nm7 nm8 := aasimarData.Female.Nm8 nm9 := aasimarData.Female.Nm9 nm10 := aasimarData.Female.Nm10 nm11 := aasimarData.Female.Nm11 nm12 := aasimarData.Female.Nm12 nm13 := aasimarData.Female.Nm13 i := rand.Intn(10) var nMs string if i < 6 { rnd := rand.Intn(len(nm7)) rnd2 := rand.Intn(len(nm8)) rnd3 := rand.Intn(len(nm9)) rnd4 := rand.Intn(len(nm10)) rnd5 := rand.Intn(len(nm13)) for nm9[rnd3] == nm7[rnd] || nm9[rnd3] == nm13[rnd5] { rnd3 = rand.Intn(len(nm9)) } nMs = nm7[rnd] + nm8[rnd2] + nm9[rnd3] + nm10[rnd4] + nm13[rnd5] } else { rnd := rand.Intn(len(nm7)) rnd2 := rand.Intn(len(nm8)) rnd3 := rand.Intn(len(nm9)) rnd4 := rand.Intn(len(nm10)) rnd5 := rand.Intn(len(nm13)) rnd6 := rand.Intn(len(nm11)) rnd7 := rand.Intn(len(nm12)) for nm11[rnd6] == nm9[rnd3] || nm11[rnd6] == nm13[rnd5] { rnd6 = rand.Intn(len(nm11)) } nMs = nm7[rnd] + nm8[rnd2] + nm9[rnd3] + nm10[rnd4] + nm11[rnd6] + nm12[rnd7] + nm13[rnd5] } return nMs }