Initial commit
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
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 {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
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
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type ArakocraArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
Nm5 []string `json:"nm5"`
|
||||
}
|
||||
|
||||
func LoadArakocraArrays(path string) (*ArakocraArrays, error) {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
var arr ArakocraArrays
|
||||
if err := json.NewDecoder(file).Decode(&arr); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &arr, nil
|
||||
}
|
||||
|
||||
func ArakocraNameMas(arr *ArakocraArrays, check func(string) bool, i int) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd3 := rand.Intn(len(arr.Nm5))
|
||||
var nMs string
|
||||
if i < 5 {
|
||||
for arr.Nm1[rnd] == arr.Nm5[rnd3] {
|
||||
rnd3 = rand.Intn(len(arr.Nm5))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm5[rnd3]
|
||||
} else {
|
||||
rnd4 := rand.Intn(len(arr.Nm3))
|
||||
rnd5 := rand.Intn(len(arr.Nm4))
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd4] + arr.Nm4[rnd5] + arr.Nm5[rnd3]
|
||||
}
|
||||
if check(strings.ToLower(nMs)) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type BugbearArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
Nm5 []string `json:"nm5"`
|
||||
}
|
||||
|
||||
func LoadBugbearArrays(path string) (*BugbearArrays, error) {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
var arrays BugbearArrays
|
||||
if err := json.NewDecoder(file).Decode(&arrays); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &arrays, nil
|
||||
}
|
||||
|
||||
func BugbearNameMas(arr *BugbearArrays, checkSwear func(string) bool) string {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
nTp := rand.Intn(3)
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm4))
|
||||
rnd3 := rand.Intn(len(arr.Nm5))
|
||||
var nMs string
|
||||
if nTp == 0 {
|
||||
nMs = arr.Nm1[rnd] + arr.Nm4[rnd2] + arr.Nm5[rnd3]
|
||||
} else {
|
||||
rnd4 := rand.Intn(len(arr.Nm2))
|
||||
rnd5 := rand.Intn(len(arr.Nm3))
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd4] + arr.Nm3[rnd5] + arr.Nm4[rnd2] + arr.Nm5[rnd3]
|
||||
}
|
||||
if checkSwear != nil && checkSwear(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type CentaurData 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
} `json:"male"`
|
||||
Female struct {
|
||||
Nm8 []string `json:"nm8"`
|
||||
Nm9 []string `json:"nm9"`
|
||||
Nm10 []string `json:"nm10"`
|
||||
Nm11 []string `json:"nm11"`
|
||||
Nm12 []string `json:"nm12"`
|
||||
Nm13 []string `json:"nm13"`
|
||||
Nm14 []string `json:"nm14"`
|
||||
} `json:"female"`
|
||||
Surname1 []string `json:"surname1"`
|
||||
Surname2 []string `json:"surname2"`
|
||||
}
|
||||
|
||||
var centaurData CentaurData
|
||||
|
||||
func LoadCentaurData(path string) error {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
return json.NewDecoder(file).Decode(¢aurData)
|
||||
}
|
||||
|
||||
func GenerateCentaurName(gender string) string {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
var nMs string
|
||||
if gender == "female" {
|
||||
nMs = generateCentaurFemaleName()
|
||||
} else {
|
||||
nMs = generateCentaurMaleName()
|
||||
}
|
||||
sur1 := centaurData.Surname1[rand.Intn(len(centaurData.Surname1))]
|
||||
sur2 := centaurData.Surname2[rand.Intn(len(centaurData.Surname2))]
|
||||
return nMs + " " + sur1 + sur2
|
||||
}
|
||||
|
||||
func generateCentaurMaleName() string {
|
||||
m := centaurData.Male
|
||||
nTp := rand.Intn(5)
|
||||
rnd := rand.Intn(len(m.Nm1))
|
||||
rnd2 := rand.Intn(len(m.Nm2))
|
||||
rnd5 := rand.Intn(len(m.Nm7))
|
||||
if nTp == 0 {
|
||||
for m.Nm1[rnd] == "" {
|
||||
rnd = rand.Intn(len(m.Nm1))
|
||||
}
|
||||
for m.Nm7[rnd5] == "" {
|
||||
rnd5 = rand.Intn(len(m.Nm7))
|
||||
}
|
||||
return m.Nm1[rnd] + m.Nm2[rnd2] + m.Nm7[rnd5]
|
||||
} else {
|
||||
rnd3 := rand.Intn(len(m.Nm3))
|
||||
rnd4 := rand.Intn(len(m.Nm4))
|
||||
for m.Nm3[rnd3] == m.Nm1[rnd] || m.Nm3[rnd3] == m.Nm7[rnd5] {
|
||||
rnd3 = rand.Intn(len(m.Nm3))
|
||||
}
|
||||
if rnd2 == 0 {
|
||||
for rnd4 == 0 {
|
||||
rnd4 = rand.Intn(len(m.Nm4))
|
||||
}
|
||||
}
|
||||
if nTp < 4 {
|
||||
return m.Nm1[rnd] + m.Nm2[rnd2] + m.Nm3[rnd3] + m.Nm4[rnd4] + m.Nm7[rnd5]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(m.Nm5))
|
||||
rnd7 := rand.Intn(len(m.Nm6))
|
||||
for m.Nm3[rnd3] == m.Nm5[rnd6] || m.Nm5[rnd6] == m.Nm7[rnd5] {
|
||||
rnd6 = rand.Intn(len(m.Nm5))
|
||||
}
|
||||
return m.Nm1[rnd] + m.Nm2[rnd2] + m.Nm3[rnd3] + m.Nm4[rnd4] + m.Nm5[rnd6] + m.Nm6[rnd7] + m.Nm7[rnd5]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func generateCentaurFemaleName() string {
|
||||
f := centaurData.Female
|
||||
nTp := rand.Intn(3)
|
||||
rnd := rand.Intn(len(f.Nm8))
|
||||
rnd2 := rand.Intn(len(f.Nm9))
|
||||
rnd3 := rand.Intn(len(f.Nm10))
|
||||
rnd4 := rand.Intn(len(f.Nm13))
|
||||
rnd5 := rand.Intn(len(f.Nm14))
|
||||
if nTp < 2 {
|
||||
for f.Nm8[rnd] == f.Nm10[rnd3] || f.Nm10[rnd3] == f.Nm14[rnd5] {
|
||||
rnd3 = rand.Intn(len(f.Nm10))
|
||||
}
|
||||
return f.Nm8[rnd] + f.Nm9[rnd2] + f.Nm10[rnd3] + f.Nm13[rnd4] + f.Nm14[rnd5]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(f.Nm11))
|
||||
rnd7 := rand.Intn(len(f.Nm12))
|
||||
for f.Nm12[rnd7] == f.Nm10[rnd3] || f.Nm12[rnd7] == f.Nm14[rnd5] {
|
||||
rnd7 = rand.Intn(len(f.Nm12))
|
||||
}
|
||||
return f.Nm8[rnd] + f.Nm9[rnd2] + f.Nm10[rnd3] + f.Nm11[rnd6] + f.Nm12[rnd7] + f.Nm13[rnd4] + f.Nm14[rnd5]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type ChangelingArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
}
|
||||
|
||||
func LoadChangelingArrays(path string) (*ChangelingArrays, error) {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
var arrays ChangelingArrays
|
||||
if err := json.NewDecoder(file).Decode(&arrays); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &arrays, nil
|
||||
}
|
||||
|
||||
func ChangelingNameMas(arr *ChangelingArrays, checkSwear func(string) bool) string {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
for arr.Nm1[rnd] == arr.Nm3[rnd3] {
|
||||
rnd3 = rand.Intn(len(arr.Nm3))
|
||||
}
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3]
|
||||
if checkSwear != nil && checkSwear(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type DeepGnomeData struct {
|
||||
Male struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
Nm5 []string `json:"nm5"`
|
||||
} `json:"male"`
|
||||
Female struct {
|
||||
Nm6 []string `json:"nm6"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
Nm8 []string `json:"nm8"`
|
||||
Nm9 []string `json:"nm9"`
|
||||
Nm10 []string `json:"nm10"`
|
||||
Nm11 []string `json:"nm11"`
|
||||
Nm12 []string `json:"nm12"`
|
||||
} `json:"female"`
|
||||
Surname1 []string `json:"surname1"`
|
||||
Surname2 []string `json:"surname2"`
|
||||
}
|
||||
|
||||
var deepGnomeData DeepGnomeData
|
||||
|
||||
func LoadDeepGnomeData(path string) error {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
return json.NewDecoder(file).Decode(&deepGnomeData)
|
||||
}
|
||||
|
||||
func GenerateDeepGnomeName(gender string) string {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
var nMs string
|
||||
if gender == "female" {
|
||||
nMs = generateDeepGnomeFemaleName()
|
||||
} else {
|
||||
nMs = generateDeepGnomeMaleName()
|
||||
}
|
||||
sur1 := deepGnomeData.Surname1[rand.Intn(len(deepGnomeData.Surname1))]
|
||||
sur2 := deepGnomeData.Surname2[rand.Intn(len(deepGnomeData.Surname2))]
|
||||
return nMs + " " + sur1 + sur2
|
||||
}
|
||||
|
||||
func generateDeepGnomeMaleName() string {
|
||||
m := deepGnomeData.Male
|
||||
rnd := rand.Intn(len(m.Nm1))
|
||||
rnd2 := rand.Intn(len(m.Nm2))
|
||||
rnd3 := rand.Intn(len(m.Nm3))
|
||||
rnd4 := rand.Intn(len(m.Nm4))
|
||||
rnd5 := rand.Intn(len(m.Nm5))
|
||||
for m.Nm3[rnd3] == m.Nm1[rnd] || m.Nm3[rnd3] == m.Nm5[rnd5] {
|
||||
rnd3 = rand.Intn(len(m.Nm3))
|
||||
}
|
||||
return m.Nm1[rnd] + m.Nm2[rnd2] + m.Nm3[rnd3] + m.Nm4[rnd4] + m.Nm5[rnd5]
|
||||
}
|
||||
|
||||
func generateDeepGnomeFemaleName() string {
|
||||
f := deepGnomeData.Female
|
||||
i := rand.Intn(10)
|
||||
if i < 5 {
|
||||
rnd := rand.Intn(len(f.Nm6))
|
||||
rnd2 := rand.Intn(len(f.Nm7))
|
||||
rnd3 := rand.Intn(len(f.Nm8))
|
||||
rnd4 := rand.Intn(len(f.Nm9))
|
||||
rnd5 := rand.Intn(len(f.Nm12))
|
||||
if rnd < 5 && rnd5 < 7 {
|
||||
for rnd5 < 7 {
|
||||
rnd5 = rand.Intn(len(f.Nm12))
|
||||
}
|
||||
}
|
||||
for f.Nm8[rnd3] == f.Nm6[rnd] || f.Nm8[rnd3] == f.Nm12[rnd5] {
|
||||
rnd3 = rand.Intn(len(f.Nm8))
|
||||
}
|
||||
return f.Nm6[rnd] + f.Nm7[rnd2] + f.Nm8[rnd3] + f.Nm9[rnd4] + f.Nm12[rnd5]
|
||||
} else {
|
||||
rnd := rand.Intn(len(f.Nm6))
|
||||
rnd2 := rand.Intn(len(f.Nm7))
|
||||
rnd3 := rand.Intn(len(f.Nm8))
|
||||
rnd4 := rand.Intn(len(f.Nm9))
|
||||
rnd5 := rand.Intn(len(f.Nm10))
|
||||
rnd6 := rand.Intn(len(f.Nm11))
|
||||
for f.Nm10[rnd5] == f.Nm8[rnd3] || f.Nm8[rnd3] == f.Nm6[rnd] {
|
||||
rnd3 = rand.Intn(len(f.Nm8))
|
||||
}
|
||||
return f.Nm6[rnd] + f.Nm7[rnd2] + f.Nm8[rnd3] + f.Nm9[rnd4] + f.Nm10[rnd5] + f.Nm11[rnd6]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type DevaData struct {
|
||||
Male struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
Nm5 []string `json:"nm5"`
|
||||
} `json:"male"`
|
||||
Female 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
Nm8 []string `json:"nm8"`
|
||||
Nm9 []string `json:"nm9"`
|
||||
Nm10 []string `json:"nm10"`
|
||||
Nm11 []string `json:"nm11"`
|
||||
} `json:"female"`
|
||||
}
|
||||
|
||||
var devaData DevaData
|
||||
|
||||
func LoadDevaData(path string) error {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
return json.NewDecoder(file).Decode(&devaData)
|
||||
}
|
||||
|
||||
func GenerateDevaName(gender string) string {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
if gender == "female" {
|
||||
return generateDevaFemaleName()
|
||||
}
|
||||
return generateDevaMaleName()
|
||||
}
|
||||
|
||||
func generateDevaMaleName() string {
|
||||
m := devaData.Male
|
||||
rnd := rand.Intn(len(m.Nm1))
|
||||
rnd2 := rand.Intn(len(m.Nm2))
|
||||
rnd3 := rand.Intn(len(m.Nm3))
|
||||
rnd4 := rand.Intn(len(m.Nm4))
|
||||
rnd5 := rand.Intn(len(m.Nm5))
|
||||
for m.Nm3[rnd3] == m.Nm1[rnd] || m.Nm3[rnd3] == m.Nm5[rnd5] {
|
||||
rnd3 = rand.Intn(len(m.Nm3))
|
||||
}
|
||||
return m.Nm1[rnd] + m.Nm2[rnd2] + m.Nm3[rnd3] + m.Nm4[rnd4] + m.Nm5[rnd5]
|
||||
}
|
||||
|
||||
func generateDevaFemaleName() string {
|
||||
f := devaData.Female
|
||||
i := rand.Intn(10)
|
||||
if i < 6 {
|
||||
rnd := rand.Intn(len(f.Nm6))
|
||||
rnd2 := rand.Intn(len(f.Nm7))
|
||||
rnd3 := rand.Intn(len(f.Nm8))
|
||||
rnd4 := rand.Intn(len(f.Nm9))
|
||||
rnd5 := rand.Intn(len(f.Nm11))
|
||||
for f.Nm8[rnd3] == f.Nm6[rnd] || f.Nm8[rnd3] == f.Nm11[rnd5] {
|
||||
rnd3 = rand.Intn(len(f.Nm8))
|
||||
}
|
||||
return f.Nm6[rnd] + f.Nm7[rnd2] + f.Nm8[rnd3] + f.Nm9[rnd4] + f.Nm11[rnd5]
|
||||
} else {
|
||||
rnd := rand.Intn(len(f.Nm6))
|
||||
rnd2 := rand.Intn(len(f.Nm7))
|
||||
rnd3 := rand.Intn(len(f.Nm8))
|
||||
rnd4 := rand.Intn(len(f.Nm9))
|
||||
rnd5 := rand.Intn(len(f.Nm10))
|
||||
rnd6 := rand.Intn(len(f.Nm9))
|
||||
rnd7 := rand.Intn(len(f.Nm11))
|
||||
for f.Nm10[rnd5] == f.Nm11[rnd7] || f.Nm10[rnd5] == f.Nm8[rnd3] {
|
||||
rnd5 = rand.Intn(len(f.Nm10))
|
||||
}
|
||||
return f.Nm6[rnd] + f.Nm7[rnd2] + f.Nm8[rnd3] + f.Nm9[rnd4] + f.Nm10[rnd5] + f.Nm9[rnd6] + f.Nm11[rnd7]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type DragonbornArrays 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"`
|
||||
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"`
|
||||
}
|
||||
|
||||
func LoadDragonbornArrays(path string) (*DragonbornArrays, error) {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
var arrays DragonbornArrays
|
||||
if err := json.NewDecoder(file).Decode(&arrays); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &arrays, nil
|
||||
}
|
||||
|
||||
func DragonbornNameMas(arr *DragonbornArrays, checkSwear func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2]
|
||||
if checkSwear != nil && checkSwear(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func DragonbornNameFem(arr *DragonbornArrays, checkSwear func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm3))
|
||||
rnd2 := rand.Intn(len(arr.Nm4))
|
||||
nMs := arr.Nm3[rnd] + arr.Nm4[rnd2]
|
||||
if checkSwear != nil && checkSwear(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func DragonbornNameSur(arr *DragonbornArrays, checkSwear func(string) bool) string {
|
||||
ntp := rand.Intn(10)
|
||||
rnd := rand.Intn(len(arr.Nm5))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
rnd3 := rand.Intn(len(arr.Nm7))
|
||||
rnd4 := rand.Intn(len(arr.Nm6))
|
||||
rnd5 := rand.Intn(len(arr.Nm10))
|
||||
for arr.Nm7[rnd3] == arr.Nm5[rnd] || arr.Nm7[rnd3] == arr.Nm10[rnd5] {
|
||||
rnd3 = rand.Intn(len(arr.Nm7))
|
||||
}
|
||||
if ntp < 4 {
|
||||
nSr := arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm6[rnd4] + arr.Nm10[rnd5]
|
||||
if checkSwear != nil && checkSwear(nSr) {
|
||||
return ""
|
||||
}
|
||||
return nSr
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm6))
|
||||
rnd7 := rand.Intn(len(arr.Nm8))
|
||||
for arr.Nm7[rnd3] == arr.Nm8[rnd7] || arr.Nm8[rnd7] == arr.Nm10[rnd5] {
|
||||
rnd7 = rand.Intn(len(arr.Nm8))
|
||||
}
|
||||
if ntp < 7 {
|
||||
nSr := arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm6[rnd4] + arr.Nm8[rnd7] + arr.Nm6[rnd6] + arr.Nm10[rnd5]
|
||||
if checkSwear != nil && checkSwear(nSr) {
|
||||
return ""
|
||||
}
|
||||
return nSr
|
||||
} else {
|
||||
rnd8 := rand.Intn(len(arr.Nm6))
|
||||
rnd9 := rand.Intn(len(arr.Nm9))
|
||||
for arr.Nm9[rnd9] == arr.Nm8[rnd7] || arr.Nm9[rnd9] == arr.Nm10[rnd5] {
|
||||
rnd9 = rand.Intn(len(arr.Nm9))
|
||||
}
|
||||
nSr := arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm6[rnd4] + arr.Nm8[rnd7] + arr.Nm6[rnd6] + arr.Nm9[rnd9] + arr.Nm6[rnd8] + arr.Nm10[rnd5]
|
||||
if checkSwear != nil && checkSwear(nSr) {
|
||||
return ""
|
||||
}
|
||||
return nSr
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type DrowData struct {
|
||||
NmF []string `json:"nmF"`
|
||||
NmFRf []string `json:"nmFRf"`
|
||||
NmFRl []string `json:"nmFRl"`
|
||||
NmFFf []string `json:"nmFFf"`
|
||||
NmFFl []string `json:"nmFFl"`
|
||||
NmM []string `json:"nmM"`
|
||||
NmMRf []string `json:"nmMRf"`
|
||||
NmMRl []string `json:"nmMRl"`
|
||||
NmMFf []string `json:"nmMFf"`
|
||||
NmMFl []string `json:"nmMFl"`
|
||||
NmS []string `json:"nmS"`
|
||||
NmSRf []string `json:"nmSRf"`
|
||||
NmSRl []string `json:"nmSRl"`
|
||||
NmSFf []string `json:"nmSFf"`
|
||||
NmSFl []string `json:"nmSFl"`
|
||||
}
|
||||
|
||||
var drowData DrowData
|
||||
|
||||
func init() {
|
||||
file, err := os.Open("data/drow.json")
|
||||
if err != nil {
|
||||
panic(fmt.Errorf("failed to open drow.json: %w", err))
|
||||
}
|
||||
defer file.Close()
|
||||
if err := json.NewDecoder(file).Decode(&drowData); err != nil {
|
||||
panic(fmt.Errorf("failed to decode drow.json: %w", err))
|
||||
}
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
}
|
||||
|
||||
func DrowName(gender, surname string) string {
|
||||
var first, last string
|
||||
gender = strings.ToLower(gender)
|
||||
switch gender {
|
||||
case "male":
|
||||
first = drowFirstNameMale()
|
||||
case "female":
|
||||
first = drowFirstNameFemale()
|
||||
default:
|
||||
if rand.Intn(2) == 0 {
|
||||
first = drowFirstNameMale()
|
||||
} else {
|
||||
first = drowFirstNameFemale()
|
||||
}
|
||||
}
|
||||
|
||||
// Surname logic
|
||||
if surname == "true" {
|
||||
last = drowSurname()
|
||||
}
|
||||
|
||||
if last != "" {
|
||||
return first + " " + last
|
||||
}
|
||||
return first
|
||||
}
|
||||
|
||||
func drowFirstNameMale() string {
|
||||
if rand.Intn(2) == 0 {
|
||||
return drowData.NmM[rand.Intn(len(drowData.NmM))]
|
||||
}
|
||||
return drowData.NmMRf[rand.Intn(len(drowData.NmMRf))] + drowData.NmMRl[rand.Intn(len(drowData.NmMRl))]
|
||||
}
|
||||
|
||||
func drowFirstNameFemale() string {
|
||||
if rand.Intn(2) == 0 {
|
||||
return drowData.NmF[rand.Intn(len(drowData.NmF))]
|
||||
}
|
||||
return drowData.NmFFf[rand.Intn(len(drowData.NmFFf))] + drowData.NmFFl[rand.Intn(len(drowData.NmFFl))]
|
||||
}
|
||||
|
||||
func drowSurname() string {
|
||||
if rand.Intn(2) == 0 {
|
||||
return drowData.NmS[rand.Intn(len(drowData.NmS))]
|
||||
}
|
||||
return drowData.NmSRf[rand.Intn(len(drowData.NmSRf))] + drowData.NmSRl[rand.Intn(len(drowData.NmSRl))]
|
||||
}
|
||||
|
||||
// DrowSurname returns a random Drow surname.
|
||||
func DrowSurname() string {
|
||||
return drowSurname()
|
||||
}
|
||||
|
||||
// LoadDrowData loads the Drow data from the specified JSON file.
|
||||
func LoadDrowData(path string) error {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
return json.NewDecoder(file).Decode(&drowData)
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type DuergarArrays 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"`
|
||||
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"`
|
||||
}
|
||||
|
||||
func LoadDuergarArrays(path string) (*DuergarArrays, error) {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
var arrays DuergarArrays
|
||||
if err := json.NewDecoder(file).Decode(&arrays); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &arrays, nil
|
||||
}
|
||||
|
||||
func DuergarNameMas(arr *DuergarArrays, checkSwear func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2]
|
||||
if checkSwear != nil && checkSwear(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func DuergarNameFem(arr *DuergarArrays, checkSwear func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm3))
|
||||
rnd2 := rand.Intn(len(arr.Nm4))
|
||||
nMs := arr.Nm3[rnd] + arr.Nm4[rnd2]
|
||||
if checkSwear != nil && checkSwear(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func DuergarNameSur(arr *DuergarArrays, checkSwear func(string) bool) string {
|
||||
nTp := rand.Intn(2)
|
||||
rnd := rand.Intn(len(arr.Nm5))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
rnd3 := rand.Intn(len(arr.Nm7))
|
||||
rnd4 := rand.Intn(len(arr.Nm10))
|
||||
rnd5 := rand.Intn(len(arr.Nm11))
|
||||
if nTp == 0 {
|
||||
for arr.Nm11[rnd5] == arr.Nm7[rnd3] && arr.Nm7[rnd3] == arr.Nm5[rnd] {
|
||||
rnd3 = rand.Intn(len(arr.Nm7))
|
||||
}
|
||||
nMs := arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm10[rnd4] + arr.Nm11[rnd5]
|
||||
if checkSwear != nil && checkSwear(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm8))
|
||||
rnd7 := rand.Intn(len(arr.Nm9))
|
||||
for arr.Nm11[rnd5] == arr.Nm9[rnd6] && arr.Nm9[rnd6] == arr.Nm7[rnd3] {
|
||||
rnd6 = rand.Intn(len(arr.Nm9))
|
||||
}
|
||||
nMs := arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm8[rnd6] + arr.Nm9[rnd7] + arr.Nm10[rnd4] + arr.Nm11[rnd5]
|
||||
if checkSwear != nil && checkSwear(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
}
|
||||
|
||||
func DuergarNameFull(arr *DuergarArrays, gender string, checkSwear func(string) bool) string {
|
||||
var first string
|
||||
if gender == "female" {
|
||||
first = DuergarNameFem(arr, checkSwear)
|
||||
} else {
|
||||
first = DuergarNameMas(arr, checkSwear)
|
||||
}
|
||||
surname := DuergarNameSur(arr, checkSwear)
|
||||
return first + " " + surname
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type DwarfArrays 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"`
|
||||
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"`
|
||||
}
|
||||
|
||||
func LoadDwarfArrays(path string) (*DwarfArrays, error) {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
var arr DwarfArrays
|
||||
if err := json.NewDecoder(file).Decode(&arr); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &arr, nil
|
||||
}
|
||||
|
||||
func DwarfNameFem(arr *DwarfArrays, check func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm3))
|
||||
rnd2 := rand.Intn(len(arr.Nm4))
|
||||
nMs := arr.Nm3[rnd] + arr.Nm4[rnd2]
|
||||
if check(strings.ToLower(nMs)) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func DwarfNameMas(arr *DwarfArrays, check func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2]
|
||||
if check(strings.ToLower(nMs)) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func DwarfNameSur(arr *DwarfArrays, check func(string) bool) string {
|
||||
nTp := rand.Intn(2)
|
||||
rnd := rand.Intn(len(arr.Nm5))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
rnd3 := rand.Intn(len(arr.Nm7))
|
||||
rnd4 := rand.Intn(len(arr.Nm10))
|
||||
rnd5 := rand.Intn(len(arr.Nm11))
|
||||
var nMs string
|
||||
if nTp == 0 {
|
||||
for arr.Nm11[rnd5] == arr.Nm7[rnd3] && arr.Nm7[rnd3] == arr.Nm5[rnd] {
|
||||
rnd3 = rand.Intn(len(arr.Nm7))
|
||||
}
|
||||
nMs = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm10[rnd4] + arr.Nm11[rnd5]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm8))
|
||||
rnd7 := rand.Intn(len(arr.Nm9))
|
||||
for arr.Nm11[rnd5] == arr.Nm9[rnd7] || arr.Nm9[rnd7] == arr.Nm7[rnd3] {
|
||||
rnd7 = rand.Intn(len(arr.Nm9))
|
||||
}
|
||||
nMs = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm8[rnd6] + arr.Nm9[rnd7] + arr.Nm10[rnd4] + arr.Nm11[rnd5]
|
||||
}
|
||||
if check(strings.ToLower(nMs)) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type EladrinArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
}
|
||||
|
||||
func LoadEladrinArrays(path string) (*EladrinArrays, error) {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
var arrays EladrinArrays
|
||||
if err := json.NewDecoder(file).Decode(&arrays); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &arrays, nil
|
||||
}
|
||||
|
||||
func EladrinNameMas(arr *EladrinArrays, checkSwear func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2]
|
||||
if checkSwear != nil && checkSwear(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func EladrinNameFem(arr *EladrinArrays, checkSwear func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm3))
|
||||
rnd2 := rand.Intn(len(arr.Nm4))
|
||||
nMs := arr.Nm3[rnd] + arr.Nm4[rnd2]
|
||||
if checkSwear != nil && checkSwear(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type ElfArrays 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"`
|
||||
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"`
|
||||
Nm14 []string `json:"nm14"`
|
||||
Nm15 []string `json:"nm15"`
|
||||
Nm16 []string `json:"nm16"`
|
||||
Nm17 []string `json:"nm17"`
|
||||
Nm18 []string `json:"nm18"`
|
||||
}
|
||||
|
||||
func LoadElfArrays(path string) (*ElfArrays, error) {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
var arr ElfArrays
|
||||
if err := json.NewDecoder(file).Decode(&arr); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &arr, nil
|
||||
}
|
||||
|
||||
func ElfNameFem(arr *ElfArrays, check func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm3))
|
||||
rnd2 := rand.Intn(len(arr.Nm4))
|
||||
nMs := arr.Nm3[rnd] + arr.Nm4[rnd2]
|
||||
if check(strings.ToLower(nMs)) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func ElfNameMas(arr *ElfArrays, check func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2]
|
||||
if check(strings.ToLower(nMs)) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func ElfNameSur(arr *ElfArrays, check func(string) bool) string {
|
||||
nTp := rand.Intn(8)
|
||||
rnd := rand.Intn(len(arr.Nm5))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
rnd3 := rand.Intn(len(arr.Nm7))
|
||||
rnd4 := rand.Intn(len(arr.Nm10))
|
||||
rnd5 := rand.Intn(len(arr.Nm11))
|
||||
var nMs string
|
||||
if nTp < 3 {
|
||||
for arr.Nm11[rnd5] == arr.Nm7[rnd3] && arr.Nm7[rnd3] == arr.Nm5[rnd] {
|
||||
rnd3 = rand.Intn(len(arr.Nm7))
|
||||
}
|
||||
nMs = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm10[rnd4] + arr.Nm11[rnd5]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm8))
|
||||
rnd7 := rand.Intn(len(arr.Nm9))
|
||||
for arr.Nm11[rnd5] == arr.Nm9[rnd6] && arr.Nm9[rnd6] == arr.Nm7[rnd3] {
|
||||
rnd7 = rand.Intn(len(arr.Nm9))
|
||||
}
|
||||
if nTp < 6 {
|
||||
nMs = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm8[rnd6] + arr.Nm9[rnd7] + arr.Nm10[rnd4] + arr.Nm11[rnd5]
|
||||
} else {
|
||||
rnd8 := rand.Intn(len(arr.Nm8))
|
||||
rnd9 := rand.Intn(len(arr.Nm9))
|
||||
for arr.Nm11[rnd5] == arr.Nm9[rnd6] && arr.Nm9[rnd6] == arr.Nm9[rnd9] {
|
||||
rnd7 = rand.Intn(len(arr.Nm9))
|
||||
}
|
||||
for rnd9 < 8 && rnd7 < 8 {
|
||||
rnd7 = rand.Intn(len(arr.Nm9))
|
||||
}
|
||||
if nTp == 6 {
|
||||
nMs = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm8[rnd6] + arr.Nm9[rnd7] + arr.Nm8[rnd8] + arr.Nm9[rnd9] + arr.Nm10[rnd4] + arr.Nm11[rnd5]
|
||||
} else {
|
||||
nMs = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm9[rnd7] + arr.Nm8[rnd8] + arr.Nm7[rnd3] + arr.Nm8[rnd6] + arr.Nm9[rnd9] + arr.Nm10[rnd4] + arr.Nm11[rnd5]
|
||||
}
|
||||
}
|
||||
}
|
||||
if check(strings.ToLower(nMs)) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func ElfNameChild(arr *ElfArrays, check func(string) bool) string {
|
||||
nTp := rand.Intn(2)
|
||||
rnd := rand.Intn(len(arr.Nm14))
|
||||
rnd2 := rand.Intn(len(arr.Nm15))
|
||||
rnd3 := rand.Intn(len(arr.Nm18))
|
||||
var nMs string
|
||||
if nTp == 0 {
|
||||
if arr.Nm14[rnd] == "" {
|
||||
for arr.Nm18[rnd3] == "" {
|
||||
rnd3 = rand.Intn(len(arr.Nm18))
|
||||
}
|
||||
}
|
||||
if arr.Nm18[rnd3] == "" {
|
||||
rnd2 = rand.Intn(7)
|
||||
}
|
||||
nMs = arr.Nm14[rnd] + arr.Nm15[rnd2] + arr.Nm18[rnd3]
|
||||
} else {
|
||||
rnd4 := rand.Intn(len(arr.Nm16))
|
||||
rnd5 := rand.Intn(len(arr.Nm17))
|
||||
nMs = arr.Nm14[rnd] + arr.Nm15[rnd2] + arr.Nm16[rnd4] + arr.Nm17[rnd5] + arr.Nm18[rnd3]
|
||||
}
|
||||
if check(strings.ToLower(nMs)) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type FairyArrays 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
Nm8 []string `json:"nm8"`
|
||||
Nm9 []string `json:"nm9"`
|
||||
Nm10 []string `json:"nm10"`
|
||||
}
|
||||
|
||||
func LoadFairyArrays(path string) (FairyArrays, error) {
|
||||
var arrays FairyArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func GenerateFairyNames(arr FairyArrays, gender string, swearFilter func(string) bool) []string {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
var names []string
|
||||
for i := 0; i < 10; i++ {
|
||||
var n string
|
||||
if gender == "female" {
|
||||
if i < 3 {
|
||||
for {
|
||||
n = arr.Nm3[rand.Intn(len(arr.Nm3))] + arr.Nm4[rand.Intn(len(arr.Nm4))]
|
||||
if !swearFilter(n) {
|
||||
break
|
||||
}
|
||||
}
|
||||
} else if i < 6 {
|
||||
for {
|
||||
n = arr.Nm7[rand.Intn(len(arr.Nm7))] + arr.Nm8[rand.Intn(len(arr.Nm8))]
|
||||
if !swearFilter(n) {
|
||||
break
|
||||
}
|
||||
}
|
||||
} else {
|
||||
n = arr.Nm10[rand.Intn(len(arr.Nm10))]
|
||||
}
|
||||
} else {
|
||||
if i < 3 {
|
||||
for {
|
||||
n = arr.Nm1[rand.Intn(len(arr.Nm1))] + arr.Nm2[rand.Intn(len(arr.Nm2))]
|
||||
if !swearFilter(n) {
|
||||
break
|
||||
}
|
||||
}
|
||||
} else if i < 6 {
|
||||
for {
|
||||
n = arr.Nm5[rand.Intn(len(arr.Nm5))] + arr.Nm6[rand.Intn(len(arr.Nm6))]
|
||||
if !swearFilter(n) {
|
||||
break
|
||||
}
|
||||
}
|
||||
} else {
|
||||
n = arr.Nm9[rand.Intn(len(arr.Nm9))]
|
||||
}
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type GenasiArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
}
|
||||
|
||||
func LoadGenasiArrays(path string) (GenasiArrays, error) {
|
||||
var arrays GenasiArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func GenerateGenasiNames(arr GenasiArrays, swearFilter func(string) bool) []string {
|
||||
// Copy slices to avoid mutating the original arrays
|
||||
nm1 := append([]string{}, arr.Nm1...)
|
||||
nm2 := append([]string{}, arr.Nm2...)
|
||||
nm3 := append([]string{}, arr.Nm3...)
|
||||
nm4 := append([]string{}, arr.Nm4...)
|
||||
var names []string
|
||||
for i := 0; i < 12; i++ {
|
||||
var n string
|
||||
if i < 3 {
|
||||
if len(nm1) == 0 {
|
||||
continue
|
||||
}
|
||||
rnd := rand.Intn(len(nm1))
|
||||
n = nm1[rnd]
|
||||
nm1 = append(nm1[:rnd], nm1[rnd+1:]...)
|
||||
} else if i < 6 {
|
||||
if len(nm2) == 0 {
|
||||
continue
|
||||
}
|
||||
rnd := rand.Intn(len(nm2))
|
||||
n = nm2[rnd]
|
||||
nm2 = append(nm2[:rnd], nm2[rnd+1:]...)
|
||||
} else if i < 9 {
|
||||
if len(nm3) == 0 {
|
||||
continue
|
||||
}
|
||||
rnd := rand.Intn(len(nm3))
|
||||
n = nm3[rnd]
|
||||
nm3 = append(nm3[:rnd], nm3[rnd+1:]...)
|
||||
} else {
|
||||
if len(nm4) == 0 {
|
||||
continue
|
||||
}
|
||||
rnd := rand.Intn(len(nm4))
|
||||
n = nm4[rnd]
|
||||
nm4 = append(nm4[:rnd], nm4[rnd+1:]...)
|
||||
}
|
||||
if swearFilter != nil && swearFilter(n) {
|
||||
continue
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type GithyankiArrays 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"`
|
||||
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"`
|
||||
Nm14 []string `json:"nm14"`
|
||||
}
|
||||
|
||||
func LoadGithyankiArrays(path string) (GithyankiArrays, error) {
|
||||
var arrays GithyankiArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func GithyankiNameFem(arr *GithyankiArrays, swearFilter func(string) bool) string {
|
||||
for {
|
||||
nTp := rand.Intn(5)
|
||||
rnd := rand.Intn(len(arr.Nm8))
|
||||
rnd2 := rand.Intn(len(arr.Nm9))
|
||||
rnd3 := rand.Intn(len(arr.Nm14))
|
||||
rnd4 := rand.Intn(len(arr.Nm10))
|
||||
rnd5 := rand.Intn(len(arr.Nm11))
|
||||
for rnd < 4 && rnd4 < 3 {
|
||||
rnd4 = rand.Intn(len(arr.Nm10))
|
||||
}
|
||||
var nMs string
|
||||
if nTp < 4 {
|
||||
for arr.Nm10[rnd4] == arr.Nm8[rnd] || arr.Nm10[rnd4] == arr.Nm14[rnd3] {
|
||||
rnd4 = rand.Intn(len(arr.Nm10))
|
||||
}
|
||||
nMs = arr.Nm8[rnd] + arr.Nm9[rnd2] + arr.Nm10[rnd4] + arr.Nm11[rnd5] + arr.Nm14[rnd3]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm12))
|
||||
rnd7 := rand.Intn(len(arr.Nm13))
|
||||
for rnd7 < 4 && rnd4 < 3 {
|
||||
rnd7 = rand.Intn(len(arr.Nm13))
|
||||
}
|
||||
for rnd7 < 4 && rnd < 3 {
|
||||
rnd7 = rand.Intn(len(arr.Nm13))
|
||||
}
|
||||
for arr.Nm10[rnd4] == arr.Nm12[rnd6] || arr.Nm12[rnd6] == arr.Nm14[rnd3] {
|
||||
rnd6 = rand.Intn(len(arr.Nm12))
|
||||
}
|
||||
nMs = arr.Nm8[rnd] + arr.Nm9[rnd2] + arr.Nm10[rnd4] + arr.Nm11[rnd5] + arr.Nm12[rnd6] + arr.Nm13[rnd7] + arr.Nm14[rnd3]
|
||||
}
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func GithyankiNameMas(arr *GithyankiArrays, swearFilter func(string) bool) string {
|
||||
for {
|
||||
nTp := rand.Intn(5)
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd3 := rand.Intn(len(arr.Nm7))
|
||||
if nTp == 0 {
|
||||
for arr.Nm1[rnd] == "" {
|
||||
rnd = rand.Intn(len(arr.Nm1))
|
||||
}
|
||||
for arr.Nm1[rnd] == arr.Nm7[rnd3] || arr.Nm7[rnd3] == "" {
|
||||
rnd3 = rand.Intn(len(arr.Nm7))
|
||||
}
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm7[rnd3]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
} else {
|
||||
rnd4 := rand.Intn(len(arr.Nm3))
|
||||
rnd5 := rand.Intn(len(arr.Nm4))
|
||||
for rnd2 < 3 && rnd5 < 3 {
|
||||
rnd2 = rand.Intn(len(arr.Nm2))
|
||||
}
|
||||
if nTp < 4 {
|
||||
for arr.Nm3[rnd4] == arr.Nm1[rnd] || arr.Nm3[rnd4] == arr.Nm7[rnd3] {
|
||||
rnd4 = rand.Intn(len(arr.Nm3))
|
||||
}
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd4] + arr.Nm4[rnd5] + arr.Nm7[rnd3]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm5))
|
||||
rnd7 := rand.Intn(len(arr.Nm6))
|
||||
for arr.Nm3[rnd4] == arr.Nm5[rnd6] || arr.Nm5[rnd6] == arr.Nm7[rnd3] {
|
||||
rnd6 = rand.Intn(len(arr.Nm5))
|
||||
}
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd4] + arr.Nm4[rnd5] + arr.Nm5[rnd6] + arr.Nm6[rnd7] + arr.Nm7[rnd3]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func GenerateGithyankiNames(arr *GithyankiArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var n string
|
||||
if gender == "female" {
|
||||
n = GithyankiNameFem(arr, swearFilter)
|
||||
} else {
|
||||
n = GithyankiNameMas(arr, swearFilter)
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type GithzeraiArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
}
|
||||
|
||||
func LoadGithzeraiArrays(path string) (GithzeraiArrays, error) {
|
||||
var arrays GithzeraiArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func GithzeraiNameFem(arr *GithzeraiArrays, swearFilter func(string) bool) string {
|
||||
for {
|
||||
rnd := rand.Intn(len(arr.Nm3))
|
||||
rnd2 := rand.Intn(len(arr.Nm4))
|
||||
charL := arr.Nm3[rnd][len(arr.Nm3[rnd])-1]
|
||||
charF := arr.Nm4[rnd2][0]
|
||||
for charL == charF {
|
||||
rnd2 = rand.Intn(len(arr.Nm4))
|
||||
charF = arr.Nm4[rnd2][0]
|
||||
}
|
||||
nMs := arr.Nm3[rnd] + arr.Nm4[rnd2]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func GithzeraiNameMas(arr *GithzeraiArrays, swearFilter func(string) bool) string {
|
||||
for {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
charL := arr.Nm1[rnd][len(arr.Nm1[rnd])-1]
|
||||
charF := arr.Nm2[rnd2][0]
|
||||
for charL == charF {
|
||||
rnd2 = rand.Intn(len(arr.Nm2))
|
||||
charF = arr.Nm2[rnd2][0]
|
||||
}
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func GenerateGithzeraiNames(arr *GithzeraiArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var n string
|
||||
if gender == "female" {
|
||||
n = GithzeraiNameFem(arr, swearFilter)
|
||||
} else {
|
||||
n = GithzeraiNameMas(arr, swearFilter)
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type GnomeArrays 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"`
|
||||
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"`
|
||||
Nm14 []string `json:"nm14"`
|
||||
}
|
||||
|
||||
func LoadGnomeArrays(path string) (GnomeArrays, error) {
|
||||
var arrays GnomeArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func GnomeNameFem(arr *GnomeArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm3))
|
||||
rnd2 := rand.Intn(len(arr.Nm4))
|
||||
return arr.Nm3[rnd] + arr.Nm4[rnd2]
|
||||
}
|
||||
|
||||
func GnomeNameMas(arr *GnomeArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
return arr.Nm1[rnd] + arr.Nm2[rnd2]
|
||||
}
|
||||
|
||||
func GnomeNameSur(arr *GnomeArrays, swearFilter func(string) bool) string {
|
||||
nTp := rand.Intn(8)
|
||||
if nTp < 2 {
|
||||
rnd := rand.Intn(len(arr.Nm5))
|
||||
rnd2 := rand.Intn(len(arr.Nm10))
|
||||
rnd3 := rand.Intn(len(arr.Nm12))
|
||||
rnd4 := rand.Intn(len(arr.Nm5))
|
||||
rnd5 := rand.Intn(len(arr.Nm10))
|
||||
for arr.Nm5[rnd] == "" {
|
||||
rnd = rand.Intn(len(arr.Nm5))
|
||||
}
|
||||
for arr.Nm5[rnd4] == "" {
|
||||
rnd4 = rand.Intn(len(arr.Nm5))
|
||||
}
|
||||
return arr.Nm5[rnd] + arr.Nm10[rnd2] + arr.Nm12[rnd3] + "e" + arr.Nm5[rnd4] + arr.Nm10[rnd5] + arr.Nm12[rnd3] + "e"
|
||||
} else {
|
||||
rnd := rand.Intn(len(arr.Nm5))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
rnd3 := rand.Intn(len(arr.Nm7))
|
||||
rnd4 := rand.Intn(len(arr.Nm8))
|
||||
rnd5 := rand.Intn(len(arr.Nm11))
|
||||
if nTp < 3 {
|
||||
for arr.Nm7[rnd3] == arr.Nm5[rnd] || arr.Nm7[rnd3] == arr.Nm11[rnd5] {
|
||||
rnd3 = rand.Intn(len(arr.Nm7))
|
||||
}
|
||||
return arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm8[rnd4] + arr.Nm11[rnd5]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm9))
|
||||
rnd7 := rand.Intn(len(arr.Nm10))
|
||||
for arr.Nm7[rnd3] == arr.Nm9[rnd6] || arr.Nm9[rnd6] == arr.Nm11[rnd5] {
|
||||
rnd6 = rand.Intn(len(arr.Nm9))
|
||||
}
|
||||
if nTp < 5 {
|
||||
return arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm8[rnd4] + arr.Nm9[rnd6] + arr.Nm10[rnd7] + arr.Nm11[rnd5]
|
||||
} else {
|
||||
rnd8 := rand.Intn(len(arr.Nm9))
|
||||
rnd9 := rand.Intn(len(arr.Nm10))
|
||||
for arr.Nm7[rnd3] == arr.Nm9[rnd8] || arr.Nm9[rnd6] == arr.Nm9[rnd8] {
|
||||
rnd8 = rand.Intn(len(arr.Nm9))
|
||||
}
|
||||
return arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm8[rnd4] + arr.Nm9[rnd6] + arr.Nm10[rnd7] + arr.Nm9[rnd8] + arr.Nm10[rnd9] + arr.Nm11[rnd5]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func GenerateGnomeNames(arr *GnomeArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var nMs, baseName string
|
||||
if i < 5 {
|
||||
rnd := rand.Intn(len(arr.Nm13))
|
||||
rnd2 := rand.Intn(len(arr.Nm14))
|
||||
for arr.Nm13[rnd] == arr.Nm14[rnd2] {
|
||||
rnd2 = rand.Intn(len(arr.Nm14))
|
||||
}
|
||||
baseName = arr.Nm13[rnd] + arr.Nm14[rnd2]
|
||||
} else {
|
||||
baseName = GnomeNameSur(arr, swearFilter)
|
||||
for baseName == "" {
|
||||
baseName = GnomeNameSur(arr, swearFilter)
|
||||
}
|
||||
}
|
||||
if gender == "female" {
|
||||
nMs = GnomeNameFem(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = GnomeNameFem(arr, swearFilter)
|
||||
}
|
||||
} else {
|
||||
nMs = GnomeNameMas(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = GnomeNameMas(arr, swearFilter)
|
||||
}
|
||||
}
|
||||
names = append(names, nMs+" "+baseName)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type GoblinArrays 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
Nm8 []string `json:"nm8"`
|
||||
Nm9 []string `json:"nm9"`
|
||||
Nm10 []string `json:"nm10"`
|
||||
Nm11 []string `json:"nm11"`
|
||||
Nm12 []string `json:"nm12"`
|
||||
}
|
||||
|
||||
func LoadGoblinArrays(path string) (GoblinArrays, error) {
|
||||
var arrays GoblinArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func GoblinNameMas(arr *GoblinArrays, swearFilter func(string) bool) string {
|
||||
nTp := rand.Intn(3)
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd5 := rand.Intn(len(arr.Nm4))
|
||||
if nTp == 0 {
|
||||
for arr.Nm1[rnd] == "" {
|
||||
rnd = rand.Intn(len(arr.Nm1))
|
||||
}
|
||||
for arr.Nm4[rnd5] == "" {
|
||||
rnd5 = rand.Intn(len(arr.Nm4))
|
||||
}
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm4[rnd5]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
} else {
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
rnd4 := rand.Intn(len(arr.Nm2))
|
||||
for arr.Nm3[rnd3] == arr.Nm1[rnd] || arr.Nm3[rnd3] == arr.Nm4[rnd5] {
|
||||
rnd3 = rand.Intn(len(arr.Nm3))
|
||||
}
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm2[rnd4] + arr.Nm4[rnd5]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func GoblinNameFem(arr *GoblinArrays, swearFilter func(string) bool) string {
|
||||
nTp := rand.Intn(5)
|
||||
rnd := rand.Intn(len(arr.Nm5))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
rnd5 := rand.Intn(len(arr.Nm9))
|
||||
if nTp == 0 {
|
||||
for arr.Nm5[rnd] == "" {
|
||||
rnd = rand.Intn(len(arr.Nm5))
|
||||
}
|
||||
for arr.Nm9[rnd5] == "" {
|
||||
rnd5 = rand.Intn(len(arr.Nm9))
|
||||
}
|
||||
nMs := arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm9[rnd5]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
} else {
|
||||
rnd3 := rand.Intn(len(arr.Nm7))
|
||||
rnd4 := rand.Intn(len(arr.Nm6))
|
||||
for arr.Nm7[rnd3] == arr.Nm5[rnd] || arr.Nm7[rnd3] == arr.Nm9[rnd5] {
|
||||
rnd3 = rand.Intn(len(arr.Nm7))
|
||||
}
|
||||
if nTp < 4 {
|
||||
nMs := arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm6[rnd4] + arr.Nm9[rnd5]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm8))
|
||||
rnd7 := rand.Intn(len(arr.Nm6))
|
||||
for arr.Nm7[rnd3] == arr.Nm8[rnd6] || arr.Nm8[rnd6] == arr.Nm9[rnd5] {
|
||||
rnd6 = rand.Intn(len(arr.Nm8))
|
||||
}
|
||||
nMs := arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm6[rnd4] + arr.Nm8[rnd6] + arr.Nm6[rnd7] + arr.Nm9[rnd5]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func GenerateGoblinNames(arr *GoblinArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var nMs string
|
||||
if i < 5 {
|
||||
if gender == "female" {
|
||||
nMs = GoblinNameFem(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = GoblinNameFem(arr, swearFilter)
|
||||
}
|
||||
} else {
|
||||
nMs = GoblinNameMas(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = GoblinNameMas(arr, swearFilter)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
nTp := rand.Intn(2)
|
||||
if nTp == 0 {
|
||||
rnd := rand.Intn(len(arr.Nm10))
|
||||
nMs = arr.Nm10[rnd]
|
||||
} else {
|
||||
rnd := rand.Intn(len(arr.Nm11))
|
||||
rnd2 := rand.Intn(len(arr.Nm12))
|
||||
if arr.Nm11[rnd][len(arr.Nm11[rnd])-1] == 'y' || arr.Nm11[rnd][len(arr.Nm11[rnd])-1] == 'e' {
|
||||
for arr.Nm12[rnd2][0] == 'a' || arr.Nm12[rnd2][0] == 'e' {
|
||||
rnd2 = rand.Intn(len(arr.Nm12))
|
||||
}
|
||||
}
|
||||
nMs = arr.Nm11[rnd] + arr.Nm12[rnd2]
|
||||
}
|
||||
}
|
||||
names = append(names, nMs)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type GoliathArrays struct {
|
||||
NmFF []string `json:"nmFF"`
|
||||
NmFL []string `json:"nmFL"`
|
||||
NmMF []string `json:"nmMF"`
|
||||
NmML []string `json:"nmML"`
|
||||
NmMdF []string `json:"nmMdF"`
|
||||
NmMdL []string `json:"nmMdL"`
|
||||
NmSF []string `json:"nmSF"`
|
||||
NmSL []string `json:"nmSL"`
|
||||
}
|
||||
|
||||
func LoadGoliathArrays(path string) (GoliathArrays, error) {
|
||||
var arrays GoliathArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func GoliathNameFem(arr *GoliathArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.NmFF))
|
||||
rnd2 := rand.Intn(len(arr.NmFL))
|
||||
nMs := arr.NmFF[rnd] + arr.NmFL[rnd2]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func GoliathNameMas(arr *GoliathArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.NmMF))
|
||||
rnd2 := rand.Intn(len(arr.NmML))
|
||||
nMs := arr.NmMF[rnd] + arr.NmML[rnd2]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func GoliathNameSur(arr *GoliathArrays) string {
|
||||
rnd := rand.Intn(len(arr.NmMdF))
|
||||
rnd2 := rand.Intn(len(arr.NmMdL))
|
||||
rnd3 := rand.Intn(len(arr.NmSF))
|
||||
rnd4 := rand.Intn(len(arr.NmSL))
|
||||
return arr.NmMdF[rnd] + arr.NmMdL[rnd2] + " " + arr.NmSF[rnd3] + arr.NmSL[rnd4]
|
||||
}
|
||||
|
||||
func GenerateGoliathNames(arr *GoliathArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
nSr := GoliathNameSur(arr)
|
||||
var nMs string
|
||||
if gender == "female" {
|
||||
nMs = GoliathNameFem(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = GoliathNameFem(arr, swearFilter)
|
||||
}
|
||||
} else {
|
||||
nMs = GoliathNameMas(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = GoliathNameMas(arr, swearFilter)
|
||||
}
|
||||
}
|
||||
names = append(names, nMs+" "+nSr)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type GrungArrays 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
Nm8 []string `json:"nm8"`
|
||||
}
|
||||
|
||||
func LoadGrungArrays(path string) (GrungArrays, error) {
|
||||
var arrays GrungArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func GrungName(arr *GrungArrays, swearFilter func(string) bool) string {
|
||||
for {
|
||||
nTp := rand.Intn(8)
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
rnd4 := rand.Intn(len(arr.Nm4))
|
||||
var nMs string
|
||||
if nTp < 4 {
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
for arr.Nm1[rnd] == arr.Nm2[rnd2] {
|
||||
rnd2 = rand.Intn(len(arr.Nm2))
|
||||
}
|
||||
nTmp := arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd4]
|
||||
nTmp = strings.Title(nTmp)
|
||||
nMs = arr.Nm1[rnd] + "'" + nTmp
|
||||
} else if nTp < 6 {
|
||||
rnd2 := rand.Intn(len(arr.Nm1))
|
||||
nTmp := arr.Nm3[rnd3]
|
||||
nTmp = strings.Title(nTmp)
|
||||
nMs = arr.Nm1[rnd] + "'" + nTmp + arr.Nm4[rnd4] + "'" + arr.Nm1[rnd2] + "'" + nTmp + arr.Nm4[rnd4]
|
||||
} else {
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd5 := rand.Intn(len(arr.Nm5))
|
||||
rnd6 := rand.Intn(len(arr.Nm6))
|
||||
rnd7 := rand.Intn(len(arr.Nm7))
|
||||
rnd8 := rand.Intn(len(arr.Nm8))
|
||||
rnd9 := rand.Intn(len(arr.Nm4))
|
||||
if nTp == 6 {
|
||||
for rnd7 < 3 && rnd9 < 3 {
|
||||
rnd9 = rand.Intn(len(arr.Nm4))
|
||||
}
|
||||
nTmp := arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd4] + "-" + arr.Nm5[rnd5] + arr.Nm6[rnd6] + arr.Nm7[rnd7] + arr.Nm8[rnd8] + arr.Nm4[rnd9]
|
||||
nTmp = strings.Title(nTmp)
|
||||
nMs = arr.Nm1[rnd] + "'" + nTmp
|
||||
} else {
|
||||
for rnd5 < 3 && rnd9 < 3 {
|
||||
rnd9 = rand.Intn(len(arr.Nm4))
|
||||
}
|
||||
for rnd5 < 3 && rnd4 < 3 {
|
||||
rnd4 = rand.Intn(len(arr.Nm4))
|
||||
}
|
||||
nTmp := arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm7[rnd7] + arr.Nm8[rnd8] + arr.Nm4[rnd9] + "'" + arr.Nm5[rnd5] + arr.Nm6[rnd6] + arr.Nm4[rnd4]
|
||||
nTmp = strings.Title(nTmp)
|
||||
nMs = arr.Nm1[rnd] + "'" + nTmp
|
||||
}
|
||||
}
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func GenerateGrungNames(arr *GrungArrays, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
n := GrungName(arr, swearFilter)
|
||||
names = append(names, n)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type HalfElfArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
}
|
||||
|
||||
func LoadHalfElfArrays(path string) (HalfElfArrays, error) {
|
||||
var arrays HalfElfArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func HalfElfNameFem(arr *HalfElfArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm3))
|
||||
rnd2 := rand.Intn(len(arr.Nm4))
|
||||
nMs := arr.Nm3[rnd] + arr.Nm4[rnd2]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func HalfElfNameMas(arr *HalfElfArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func GenerateHalfElfNames(arr *HalfElfArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var nMs string
|
||||
if gender == "female" {
|
||||
nMs = HalfElfNameFem(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = HalfElfNameFem(arr, swearFilter)
|
||||
}
|
||||
} else {
|
||||
nMs = HalfElfNameMas(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = HalfElfNameMas(arr, swearFilter)
|
||||
}
|
||||
}
|
||||
names = append(names, nMs)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type HalfOrcArrays 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"`
|
||||
}
|
||||
|
||||
func LoadHalfOrcArrays(path string) (HalfOrcArrays, error) {
|
||||
var arrays HalfOrcArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func HalfOrcNameFem(arr *HalfOrcArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm4))
|
||||
rnd2 := rand.Intn(len(arr.Nm5))
|
||||
rnd3 := rand.Intn(len(arr.Nm6))
|
||||
nMs := arr.Nm4[rnd] + arr.Nm5[rnd2] + arr.Nm6[rnd3]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func HalfOrcNameMas(arr *HalfOrcArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func GenerateHalfOrcNames(arr *HalfOrcArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var nMs string
|
||||
if gender == "female" {
|
||||
nMs = HalfOrcNameFem(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = HalfOrcNameFem(arr, swearFilter)
|
||||
}
|
||||
} else {
|
||||
nMs = HalfOrcNameMas(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = HalfOrcNameMas(arr, swearFilter)
|
||||
}
|
||||
}
|
||||
names = append(names, nMs)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type HalflingArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
Nm12 []string `json:"nm12"`
|
||||
Nm13 []string `json:"nm13"`
|
||||
}
|
||||
|
||||
func LoadHalflingArrays(path string) (HalflingArrays, error) {
|
||||
var arrays HalflingArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func HalflingNameFem(arr *HalflingArrays) string {
|
||||
rnd := rand.Intn(len(arr.Nm3))
|
||||
rnd2 := rand.Intn(len(arr.Nm4))
|
||||
return arr.Nm3[rnd] + arr.Nm4[rnd2]
|
||||
}
|
||||
|
||||
func HalflingNameMas(arr *HalflingArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func GenerateHalflingNames(arr *HalflingArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
nm12 := make([]string, len(arr.Nm12))
|
||||
nm13 := make([]string, len(arr.Nm13))
|
||||
copy(nm12, arr.Nm12)
|
||||
copy(nm13, arr.Nm13)
|
||||
for i := 0; i < 10; i++ {
|
||||
var nMs string
|
||||
if gender == "female" {
|
||||
nMs = HalflingNameFem(arr)
|
||||
for nMs == "" {
|
||||
nMs = HalflingNameFem(arr)
|
||||
}
|
||||
} else {
|
||||
nMs = HalflingNameMas(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = HalflingNameMas(arr, swearFilter)
|
||||
}
|
||||
}
|
||||
// Surname logic
|
||||
rnd := rand.Intn(len(nm12))
|
||||
rnd2 := rand.Intn(len(nm13))
|
||||
for nm12[rnd] == nm13[rnd2] {
|
||||
rnd2 = rand.Intn(len(nm13))
|
||||
}
|
||||
surname := nm12[rnd] + nm13[rnd2]
|
||||
nm12 = append(nm12[:rnd], nm12[rnd+1:]...)
|
||||
nm13 = append(nm13[:rnd2], nm13[rnd2+1:]...)
|
||||
names = append(names, nMs+" "+surname)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type HarengonArrays 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
Nm8 []string `json:"nm8"`
|
||||
Nm9 []string `json:"nm9"`
|
||||
Nm10 []string `json:"nm10"`
|
||||
}
|
||||
|
||||
func LoadHarengonArrays(path string) (HarengonArrays, error) {
|
||||
var arrays HarengonArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func HarengonNameFemT(arr *HarengonArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm3))
|
||||
rnd2 := rand.Intn(len(arr.Nm4))
|
||||
nMs := arr.Nm3[rnd] + arr.Nm4[rnd2]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func HarengonNameMasT(arr *HarengonArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func GenerateHarengonNames(arr *HarengonArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var nMs string
|
||||
if gender == "female" {
|
||||
if i < 6 {
|
||||
nMs = HarengonNameFem(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = HarengonNameFem(arr, swearFilter)
|
||||
}
|
||||
} else {
|
||||
nMs = HarengonNameFemT(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = HarengonNameFemT(arr, swearFilter)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if i < 6 {
|
||||
nMs = HarengonNameFem(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = HarengonNameFem(arr, swearFilter)
|
||||
}
|
||||
} else {
|
||||
nMs = HarengonNameMasT(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = HarengonNameMasT(arr, swearFilter)
|
||||
}
|
||||
}
|
||||
}
|
||||
names = append(names, nMs)
|
||||
}
|
||||
return names
|
||||
}
|
||||
|
||||
func HarengonNameFem(arr *HarengonArrays, swearFilter func(string) bool) string {
|
||||
nTp := rand.Intn(3)
|
||||
rnd := rand.Intn(len(arr.Nm5))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
rnd3 := rand.Intn(len(arr.Nm7))
|
||||
rnd4 := rand.Intn(len(arr.Nm8))
|
||||
rnd5 := rand.Intn(len(arr.Nm10))
|
||||
for arr.Nm7[rnd3] == arr.Nm5[rnd] && arr.Nm10[rnd5] != "" {
|
||||
rnd3 = rand.Intn(len(arr.Nm7))
|
||||
}
|
||||
var nMs string
|
||||
if nTp < 2 {
|
||||
nMs = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm8[rnd4] + arr.Nm10[rnd5]
|
||||
} else {
|
||||
nTp = rand.Intn(2)
|
||||
rnd6 := rand.Intn(len(arr.Nm8))
|
||||
rnd7 := rand.Intn(len(arr.Nm9))
|
||||
if nTp == 0 {
|
||||
nMs = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm8[rnd4] + arr.Nm9[rnd7] + arr.Nm8[rnd6] + arr.Nm10[rnd5]
|
||||
} else {
|
||||
nMs = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm9[rnd7] + arr.Nm8[rnd6] + arr.Nm7[rnd3] + arr.Nm8[rnd4] + arr.Nm10[rnd5]
|
||||
}
|
||||
}
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type HobgoblinArrays 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
Nm8 []string `json:"nm8"`
|
||||
}
|
||||
|
||||
func LoadHobgoblinArrays(path string) (HobgoblinArrays, error) {
|
||||
var arrays HobgoblinArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func HobgoblinName(arr *HobgoblinArrays, swearFilter func(string) bool) string {
|
||||
nTp := rand.Intn(5)
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd5 := rand.Intn(len(arr.Nm7))
|
||||
var nMs string
|
||||
if nTp == 0 {
|
||||
for arr.Nm1[rnd] == "" {
|
||||
rnd = rand.Intn(len(arr.Nm1))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm7[rnd5]
|
||||
} else {
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
rnd4 := rand.Intn(len(arr.Nm6))
|
||||
for arr.Nm3[rnd3] == arr.Nm1[rnd] || arr.Nm3[rnd3] == arr.Nm7[rnd5] {
|
||||
rnd3 = rand.Intn(len(arr.Nm3))
|
||||
}
|
||||
if nTp < 4 {
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm6[rnd4] + arr.Nm7[rnd5]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm5))
|
||||
rnd7 := rand.Intn(len(arr.Nm4))
|
||||
for arr.Nm3[rnd3] == arr.Nm5[rnd6] || arr.Nm5[rnd6] == arr.Nm7[rnd5] {
|
||||
rnd6 = rand.Intn(len(arr.Nm5))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd7] + arr.Nm5[rnd6] + arr.Nm6[rnd4] + arr.Nm7[rnd5]
|
||||
}
|
||||
}
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func GenerateHobgoblinNames(arr *HobgoblinArrays, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
nMs := HobgoblinName(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = HobgoblinName(arr, swearFilter)
|
||||
}
|
||||
if i > 4 {
|
||||
rnd := rand.Intn(len(arr.Nm8))
|
||||
nMs = nMs + " " + arr.Nm8[rnd]
|
||||
}
|
||||
names = append(names, nMs)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type HumanArrays 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"`
|
||||
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"`
|
||||
Nm14 []string `json:"nm14"`
|
||||
Nm15 []string `json:"nm15"`
|
||||
Nm16 []string `json:"nm16"`
|
||||
Nm17 []string `json:"nm17"`
|
||||
Nm18 []string `json:"nm18"`
|
||||
Nm19 []string `json:"nm19"`
|
||||
Nm20 []string `json:"nm20"`
|
||||
Nm21 []string `json:"nm21"`
|
||||
Nm22 []string `json:"nm22"`
|
||||
}
|
||||
|
||||
func LoadHumanArrays(path string) (HumanArrays, error) {
|
||||
var arrays HumanArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
// Example: Generate a simple human name (Calashite male)
|
||||
func HumanNameCalashiteMas(arr *HumanArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
rnd4 := rand.Intn(len(arr.Nm4))
|
||||
rnd5 := rand.Intn(len(arr.Nm5))
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd4] + arr.Nm5[rnd5]
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// Add more generators for other ethnicities and genders as needed
|
||||
|
||||
func GenerateHumanNames(arr *HumanArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var nMs string
|
||||
if gender == "female" {
|
||||
// Placeholder: implement female logic as needed
|
||||
nMs = HumanNameCalashiteMas(arr, swearFilter) // Replace with actual female logic
|
||||
for nMs == "" {
|
||||
nMs = HumanNameCalashiteMas(arr, swearFilter)
|
||||
}
|
||||
} else {
|
||||
nMs = HumanNameCalashiteMas(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = HumanNameCalashiteMas(arr, swearFilter)
|
||||
}
|
||||
}
|
||||
names = append(names, nMs)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type KalashtarArrays 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
Nm8 []string `json:"nm8"`
|
||||
Nm9 []string `json:"nm9"`
|
||||
Nm10 []string `json:"nm10"`
|
||||
Nm11 []string `json:"nm11"`
|
||||
}
|
||||
|
||||
func LoadKalashtarArrays(path string) (KalashtarArrays, error) {
|
||||
var arrays KalashtarArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func KalashtarNameMas(arr *KalashtarArrays, swearFilter func(string) bool) string {
|
||||
nTp := rand.Intn(4)
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
var nMs string
|
||||
if nTp < 2 {
|
||||
if nTp == 0 {
|
||||
nMs = arr.Nm1[rnd]
|
||||
} else {
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2]
|
||||
}
|
||||
} else {
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
rnd4 := rand.Intn(len(arr.Nm4))
|
||||
if nTp == 2 {
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3]
|
||||
} else {
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd4]
|
||||
}
|
||||
}
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func GenerateKalashtarNames(arr *KalashtarArrays, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
nMs := KalashtarNameMas(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = KalashtarNameMas(arr, swearFilter)
|
||||
}
|
||||
names = append(names, nMs)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type KenkuArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
}
|
||||
|
||||
func LoadKenkuArrays(path string) (KenkuArrays, error) {
|
||||
var arrays KenkuArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func GenerateKenkuNames(arr *KenkuArrays) []string {
|
||||
names := make([]string, 0, 10)
|
||||
nm1 := make([]string, len(arr.Nm1))
|
||||
nm2 := make([]string, len(arr.Nm2))
|
||||
nm3 := make([]string, len(arr.Nm3))
|
||||
copy(nm1, arr.Nm1)
|
||||
copy(nm2, arr.Nm2)
|
||||
copy(nm3, arr.Nm3)
|
||||
for i := 0; i < 10; i++ {
|
||||
var name string
|
||||
if i < 4 {
|
||||
rnd := rand.Intn(len(nm1))
|
||||
name = nm1[rnd]
|
||||
nm1 = append(nm1[:rnd], nm1[rnd+1:]...)
|
||||
} else if i < 7 {
|
||||
rnd := rand.Intn(len(nm2))
|
||||
name = nm2[rnd]
|
||||
nm2 = append(nm2[:rnd], nm2[rnd+1:]...)
|
||||
} else {
|
||||
rnd := rand.Intn(len(nm3))
|
||||
name = nm3[rnd]
|
||||
nm3 = append(nm3[:rnd], nm3[rnd+1:]...)
|
||||
}
|
||||
names = append(names, name)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type KoboldArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
}
|
||||
|
||||
func LoadKoboldArrays(path string) (KoboldArrays, error) {
|
||||
var arrays KoboldArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func KoboldNameMas(arr *KoboldArrays, i int, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd4 := rand.Intn(len(arr.Nm4))
|
||||
var nMs string
|
||||
if i < 4 {
|
||||
for rnd < 4 {
|
||||
rnd = rand.Intn(len(arr.Nm1))
|
||||
}
|
||||
for rnd4 < 5 || arr.Nm4[rnd4] == arr.Nm1[rnd] {
|
||||
rnd4 = rand.Intn(len(arr.Nm4))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm4[rnd4]
|
||||
} else {
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
rnd5 := rand.Intn(len(arr.Nm2))
|
||||
if rnd < 4 {
|
||||
for rnd4 < 5 {
|
||||
rnd4 = rand.Intn(len(arr.Nm4))
|
||||
}
|
||||
}
|
||||
for arr.Nm3[rnd3] == arr.Nm1[rnd] || arr.Nm3[rnd3] == arr.Nm4[rnd4] {
|
||||
rnd3 = rand.Intn(len(arr.Nm3))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm2[rnd5] + arr.Nm4[rnd2]
|
||||
}
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func GenerateKoboldNames(arr *KoboldArrays, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
nMs := KoboldNameMas(arr, i, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = KoboldNameMas(arr, i, swearFilter)
|
||||
}
|
||||
names = append(names, nMs)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type LeoninArrays 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"`
|
||||
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"`
|
||||
Nm14 []string `json:"nm14"`
|
||||
Nm16 []string `json:"nm16"`
|
||||
Nm17 []string `json:"nm17"`
|
||||
}
|
||||
|
||||
func LoadLeoninArrays(path string) (LeoninArrays, error) {
|
||||
var arrays LeoninArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func LeoninNameFem(arr *LeoninArrays, swearFilter func(string) bool) string {
|
||||
nTp := rand.Intn(7)
|
||||
rnd := rand.Intn(len(arr.Nm8))
|
||||
rnd2 := rand.Intn(len(arr.Nm9))
|
||||
rnd3 := rand.Intn(len(arr.Nm10))
|
||||
rnd4 := rand.Intn(len(arr.Nm13))
|
||||
rnd5 := rand.Intn(len(arr.Nm14))
|
||||
var nMs string
|
||||
if nTp < 3 {
|
||||
for arr.Nm10[rnd3] == arr.Nm14[rnd5] || arr.Nm10[rnd3] == arr.Nm8[rnd] {
|
||||
rnd3 = rand.Intn(len(arr.Nm10))
|
||||
}
|
||||
nMs = arr.Nm8[rnd] + arr.Nm9[rnd2] + arr.Nm10[rnd3] + arr.Nm13[rnd4] + arr.Nm14[rnd5]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm11))
|
||||
rnd7 := rand.Intn(len(arr.Nm12))
|
||||
for arr.Nm14[rnd5] == arr.Nm12[rnd7] || arr.Nm12[rnd7] == arr.Nm10[rnd3] {
|
||||
rnd7 = rand.Intn(len(arr.Nm12))
|
||||
}
|
||||
if nTp < 6 {
|
||||
nMs = arr.Nm8[rnd] + arr.Nm9[rnd2] + arr.Nm10[rnd3] + arr.Nm11[rnd6] + arr.Nm12[rnd7] + arr.Nm13[rnd4] + arr.Nm14[rnd5]
|
||||
} else {
|
||||
rnd8 := rand.Intn(len(arr.Nm11))
|
||||
rnd9 := rand.Intn(len(arr.Nm12))
|
||||
for arr.Nm14[rnd5] == arr.Nm12[rnd9] || arr.Nm12[rnd9] == arr.Nm12[rnd7] {
|
||||
rnd9 = rand.Intn(len(arr.Nm12))
|
||||
}
|
||||
nMs = arr.Nm8[rnd] + arr.Nm9[rnd2] + arr.Nm10[rnd3] + arr.Nm11[rnd6] + arr.Nm12[rnd7] + arr.Nm11[rnd8] + arr.Nm12[rnd9] + arr.Nm13[rnd4] + arr.Nm14[rnd5]
|
||||
}
|
||||
}
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func LeoninNameMas(arr *LeoninArrays, swearFilter func(string) bool) string {
|
||||
nTp := rand.Intn(5)
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(3)
|
||||
rnd5 := rand.Intn(len(arr.Nm7))
|
||||
var nMs string
|
||||
if nTp == 0 {
|
||||
for arr.Nm1[rnd] == "" {
|
||||
rnd = rand.Intn(len(arr.Nm1))
|
||||
}
|
||||
for arr.Nm7[rnd5] == "" {
|
||||
rnd5 = rand.Intn(len(arr.Nm7))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd5]
|
||||
} else {
|
||||
if nTp < 4 {
|
||||
rnd2 = rand.Intn(len(arr.Nm2))
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
rnd4 := rand.Intn(len(arr.Nm6))
|
||||
for arr.Nm3[rnd3] == arr.Nm7[rnd5] || arr.Nm3[rnd3] == arr.Nm1[rnd] {
|
||||
rnd3 = rand.Intn(len(arr.Nm3))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm6[rnd4] + arr.Nm7[rnd5]
|
||||
} else {
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
rnd4 := rand.Intn(len(arr.Nm6))
|
||||
rnd6 := rand.Intn(len(arr.Nm4))
|
||||
rnd7 := rand.Intn(len(arr.Nm5))
|
||||
for arr.Nm3[rnd5] == arr.Nm5[rnd7] || arr.Nm5[rnd7] == arr.Nm7[rnd5] {
|
||||
rnd7 = rand.Intn(len(arr.Nm5))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd6] + arr.Nm5[rnd7] + arr.Nm6[rnd4] + arr.Nm7[rnd5]
|
||||
}
|
||||
}
|
||||
if swearFilter == nil || !swearFilter(nMs) {
|
||||
return nMs
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func GenerateLeoninNames(arr *LeoninArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var nMs string
|
||||
if gender == "female" {
|
||||
nMs = LeoninNameFem(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = LeoninNameFem(arr, swearFilter)
|
||||
}
|
||||
} else {
|
||||
nMs = LeoninNameMas(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = LeoninNameMas(arr, swearFilter)
|
||||
}
|
||||
}
|
||||
rnd := rand.Intn(len(arr.Nm16))
|
||||
rnd2 := rand.Intn(len(arr.Nm17))
|
||||
for arr.Nm16[rnd] == arr.Nm17[rnd2] {
|
||||
rnd2 = rand.Intn(len(arr.Nm17))
|
||||
}
|
||||
nMs += " " + arr.Nm16[rnd] + arr.Nm17[rnd2]
|
||||
names = append(names, nMs)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type LizardfolkArrays 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
}
|
||||
|
||||
func LoadLizardfolkArrays(path string) (LizardfolkArrays, error) {
|
||||
var arrays LizardfolkArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func LizardfolkNameMas(arr *LizardfolkArrays, i int, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd3 := rand.Intn(len(arr.Nm6))
|
||||
var nMs string
|
||||
if i < 2 {
|
||||
if rnd < 5 {
|
||||
for arr.Nm6[rnd3] == arr.Nm1[rnd] {
|
||||
rnd3 = rand.Intn(len(arr.Nm6))
|
||||
}
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm6[rnd3]
|
||||
} else {
|
||||
rnd4 := rand.Intn(len(arr.Nm3))
|
||||
rnd5 := rand.Intn(len(arr.Nm4))
|
||||
for arr.Nm3[rnd4] == arr.Nm1[rnd] || arr.Nm3[rnd4] == arr.Nm6[rnd3] {
|
||||
rnd4 = rand.Intn(len(arr.Nm3))
|
||||
}
|
||||
if i < 7 {
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd4] + arr.Nm4[rnd5] + arr.Nm6[rnd3]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm2))
|
||||
rnd7 := rand.Intn(len(arr.Nm5))
|
||||
for arr.Nm5[rnd7] == arr.Nm3[rnd4] || arr.Nm5[rnd7] == arr.Nm6[rnd3] {
|
||||
rnd7 = rand.Intn(len(arr.Nm5))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd4] + arr.Nm2[rnd6] + arr.Nm5[rnd7] + arr.Nm4[rnd5] + arr.Nm6[rnd3]
|
||||
}
|
||||
}
|
||||
if swearFilter != nil && swearFilter(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func LizardfolkNameWord(arr *LizardfolkArrays, used map[int]bool) string {
|
||||
if len(used) >= len(arr.Nm7) {
|
||||
return ""
|
||||
}
|
||||
for {
|
||||
rnd := rand.Intn(len(arr.Nm7))
|
||||
if !used[rnd] {
|
||||
used[rnd] = true
|
||||
return arr.Nm7[rnd]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func GenerateLizardfolkNames(arr *LizardfolkArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
if gender == "female" {
|
||||
used := make(map[int]bool)
|
||||
for i := 0; i < 10; i++ {
|
||||
word := LizardfolkNameWord(arr, used)
|
||||
if word != "" {
|
||||
names = append(names, word)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for i := 0; i < 10; i++ {
|
||||
n := LizardfolkNameMas(arr, i, swearFilter)
|
||||
for n == "" {
|
||||
n = LizardfolkNameMas(arr, i, swearFilter)
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type LocathahArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
Nm5 []string `json:"nm5"`
|
||||
}
|
||||
|
||||
func LoadLocathahArrays(path string) (LocathahArrays, error) {
|
||||
var arrays LocathahArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func LocathahNameMas(arr *LocathahArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
rnd4 := rand.Intn(len(arr.Nm4))
|
||||
rnd5 := rand.Intn(len(arr.Nm5))
|
||||
for arr.Nm3[rnd3] == arr.Nm5[rnd5] || arr.Nm3[rnd3] == arr.Nm1[rnd] {
|
||||
rnd3 = rand.Intn(len(arr.Nm3))
|
||||
}
|
||||
nMs := arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd4] + arr.Nm5[rnd5]
|
||||
if swearFilter != nil && swearFilter(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func GenerateLocathahNames(arr *LocathahArrays, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
n := LocathahNameMas(arr, swearFilter)
|
||||
for n == "" {
|
||||
n = LocathahNameMas(arr, swearFilter)
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type LoxodonArrays 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"`
|
||||
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"`
|
||||
}
|
||||
|
||||
func LoadLoxodonArrays(path string) (LoxodonArrays, error) {
|
||||
var arrays LoxodonArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func LoxodonNameMas(arr *LoxodonArrays, swearFilter func(string) bool) string {
|
||||
nTp := rand.Intn(5)
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd5 := rand.Intn(len(arr.Nm6))
|
||||
var nMs string
|
||||
if nTp == 0 {
|
||||
for arr.Nm1[rnd] == "" {
|
||||
rnd = rand.Intn(len(arr.Nm1))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm6[rnd5]
|
||||
} else {
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
rnd4 := rand.Intn(len(arr.Nm4))
|
||||
for arr.Nm3[rnd3] == arr.Nm1[rnd] || arr.Nm3[rnd3] == arr.Nm6[rnd5] {
|
||||
rnd3 = rand.Intn(len(arr.Nm3))
|
||||
}
|
||||
if rnd2 == 0 {
|
||||
for rnd4 == 0 {
|
||||
rnd4 = rand.Intn(len(arr.Nm4))
|
||||
}
|
||||
}
|
||||
if nTp < 4 {
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd4] + arr.Nm6[rnd5]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm5))
|
||||
for arr.Nm3[rnd3] == arr.Nm5[rnd6] || arr.Nm5[rnd6] == arr.Nm6[rnd5] {
|
||||
rnd6 = rand.Intn(len(arr.Nm5))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd4] + arr.Nm5[rnd6] + "o" + arr.Nm6[rnd5]
|
||||
}
|
||||
}
|
||||
if swearFilter != nil && swearFilter(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func LoxodonNameFem(arr *LoxodonArrays, swearFilter func(string) bool) string {
|
||||
nTp := rand.Intn(3)
|
||||
rnd := rand.Intn(len(arr.Nm7))
|
||||
rnd2 := rand.Intn(len(arr.Nm8))
|
||||
rnd3 := rand.Intn(len(arr.Nm9))
|
||||
rnd4 := rand.Intn(len(arr.Nm12))
|
||||
rnd5 := rand.Intn(len(arr.Nm13))
|
||||
var nMs string
|
||||
if nTp < 2 {
|
||||
for arr.Nm7[rnd] == arr.Nm9[rnd3] || arr.Nm9[rnd3] == arr.Nm13[rnd5] {
|
||||
rnd3 = rand.Intn(len(arr.Nm9))
|
||||
}
|
||||
nMs = arr.Nm7[rnd] + arr.Nm8[rnd2] + arr.Nm9[rnd3] + arr.Nm12[rnd4] + arr.Nm13[rnd5]
|
||||
} else {
|
||||
rnd7 := rand.Intn(len(arr.Nm11))
|
||||
for arr.Nm11[rnd7] == arr.Nm9[rnd3] || arr.Nm11[rnd7] == arr.Nm13[rnd5] {
|
||||
rnd7 = rand.Intn(len(arr.Nm11))
|
||||
}
|
||||
nMs = arr.Nm7[rnd] + arr.Nm8[rnd2] + arr.Nm9[rnd3] + arr.Nm12[rnd4] + arr.Nm13[rnd5]
|
||||
}
|
||||
if swearFilter != nil && swearFilter(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func GenerateLoxodonNames(arr *LoxodonArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
if gender == "female" {
|
||||
for i := 0; i < 10; i++ {
|
||||
n := LoxodonNameFem(arr, swearFilter)
|
||||
for n == "" {
|
||||
n = LoxodonNameFem(arr, swearFilter)
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
} else {
|
||||
for i := 0; i < 10; i++ {
|
||||
n := LoxodonNameMas(arr, swearFilter)
|
||||
for n == "" {
|
||||
n = LoxodonNameMas(arr, swearFilter)
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type MinotaurArrays struct {
|
||||
NmFF []string `json:"nmFF"`
|
||||
NmFL []string `json:"nmFL"`
|
||||
NmMF []string `json:"nmMF"`
|
||||
NmML []string `json:"nmML"`
|
||||
NmSF []string `json:"nmSF"`
|
||||
NmSL []string `json:"nmSL"`
|
||||
}
|
||||
|
||||
func LoadMinotaurArrays(path string) (MinotaurArrays, error) {
|
||||
var arrays MinotaurArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func MinotaurNameFem(arr *MinotaurArrays, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.NmFF))
|
||||
rnd2 := rand.Intn(len(arr.NmFL))
|
||||
nMs := arr.NmFF[rnd] + arr.NmFL[rnd2]
|
||||
if swearFilter != nil && swearFilter(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func MinotaurNameMas(arr *MinotaurArrays, i int, swearFilter func(string) bool) string {
|
||||
var nMs string
|
||||
if i < 5 {
|
||||
rnd := rand.Intn(len(arr.NmFF))
|
||||
rnd2 := rand.Intn(len(arr.NmFL))
|
||||
nMs = arr.NmFF[rnd] + arr.NmFL[rnd2]
|
||||
} else {
|
||||
rnd := rand.Intn(len(arr.NmMF))
|
||||
rnd2 := rand.Intn(len(arr.NmML))
|
||||
nMs = arr.NmMF[rnd] + arr.NmML[rnd2]
|
||||
}
|
||||
if swearFilter != nil && swearFilter(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func MinotaurSurname(arr *MinotaurArrays) string {
|
||||
rnd := rand.Intn(len(arr.NmSF))
|
||||
rnd2 := rand.Intn(len(arr.NmSL))
|
||||
return arr.NmSF[rnd] + arr.NmSL[rnd2]
|
||||
}
|
||||
|
||||
func GenerateMinotaurNames(arr *MinotaurArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var nMs string
|
||||
if gender == "female" {
|
||||
nMs = MinotaurNameFem(arr, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = MinotaurNameFem(arr, swearFilter)
|
||||
}
|
||||
} else {
|
||||
nMs = MinotaurNameMas(arr, i, swearFilter)
|
||||
for nMs == "" {
|
||||
nMs = MinotaurNameMas(arr, i, swearFilter)
|
||||
}
|
||||
}
|
||||
nMs = nMs + " " + MinotaurSurname(arr)
|
||||
names = append(names, nMs)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type ModernEnglishArrays 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
}
|
||||
|
||||
func LoadModernEnglishArrays(path string) (ModernEnglishArrays, error) {
|
||||
var arr ModernEnglishArrays
|
||||
f, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer f.Close()
|
||||
dec := json.NewDecoder(f)
|
||||
if err := dec.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
// type: 0=male, 1=female, 2=unisex
|
||||
func GenerateModernEnglishNames(arr *ModernEnglishArrays, swear func(string) bool, t int) []string {
|
||||
var names []string
|
||||
for i := 0; i < 10; i++ {
|
||||
var name string
|
||||
if t == 1 {
|
||||
if i < 5 {
|
||||
rnd := rand.Intn(len(arr.Nm2))
|
||||
rnd2 := rand.Intn(len(arr.Nm3))
|
||||
name = arr.Nm2[rnd] + " " + arr.Nm3[rnd2]
|
||||
} else {
|
||||
rnd := rand.Intn(len(arr.Nm5))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
name = arr.Nm5[rnd] + " " + arr.Nm6[rnd2]
|
||||
}
|
||||
} else if t == 2 {
|
||||
if i < 5 {
|
||||
rnd := rand.Intn(len(arr.Nm7))
|
||||
rnd2 := rand.Intn(len(arr.Nm3))
|
||||
name = arr.Nm7[rnd] + " " + arr.Nm3[rnd2]
|
||||
} else {
|
||||
rnd := rand.Intn(len(arr.Nm7))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
name = arr.Nm7[rnd] + " " + arr.Nm6[rnd2]
|
||||
}
|
||||
} else {
|
||||
if i < 5 {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm3))
|
||||
name = arr.Nm1[rnd] + " " + arr.Nm3[rnd2]
|
||||
} else {
|
||||
rnd := rand.Intn(len(arr.Nm4))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
name = arr.Nm4[rnd] + " " + arr.Nm6[rnd2]
|
||||
}
|
||||
}
|
||||
if !swear(name) {
|
||||
names = append(names, name)
|
||||
}
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type ModernPortugueseEUArrays 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
}
|
||||
|
||||
func LoadModernPortugueseEUArrays(path string) (ModernPortugueseEUArrays, error) {
|
||||
var arr ModernPortugueseEUArrays
|
||||
f, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer f.Close()
|
||||
dec := json.NewDecoder(f)
|
||||
if err := dec.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
// type: 0=male, 1=female, 2=unisex
|
||||
func GenerateModernPortugueseEUNames(arr *ModernPortugueseEUArrays, swear func(string) bool, t int) []string {
|
||||
var names []string
|
||||
for i := 0; i < 10; i++ {
|
||||
var name string
|
||||
switch t {
|
||||
case 1:
|
||||
if i < 5 {
|
||||
rnd := rand.Intn(len(arr.Nm2))
|
||||
rnd2 := rand.Intn(len(arr.Nm3))
|
||||
name = arr.Nm2[rnd] + " " + arr.Nm3[rnd2]
|
||||
} else {
|
||||
rnd := rand.Intn(len(arr.Nm5))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
name = arr.Nm5[rnd] + " " + arr.Nm6[rnd2]
|
||||
}
|
||||
case 2:
|
||||
if i < 5 {
|
||||
rnd := rand.Intn(len(arr.Nm7))
|
||||
rnd2 := rand.Intn(len(arr.Nm3))
|
||||
name = arr.Nm7[rnd] + " " + arr.Nm3[rnd2]
|
||||
} else {
|
||||
rnd := rand.Intn(len(arr.Nm7))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
name = arr.Nm7[rnd] + " " + arr.Nm6[rnd2]
|
||||
}
|
||||
default:
|
||||
if i < 5 {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm3))
|
||||
name = arr.Nm1[rnd] + " " + arr.Nm3[rnd2]
|
||||
} else {
|
||||
rnd := rand.Intn(len(arr.Nm4))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
name = arr.Nm4[rnd] + " " + arr.Nm6[rnd2]
|
||||
}
|
||||
}
|
||||
if !swear(name) {
|
||||
names = append(names, name)
|
||||
}
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type OrcArrays 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
Nm8 []string `json:"nm8"`
|
||||
Nm9 []string `json:"nm9"`
|
||||
Nm10 []string `json:"nm10"`
|
||||
Nm11 []string `json:"nm11"`
|
||||
}
|
||||
|
||||
func LoadOrcArrays(path string) (OrcArrays, error) {
|
||||
var arrays OrcArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func OrcNameFem(arr *OrcArrays, i int, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm5))
|
||||
rnd2 := rand.Intn(len(arr.Nm6))
|
||||
rnd3 := rand.Intn(len(arr.Nm8))
|
||||
var nFm string
|
||||
if i < 4 {
|
||||
for rnd < 4 {
|
||||
rnd = rand.Intn(len(arr.Nm5))
|
||||
}
|
||||
for rnd3 < 5 || arr.Nm8[rnd3] == arr.Nm5[rnd] {
|
||||
rnd3 = rand.Intn(len(arr.Nm8))
|
||||
}
|
||||
nFm = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm8[rnd3]
|
||||
} else {
|
||||
rnd4 := rand.Intn(len(arr.Nm7))
|
||||
rnd5 := rand.Intn(len(arr.Nm6))
|
||||
for arr.Nm7[rnd4] == arr.Nm8[rnd3] {
|
||||
rnd4 = rand.Intn(len(arr.Nm7))
|
||||
}
|
||||
nFm = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd4] + arr.Nm6[rnd5] + arr.Nm8[rnd3]
|
||||
}
|
||||
if swearFilter != nil && swearFilter(nFm) {
|
||||
return ""
|
||||
}
|
||||
return nFm
|
||||
}
|
||||
|
||||
func OrcNameMas(arr *OrcArrays, i int, swearFilter func(string) bool) string {
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd3 := rand.Intn(len(arr.Nm4))
|
||||
var nMs string
|
||||
if i < 4 {
|
||||
for rnd < 3 || arr.Nm1[rnd] == arr.Nm4[rnd3] {
|
||||
rnd = rand.Intn(len(arr.Nm1))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm4[rnd3]
|
||||
} else {
|
||||
rnd4 := rand.Intn(len(arr.Nm3))
|
||||
rnd5 := rand.Intn(len(arr.Nm2))
|
||||
for arr.Nm3[rnd4] == arr.Nm1[rnd] || arr.Nm3[rnd4] == arr.Nm4[rnd3] {
|
||||
rnd4 = rand.Intn(len(arr.Nm3))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd4] + arr.Nm2[rnd5] + arr.Nm4[rnd3]
|
||||
}
|
||||
if swearFilter != nil && swearFilter(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func OrcSurname(arr *OrcArrays) string {
|
||||
rSr := rand.Intn(2)
|
||||
if rSr == 0 {
|
||||
return "The " + arr.Nm9[rand.Intn(len(arr.Nm9))]
|
||||
}
|
||||
return arr.Nm10[rand.Intn(len(arr.Nm10))] + " " + arr.Nm11[rand.Intn(len(arr.Nm11))]
|
||||
}
|
||||
|
||||
func GenerateOrcNames(arr *OrcArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var n string
|
||||
if gender == "female" {
|
||||
n = OrcNameFem(arr, i, swearFilter)
|
||||
for n == "" {
|
||||
n = OrcNameFem(arr, i, swearFilter)
|
||||
}
|
||||
} else {
|
||||
n = OrcNameMas(arr, i, swearFilter)
|
||||
for n == "" {
|
||||
n = OrcNameMas(arr, i, swearFilter)
|
||||
}
|
||||
}
|
||||
n = n + " " + OrcSurname(arr)
|
||||
names = append(names, n)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,163 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type SatyrArrays 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"`
|
||||
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"`
|
||||
Nm14 []string `json:"nm14"`
|
||||
Nm15 []string `json:"nm15"`
|
||||
Nm16 []string `json:"nm16"`
|
||||
Nm17 []string `json:"nm17"`
|
||||
Nm18 []string `json:"nm18"`
|
||||
}
|
||||
|
||||
func LoadSatyrArrays(path string) (SatyrArrays, error) {
|
||||
var arrays SatyrArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arrays, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
err = decoder.Decode(&arrays)
|
||||
return arrays, err
|
||||
}
|
||||
|
||||
func SatyrNameMas(arr *SatyrArrays, swearFilter func(string) bool) string {
|
||||
nTp := rand.Intn(2)
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
rnd4 := rand.Intn(len(arr.Nm6))
|
||||
rnd5 := rand.Intn(len(arr.Nm7))
|
||||
for rnd2 == 0 && rnd4 == 0 {
|
||||
rnd2 = rand.Intn(len(arr.Nm2))
|
||||
}
|
||||
var nMs string
|
||||
if nTp == 0 {
|
||||
for arr.Nm3[rnd3] == arr.Nm7[rnd5] && arr.Nm3[rnd3] == arr.Nm1[rnd] {
|
||||
rnd3 = rand.Intn(len(arr.Nm3))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm6[rnd4] + arr.Nm7[rnd5]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm4))
|
||||
rnd7 := rand.Intn(len(arr.Nm5))
|
||||
for arr.Nm3[rnd5] == arr.Nm5[rnd3] && arr.Nm3[rnd5] == arr.Nm1[rnd] {
|
||||
rnd5 = rand.Intn(len(arr.Nm3))
|
||||
}
|
||||
for rnd6 == 0 && rnd4 == 0 {
|
||||
rnd6 = rand.Intn(len(arr.Nm4))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd6] + arr.Nm5[rnd7] + arr.Nm6[rnd4] + arr.Nm7[rnd5]
|
||||
}
|
||||
if swearFilter != nil && swearFilter(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func SatyrNameFem(arr *SatyrArrays, swearFilter func(string) bool) string {
|
||||
nTp := rand.Intn(8)
|
||||
var nMs string
|
||||
if nTp == 0 {
|
||||
rnd := rand.Intn(9)
|
||||
rnd2 := rand.Intn(3)
|
||||
nMs = arr.Nm8[rnd] + arr.Nm13[rnd2]
|
||||
} else {
|
||||
rnd := rand.Intn(len(arr.Nm8))
|
||||
rnd2 := rand.Intn(len(arr.Nm9))
|
||||
rnd3 := rand.Intn(len(arr.Nm10))
|
||||
rnd4 := rand.Intn(len(arr.Nm13))
|
||||
if nTp < 3 {
|
||||
for arr.Nm8[rnd] == arr.Nm10[rnd3] {
|
||||
rnd3 = rand.Intn(len(arr.Nm10))
|
||||
}
|
||||
for rnd2 < 3 {
|
||||
rnd2 = rand.Intn(len(arr.Nm9))
|
||||
}
|
||||
nMs = arr.Nm8[rnd] + arr.Nm9[rnd2] + arr.Nm10[rnd3] + arr.Nm13[rnd4]
|
||||
} else {
|
||||
rnd5 := rand.Intn(len(arr.Nm11))
|
||||
rnd6 := rand.Intn(len(arr.Nm12))
|
||||
for arr.Nm12[rnd6] == arr.Nm10[rnd3] && arr.Nm10[rnd3] == arr.Nm8[rnd] {
|
||||
rnd3 = rand.Intn(len(arr.Nm10))
|
||||
}
|
||||
for rnd2 < 3 && rnd4 < 3 {
|
||||
rnd2 = rand.Intn(len(arr.Nm9))
|
||||
}
|
||||
nMs = arr.Nm8[rnd] + arr.Nm9[rnd2] + arr.Nm10[rnd3] + arr.Nm11[rnd5] + arr.Nm12[rnd6] + arr.Nm13[rnd4]
|
||||
}
|
||||
}
|
||||
if swearFilter != nil && swearFilter(nMs) {
|
||||
return ""
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func SatyrNameChild(arr *SatyrArrays) string {
|
||||
nTp := rand.Intn(5)
|
||||
var nMs string
|
||||
if nTp == 0 {
|
||||
rnd := rand.Intn(len(arr.Nm18))
|
||||
nMs = arr.Nm18[rnd]
|
||||
} else if nTp < 3 {
|
||||
rnd := rand.Intn(len(arr.Nm14))
|
||||
rnd2 := rand.Intn(len(arr.Nm15))
|
||||
for arr.Nm14[rnd] == arr.Nm15[rnd2] {
|
||||
rnd2 = rand.Intn(len(arr.Nm15))
|
||||
}
|
||||
nMs = arr.Nm14[rnd] + arr.Nm15[rnd2]
|
||||
} else {
|
||||
rnd := rand.Intn(len(arr.Nm16))
|
||||
rnd2 := rand.Intn(len(arr.Nm17))
|
||||
for arr.Nm16[rnd] == arr.Nm17[rnd2] {
|
||||
rnd2 = rand.Intn(len(arr.Nm17))
|
||||
}
|
||||
nMs = arr.Nm16[rnd] + arr.Nm17[rnd2]
|
||||
}
|
||||
return nMs
|
||||
}
|
||||
|
||||
func GenerateSatyrNames(arr *SatyrArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
switch gender {
|
||||
case "child":
|
||||
for i := 0; i < 10; i++ {
|
||||
n := SatyrNameChild(arr)
|
||||
names = append(names, n)
|
||||
}
|
||||
case "female":
|
||||
for i := 0; i < 10; i++ {
|
||||
n := SatyrNameFem(arr, swearFilter)
|
||||
for n == "" {
|
||||
n = SatyrNameFem(arr, swearFilter)
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
default:
|
||||
for i := 0; i < 10; i++ {
|
||||
n := SatyrNameMas(arr, swearFilter)
|
||||
for n == "" {
|
||||
n = SatyrNameMas(arr, swearFilter)
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type ShadarKaiArrays 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"`
|
||||
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"`
|
||||
Nm14 []string `json:"nm14"`
|
||||
}
|
||||
|
||||
func LoadShadarKaiArrays(path string) (ShadarKaiArrays, error) {
|
||||
var arr ShadarKaiArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
if err := decoder.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
func GenerateShadarKaiName(arr ShadarKaiArrays, gender string) string {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
if gender == "female" {
|
||||
return shadarKaiFemale(arr)
|
||||
}
|
||||
return shadarKaiMale(arr)
|
||||
}
|
||||
|
||||
func shadarKaiFemale(a ShadarKaiArrays) string {
|
||||
nTp := rand.Intn(7)
|
||||
rnd := rand.Intn(len(a.Nm8))
|
||||
rnd2 := rand.Intn(len(a.Nm9))
|
||||
rnd3 := rand.Intn(len(a.Nm10))
|
||||
rnd4 := rand.Intn(len(a.Nm13))
|
||||
rnd5 := rand.Intn(len(a.Nm14))
|
||||
if nTp < 3 {
|
||||
for a.Nm10[rnd3] == a.Nm14[rnd5] || a.Nm10[rnd3] == a.Nm8[rnd] {
|
||||
rnd3 = rand.Intn(len(a.Nm10))
|
||||
}
|
||||
return a.Nm8[rnd] + a.Nm9[rnd2] + a.Nm10[rnd3] + a.Nm13[rnd4] + a.Nm14[rnd5]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(a.Nm11))
|
||||
rnd7 := rand.Intn(len(a.Nm12))
|
||||
for a.Nm14[rnd5] == a.Nm12[rnd7] || a.Nm12[rnd7] == a.Nm10[rnd3] {
|
||||
rnd7 = rand.Intn(len(a.Nm12))
|
||||
}
|
||||
return a.Nm8[rnd] + a.Nm9[rnd2] + a.Nm10[rnd3] + a.Nm11[rnd6] + a.Nm12[rnd7] + a.Nm13[rnd4] + a.Nm14[rnd5]
|
||||
}
|
||||
}
|
||||
|
||||
func shadarKaiMale(a ShadarKaiArrays) string {
|
||||
nTp := rand.Intn(8)
|
||||
rnd := rand.Intn(len(a.Nm1))
|
||||
rnd2 := rand.Intn(len(a.Nm2))
|
||||
rnd3 := rand.Intn(len(a.Nm3))
|
||||
rnd4 := rand.Intn(len(a.Nm6))
|
||||
rnd5 := rand.Intn(len(a.Nm7))
|
||||
if nTp < 7 {
|
||||
for a.Nm3[rnd3] == a.Nm7[rnd5] && a.Nm3[rnd3] == a.Nm1[rnd] {
|
||||
rnd3 = rand.Intn(len(a.Nm3))
|
||||
}
|
||||
return a.Nm1[rnd] + a.Nm2[rnd2] + a.Nm3[rnd3] + a.Nm6[rnd4] + a.Nm7[rnd5]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(a.Nm4))
|
||||
rnd7 := rand.Intn(len(a.Nm5))
|
||||
for a.Nm3[rnd5] == a.Nm5[rnd3] && a.Nm3[rnd5] == a.Nm1[rnd] {
|
||||
rnd5 = rand.Intn(len(a.Nm3))
|
||||
}
|
||||
for rnd2 < 4 && rnd6 == 0 {
|
||||
rnd2 = rand.Intn(len(a.Nm2))
|
||||
}
|
||||
return a.Nm1[rnd] + a.Nm2[rnd2] + a.Nm3[rnd3] + a.Nm4[rnd6] + a.Nm5[rnd7] + a.Nm6[rnd4] + a.Nm7[rnd5]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package generators
|
||||
|
||||
// GenerateShadarKaiNames returns 10 names for the given gender, filtering with CheckSwear
|
||||
func GenerateShadarKaiNames(arr *ShadarKaiArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var n string
|
||||
if gender == "female" {
|
||||
n = GenerateShadarKaiName(*arr, "female")
|
||||
} else {
|
||||
n = GenerateShadarKaiName(*arr, "male")
|
||||
}
|
||||
for n == "" || swearFilter(n) {
|
||||
if gender == "female" {
|
||||
n = GenerateShadarKaiName(*arr, "female")
|
||||
} else {
|
||||
n = GenerateShadarKaiName(*arr, "male")
|
||||
}
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type ShardmindArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
}
|
||||
|
||||
func LoadShardmindArrays(path string) (ShardmindArrays, error) {
|
||||
var arr ShardmindArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
if err := decoder.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
func GenerateShardmindName(arr ShardmindArrays) string {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
return arr.Nm1[rnd] + arr.Nm2[rnd2]
|
||||
}
|
||||
|
||||
func GenerateShardmindNames(arr *ShardmindArrays, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
n := GenerateShardmindName(*arr)
|
||||
for n == "" || swearFilter(n) {
|
||||
n = GenerateShardmindName(*arr)
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type ShifterArrays struct {
|
||||
Names1 []string `json:"names1"`
|
||||
Names2 []string `json:"names2"`
|
||||
}
|
||||
|
||||
func LoadShifterArrays(path string) (ShifterArrays, error) {
|
||||
var arr ShifterArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
if err := decoder.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
// gender: "male" or "female"
|
||||
func GenerateShifterName(arr ShifterArrays, gender string) string {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
if gender == "female" {
|
||||
rnd := rand.Intn(len(arr.Names2))
|
||||
return arr.Names2[rnd]
|
||||
}
|
||||
rnd := rand.Intn(len(arr.Names1))
|
||||
return arr.Names1[rnd]
|
||||
}
|
||||
|
||||
func GenerateShifterNames(arr *ShifterArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var n string
|
||||
if gender == "female" {
|
||||
n = GenerateShifterName(*arr, "female")
|
||||
} else {
|
||||
n = GenerateShifterName(*arr, "male")
|
||||
}
|
||||
for n == "" || swearFilter(n) {
|
||||
if gender == "female" {
|
||||
n = GenerateShifterName(*arr, "female")
|
||||
} else {
|
||||
n = GenerateShifterName(*arr, "male")
|
||||
}
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type SimicHybridArrays 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
Nm8 []string `json:"nm8"`
|
||||
Nm9 []string `json:"nm9"`
|
||||
Nm10 []string `json:"nm10"`
|
||||
}
|
||||
|
||||
func LoadSimicHybridArrays(path string) (SimicHybridArrays, error) {
|
||||
var arr SimicHybridArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
if err := decoder.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
func simicHybridNameMas(a SimicHybridArrays) (string, int) {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
nTp := rand.Intn(4)
|
||||
rnd := rand.Intn(len(a.Nm1))
|
||||
rnd2 := rand.Intn(len(a.Nm2))
|
||||
if nTp < 2 {
|
||||
if nTp == 0 {
|
||||
return a.Nm1[rnd], nTp
|
||||
} else {
|
||||
return a.Nm1[rnd] + a.Nm2[rnd2], nTp
|
||||
}
|
||||
} else {
|
||||
rnd3 := rand.Intn(len(a.Nm3))
|
||||
rnd4 := rand.Intn(len(a.Nm4))
|
||||
if nTp == 2 {
|
||||
return a.Nm1[rnd] + a.Nm2[rnd2] + a.Nm3[rnd3], nTp
|
||||
} else {
|
||||
return a.Nm1[rnd] + a.Nm2[rnd2] + a.Nm3[rnd3] + a.Nm4[rnd4], nTp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func simicHybridNameFir(a SimicHybridArrays) string {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
rnd := rand.Intn(len(a.Nm7))
|
||||
rnd2 := rand.Intn(len(a.Nm8))
|
||||
return a.Nm7[rnd] + a.Nm8[rnd2]
|
||||
}
|
||||
|
||||
func simicHybridNameSec(a SimicHybridArrays) string {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
rnd := rand.Intn(len(a.Nm9))
|
||||
rnd2 := rand.Intn(len(a.Nm10))
|
||||
return a.Nm9[rnd] + a.Nm10[rnd2]
|
||||
}
|
||||
|
||||
func GenerateSimicHybridNames(arr *SimicHybridArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var nMs string
|
||||
if i < 5 {
|
||||
var nTp int
|
||||
nMs, nTp = simicHybridNameMas(*arr)
|
||||
if gender == "female" {
|
||||
rnd := rand.Intn(3)
|
||||
if nTp == 0 || nTp == 3 {
|
||||
nMs = nMs + arr.Nm6[rnd]
|
||||
} else {
|
||||
rnd += 3
|
||||
nMs = nMs + arr.Nm6[rnd]
|
||||
}
|
||||
} else {
|
||||
if nTp == 0 || nTp == 3 {
|
||||
nMs = nMs + arr.Nm5[0]
|
||||
} else {
|
||||
rnd := rand.Intn(5)
|
||||
nMs = nMs + arr.Nm5[rnd+1]
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if gender == "female" {
|
||||
nMs = simicHybridNameSec(*arr)
|
||||
} else {
|
||||
nMs = simicHybridNameFir(*arr)
|
||||
}
|
||||
}
|
||||
for nMs == "" || swearFilter(nMs) {
|
||||
if i < 5 {
|
||||
var nTp int
|
||||
nMs, nTp = simicHybridNameMas(*arr)
|
||||
if gender == "female" {
|
||||
rnd := rand.Intn(3)
|
||||
if nTp == 0 || nTp == 3 {
|
||||
nMs = nMs + arr.Nm6[rnd]
|
||||
} else {
|
||||
rnd += 3
|
||||
nMs = nMs + arr.Nm6[rnd]
|
||||
}
|
||||
} else {
|
||||
if nTp == 0 || nTp == 3 {
|
||||
nMs = nMs + arr.Nm5[0]
|
||||
} else {
|
||||
rnd := rand.Intn(5)
|
||||
nMs = nMs + arr.Nm5[rnd+1]
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if gender == "female" {
|
||||
nMs = simicHybridNameSec(*arr)
|
||||
} else {
|
||||
nMs = simicHybridNameFir(*arr)
|
||||
}
|
||||
}
|
||||
}
|
||||
names = append(names, nMs)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type TabaxiArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
Nm5 []string `json:"nm5"`
|
||||
}
|
||||
|
||||
func LoadTabaxiArrays(path string) (TabaxiArrays, error) {
|
||||
var arr TabaxiArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
if err := decoder.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
func GenerateTabaxiNames(arr *TabaxiArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
if gender == "female" {
|
||||
for i := 0; i < 10; i++ {
|
||||
rnd := r.Intn(len(arr.Nm4))
|
||||
rnd2 := r.Intn(len(arr.Nm5))
|
||||
name := "The " + arr.Nm4[rnd] + " " + arr.Nm5[rnd2] + " Clan"
|
||||
for name == "" || swearFilter(name) {
|
||||
rnd = r.Intn(len(arr.Nm4))
|
||||
rnd2 = r.Intn(len(arr.Nm5))
|
||||
name = "The " + arr.Nm4[rnd] + " " + arr.Nm5[rnd2] + " Clan"
|
||||
}
|
||||
names = append(names, name)
|
||||
}
|
||||
return names
|
||||
}
|
||||
// For main type, ensure unique draws for nm1, nm2, nm3 as in JS
|
||||
nm1 := make([]string, len(arr.Nm1))
|
||||
copy(nm1, arr.Nm1)
|
||||
nm2 := make([]string, len(arr.Nm2))
|
||||
copy(nm2, arr.Nm2)
|
||||
nm3 := make([]string, len(arr.Nm3))
|
||||
copy(nm3, arr.Nm3)
|
||||
for i := 0; i < 10; i++ {
|
||||
var name string
|
||||
if i < 5 {
|
||||
rnd := r.Intn(len(nm1))
|
||||
name = nm1[rnd]
|
||||
nm1 = append(nm1[:rnd], nm1[rnd+1:]...)
|
||||
} else {
|
||||
rnd := r.Intn(len(nm2))
|
||||
rnd2 := r.Intn(len(nm3))
|
||||
nTp := r.Intn(2)
|
||||
if nTp == 0 {
|
||||
name = nm2[rnd] + " " + nm3[rnd2] + " (" + nm2[rnd] + ")"
|
||||
} else {
|
||||
name = nm2[rnd] + " " + nm3[rnd2] + " (" + nm3[rnd2] + ")"
|
||||
}
|
||||
nm2 = append(nm2[:rnd], nm2[rnd+1:]...)
|
||||
nm3 = append(nm3[:rnd2], nm3[rnd2+1:]...)
|
||||
}
|
||||
for name == "" || swearFilter(name) {
|
||||
// repeat logic for unique draws
|
||||
if i < 5 && len(nm1) > 0 {
|
||||
rnd := r.Intn(len(nm1))
|
||||
name = nm1[rnd]
|
||||
nm1 = append(nm1[:rnd], nm1[rnd+1:]...)
|
||||
} else if len(nm2) > 0 && len(nm3) > 0 {
|
||||
rnd := r.Intn(len(nm2))
|
||||
rnd2 := r.Intn(len(nm3))
|
||||
nTp := r.Intn(2)
|
||||
if nTp == 0 {
|
||||
name = nm2[rnd] + " " + nm3[rnd2] + " (" + nm2[rnd] + ")"
|
||||
} else {
|
||||
name = nm2[rnd] + " " + nm3[rnd2] + " (" + nm3[rnd2] + ")"
|
||||
}
|
||||
nm2 = append(nm2[:rnd], nm2[rnd+1:]...)
|
||||
nm3 = append(nm3[:rnd2], nm3[rnd2+1:]...)
|
||||
}
|
||||
}
|
||||
names = append(names, name)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type TieflingArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
Nm5 []string `json:"nm5"`
|
||||
}
|
||||
|
||||
func LoadTieflingArrays(path string) (TieflingArrays, error) {
|
||||
var arr TieflingArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
if err := decoder.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
func GenerateTieflingName(arr *TieflingArrays, gender string) string {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
switch gender {
|
||||
case "female":
|
||||
rnd := rand.Intn(len(arr.Nm4))
|
||||
rnd2 := rand.Intn(len(arr.Nm5))
|
||||
return arr.Nm4[rnd] + arr.Nm5[rnd2]
|
||||
case "virtue":
|
||||
rnd := rand.Intn(len(arr.Nm3))
|
||||
return arr.Nm3[rnd]
|
||||
default:
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
return arr.Nm1[rnd] + arr.Nm2[rnd2]
|
||||
}
|
||||
}
|
||||
|
||||
func GenerateTieflingNames(arr *TieflingArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
var n string
|
||||
switch gender {
|
||||
case "female":
|
||||
n = GenerateTieflingName(arr, "female")
|
||||
case "virtue":
|
||||
n = GenerateTieflingName(arr, "virtue")
|
||||
default:
|
||||
n = GenerateTieflingName(arr, "male")
|
||||
}
|
||||
for n == "" || swearFilter(n) {
|
||||
switch gender {
|
||||
case "female":
|
||||
n = GenerateTieflingName(arr, "female")
|
||||
case "virtue":
|
||||
n = GenerateTieflingName(arr, "virtue")
|
||||
default:
|
||||
n = GenerateTieflingName(arr, "male")
|
||||
}
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type TortleArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
Nm2 []string `json:"nm2"`
|
||||
Nm3 []string `json:"nm3"`
|
||||
Nm4 []string `json:"nm4"`
|
||||
Nm5 []string `json:"nm5"`
|
||||
}
|
||||
|
||||
func LoadTortleArrays(path string) (TortleArrays, error) {
|
||||
var arr TortleArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
if err := decoder.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
func GenerateTortleNames(arr *TortleArrays, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
for i := 0; i < 10; i++ {
|
||||
var nMs string
|
||||
nTp := r.Intn(3)
|
||||
rnd := r.Intn(len(arr.Nm1))
|
||||
rnd2 := r.Intn(len(arr.Nm2))
|
||||
rnd3 := r.Intn(len(arr.Nm5))
|
||||
if nTp == 0 {
|
||||
for arr.Nm1[rnd] == "" && arr.Nm5[rnd3] == "" {
|
||||
rnd = r.Intn(len(arr.Nm1))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm5[rnd3]
|
||||
} else {
|
||||
rnd4 := r.Intn(len(arr.Nm4))
|
||||
rnd5 := r.Intn(len(arr.Nm3))
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd5] + arr.Nm4[rnd4] + arr.Nm5[rnd3]
|
||||
}
|
||||
for nMs == "" || swearFilter(nMs) {
|
||||
nTp = r.Intn(3)
|
||||
rnd = r.Intn(len(arr.Nm1))
|
||||
rnd2 = r.Intn(len(arr.Nm2))
|
||||
rnd3 = r.Intn(len(arr.Nm5))
|
||||
if nTp == 0 {
|
||||
for arr.Nm1[rnd] == "" && arr.Nm5[rnd3] == "" {
|
||||
rnd = r.Intn(len(arr.Nm1))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm5[rnd3]
|
||||
} else {
|
||||
rnd4 := r.Intn(len(arr.Nm4))
|
||||
rnd5 := r.Intn(len(arr.Nm3))
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd5] + arr.Nm4[rnd4] + arr.Nm5[rnd3]
|
||||
}
|
||||
}
|
||||
names = append(names, nMs)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type TritonArrays 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"`
|
||||
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"`
|
||||
}
|
||||
|
||||
func LoadTritonArrays(path string) (TritonArrays, error) {
|
||||
var arr TritonArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
if err := decoder.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
func tritonSurname(a TritonArrays, r *rand.Rand) string {
|
||||
for {
|
||||
rnd := r.Intn(len(a.Nm9))
|
||||
rnd2 := r.Intn(len(a.Nm10))
|
||||
rnd3 := r.Intn(len(a.Nm11))
|
||||
rnd4 := r.Intn(len(a.Nm12))
|
||||
rnd5 := r.Intn(len(a.Nm13))
|
||||
if a.Nm11[rnd3] != a.Nm9[rnd] && a.Nm11[rnd3] != a.Nm13[rnd5] {
|
||||
return a.Nm9[rnd] + a.Nm10[rnd2] + a.Nm11[rnd3] + a.Nm12[rnd4] + a.Nm13[rnd5] + "ath"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func tritonNameFem(a TritonArrays, r *rand.Rand, i int) string {
|
||||
for {
|
||||
rnd := r.Intn(len(a.Nm4))
|
||||
rnd2 := r.Intn(len(a.Nm5))
|
||||
rnd3 := r.Intn(len(a.Nm6))
|
||||
rnd4 := r.Intn(len(a.Nm8))
|
||||
if a.Nm6[rnd3] != a.Nm4[rnd] {
|
||||
if i < 5 {
|
||||
return a.Nm4[rnd] + a.Nm5[rnd2] + a.Nm6[rnd3] + a.Nm8[rnd4] + "n"
|
||||
} else {
|
||||
rnd5 := r.Intn(len(a.Nm5))
|
||||
rnd6 := r.Intn(len(a.Nm7))
|
||||
if a.Nm7[rnd6] != a.Nm6[rnd3] {
|
||||
return a.Nm4[rnd] + a.Nm5[rnd2] + a.Nm6[rnd3] + a.Nm5[rnd5] + a.Nm7[rnd6] + a.Nm8[rnd4] + "n"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func tritonNameMas(a TritonArrays, r *rand.Rand) string {
|
||||
for {
|
||||
rnd := r.Intn(len(a.Nm1))
|
||||
rnd2 := r.Intn(len(a.Nm2))
|
||||
rnd3 := r.Intn(len(a.Nm3))
|
||||
if a.Nm1[rnd] != a.Nm3[rnd3] {
|
||||
return a.Nm1[rnd] + a.Nm2[rnd2] + a.Nm3[rnd3] + a.Nm2[rnd2] + "s"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func GenerateTritonNames(arr *TritonArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
for i := 0; i < 10; i++ {
|
||||
surname := tritonSurname(*arr, r)
|
||||
var name string
|
||||
if gender == "female" {
|
||||
name = tritonNameFem(*arr, r, i) + " " + surname
|
||||
} else {
|
||||
name = tritonNameMas(*arr, r) + " " + surname
|
||||
}
|
||||
for name == "" || swearFilter(name) {
|
||||
surname = tritonSurname(*arr, r)
|
||||
if gender == "female" {
|
||||
name = tritonNameFem(*arr, r, i) + " " + surname
|
||||
} else {
|
||||
name = tritonNameMas(*arr, r) + " " + surname
|
||||
}
|
||||
}
|
||||
names = append(names, name)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type VedalkenArrays 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
Nm8 []string `json:"nm8"`
|
||||
Nm9 []string `json:"nm9"`
|
||||
Nm10 []string `json:"nm10"`
|
||||
Nm11 []string `json:"nm11"`
|
||||
Nm12 []string `json:"nm12"`
|
||||
}
|
||||
|
||||
func LoadVedalkenArrays(path string) (VedalkenArrays, error) {
|
||||
var arr VedalkenArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
if err := decoder.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
func vedalkenNameMas(a VedalkenArrays, r *rand.Rand) string {
|
||||
nTp := r.Intn(3)
|
||||
rnd := r.Intn(len(a.Nm1))
|
||||
rnd2 := r.Intn(len(a.Nm2))
|
||||
rnd3 := r.Intn(len(a.Nm3))
|
||||
rnd4 := r.Intn(len(a.Nm2))
|
||||
rnd5 := r.Intn(len(a.Nm5))
|
||||
if nTp < 2 {
|
||||
for a.Nm1[rnd] == a.Nm3[rnd3] || a.Nm3[rnd3] == a.Nm5[rnd5] {
|
||||
rnd3 = r.Intn(len(a.Nm3))
|
||||
}
|
||||
return a.Nm1[rnd] + a.Nm2[rnd2] + a.Nm3[rnd3] + a.Nm2[rnd4] + a.Nm5[rnd5]
|
||||
} else {
|
||||
rnd6 := r.Intn(len(a.Nm2))
|
||||
rnd7 := r.Intn(len(a.Nm4))
|
||||
for a.Nm4[rnd7] == a.Nm3[rnd3] || a.Nm4[rnd7] == a.Nm5[rnd5] {
|
||||
rnd7 = r.Intn(len(a.Nm4))
|
||||
}
|
||||
return a.Nm1[rnd] + a.Nm2[rnd2] + a.Nm3[rnd3] + a.Nm2[rnd4] + a.Nm4[rnd7] + a.Nm2[rnd6] + a.Nm5[rnd5]
|
||||
}
|
||||
}
|
||||
|
||||
func vedalkenNameFem(a VedalkenArrays, r *rand.Rand) string {
|
||||
nTp := r.Intn(3)
|
||||
rnd := r.Intn(len(a.Nm6))
|
||||
rnd2 := r.Intn(len(a.Nm7))
|
||||
rnd3 := r.Intn(len(a.Nm8))
|
||||
rnd4 := r.Intn(len(a.Nm11))
|
||||
rnd5 := r.Intn(len(a.Nm12))
|
||||
if rnd2 < 4 {
|
||||
for rnd4 < 3 {
|
||||
rnd4 = r.Intn(len(a.Nm11))
|
||||
}
|
||||
}
|
||||
if nTp < 2 {
|
||||
for a.Nm6[rnd] == a.Nm8[rnd3] || a.Nm8[rnd3] == a.Nm12[rnd5] {
|
||||
rnd3 = r.Intn(len(a.Nm8))
|
||||
}
|
||||
return a.Nm6[rnd] + a.Nm7[rnd2] + a.Nm8[rnd3] + a.Nm11[rnd4] + a.Nm12[rnd5]
|
||||
} else {
|
||||
rnd6 := r.Intn(len(a.Nm9))
|
||||
rnd7 := r.Intn(len(a.Nm10))
|
||||
for a.Nm10[rnd7] == a.Nm8[rnd3] || a.Nm10[rnd7] == a.Nm12[rnd5] {
|
||||
rnd7 = r.Intn(len(a.Nm10))
|
||||
}
|
||||
return a.Nm6[rnd] + a.Nm7[rnd2] + a.Nm8[rnd3] + a.Nm9[rnd6] + a.Nm10[rnd7] + a.Nm11[rnd4] + a.Nm12[rnd5]
|
||||
}
|
||||
}
|
||||
|
||||
func GenerateVedalkenNames(arr *VedalkenArrays, gender string, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
for i := 0; i < 10; i++ {
|
||||
var n string
|
||||
if gender == "female" {
|
||||
n = vedalkenNameFem(*arr, r)
|
||||
} else {
|
||||
n = vedalkenNameMas(*arr, r)
|
||||
}
|
||||
for n == "" || swearFilter(n) {
|
||||
if gender == "female" {
|
||||
n = vedalkenNameFem(*arr, r)
|
||||
} else {
|
||||
n = vedalkenNameMas(*arr, r)
|
||||
}
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type VerdanArrays 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"`
|
||||
Nm7 []string `json:"nm7"`
|
||||
}
|
||||
|
||||
func LoadVerdanArrays(path string) (VerdanArrays, error) {
|
||||
var arr VerdanArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
if err := decoder.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
func GenerateVerdanNames(arr *VerdanArrays, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
for i := 0; i < 10; i++ {
|
||||
var nMs string
|
||||
nTp := r.Intn(5)
|
||||
rnd := r.Intn(len(arr.Nm1))
|
||||
rnd2 := r.Intn(len(arr.Nm2))
|
||||
rnd5 := r.Intn(len(arr.Nm7))
|
||||
if nTp < 2 {
|
||||
for arr.Nm7[rnd5] == "" {
|
||||
rnd5 = r.Intn(len(arr.Nm7))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm7[rnd5]
|
||||
} else if nTp < 4 {
|
||||
rnd3 := r.Intn(len(arr.Nm3))
|
||||
rnd4 := r.Intn(len(arr.Nm4))
|
||||
for arr.Nm3[rnd3] == arr.Nm7[rnd5] || arr.Nm3[rnd3] == arr.Nm1[rnd] {
|
||||
rnd3 = r.Intn(len(arr.Nm3))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd4] + arr.Nm7[rnd5]
|
||||
} else {
|
||||
rnd3 := r.Intn(len(arr.Nm3))
|
||||
rnd4 := r.Intn(len(arr.Nm4))
|
||||
rnd6 := r.Intn(len(arr.Nm6))
|
||||
rnd7 := r.Intn(len(arr.Nm5))
|
||||
for arr.Nm3[rnd5] == arr.Nm5[rnd7] || arr.Nm5[rnd7] == arr.Nm7[rnd5] {
|
||||
rnd7 = r.Intn(len(arr.Nm5))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd4] + arr.Nm5[rnd7] + arr.Nm6[rnd6] + arr.Nm7[rnd5]
|
||||
}
|
||||
for nMs == "" || swearFilter(nMs) {
|
||||
nTp = r.Intn(5)
|
||||
rnd = r.Intn(len(arr.Nm1))
|
||||
rnd2 = r.Intn(len(arr.Nm2))
|
||||
rnd5 = r.Intn(len(arr.Nm7))
|
||||
if nTp < 2 {
|
||||
for arr.Nm7[rnd5] == "" {
|
||||
rnd5 = r.Intn(len(arr.Nm7))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm7[rnd5]
|
||||
} else if nTp < 4 {
|
||||
rnd3 := r.Intn(len(arr.Nm3))
|
||||
rnd4 := r.Intn(len(arr.Nm4))
|
||||
for arr.Nm3[rnd3] == arr.Nm7[rnd5] || arr.Nm3[rnd3] == arr.Nm1[rnd] {
|
||||
rnd3 = r.Intn(len(arr.Nm3))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd4] + arr.Nm7[rnd5]
|
||||
} else {
|
||||
rnd3 := r.Intn(len(arr.Nm3))
|
||||
rnd4 := r.Intn(len(arr.Nm4))
|
||||
rnd6 := r.Intn(len(arr.Nm6))
|
||||
rnd7 := r.Intn(len(arr.Nm5))
|
||||
for arr.Nm3[rnd5] == arr.Nm5[rnd7] || arr.Nm5[rnd7] == arr.Nm7[rnd5] {
|
||||
rnd7 = r.Intn(len(arr.Nm5))
|
||||
}
|
||||
nMs = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd4] + arr.Nm5[rnd7] + arr.Nm6[rnd6] + arr.Nm7[rnd5]
|
||||
}
|
||||
}
|
||||
names = append(names, nMs)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type WarforgedArrays struct {
|
||||
Nm1 []string `json:"nm1"`
|
||||
}
|
||||
|
||||
func LoadWarforgedArrays(path string) (WarforgedArrays, error) {
|
||||
var arr WarforgedArrays
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer file.Close()
|
||||
decoder := json.NewDecoder(file)
|
||||
if err := decoder.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
func GenerateWarforgedNames(arr *WarforgedArrays, swearFilter func(string) bool) []string {
|
||||
names := make([]string, 0, 10)
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
for i := 0; i < 10; i++ {
|
||||
var n string
|
||||
rnd := r.Intn(len(arr.Nm1))
|
||||
n = arr.Nm1[rnd]
|
||||
for n == "" || swearFilter(n) {
|
||||
rnd = r.Intn(len(arr.Nm1))
|
||||
n = arr.Nm1[rnd]
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type WildenArrays struct {
|
||||
NmMFf []string `json:"nmMFf"`
|
||||
NmMFl []string `json:"nmMFl"`
|
||||
NmMSf []string `json:"nmMSf"`
|
||||
NmMSl []string `json:"nmMSl"`
|
||||
NmFF []string `json:"nmFF"`
|
||||
NmFL []string `json:"nmFL"`
|
||||
}
|
||||
|
||||
func LoadWildenArrays(path string) (WildenArrays, error) {
|
||||
var arr WildenArrays
|
||||
f, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer f.Close()
|
||||
dec := json.NewDecoder(f)
|
||||
if err := dec.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
// type: "female" or "male" (default male)
|
||||
func GenerateWildenNames(arr *WildenArrays, swear func(string) bool, gender string) []string {
|
||||
var names []string
|
||||
for i := 0; i < 10; i++ {
|
||||
var name string
|
||||
if gender == "female" {
|
||||
rnd := rand.Intn(len(arr.NmFF))
|
||||
rnd2 := rand.Intn(len(arr.NmFL))
|
||||
name = arr.NmFF[rnd] + arr.NmFL[rnd2]
|
||||
} else {
|
||||
if i < 5 {
|
||||
rnd := rand.Intn(len(arr.NmMFf))
|
||||
rnd2 := rand.Intn(len(arr.NmMFl))
|
||||
name = arr.NmMFf[rnd] + arr.NmMFl[rnd2]
|
||||
} else {
|
||||
rnd := rand.Intn(len(arr.NmMSf))
|
||||
rnd2 := rand.Intn(len(arr.NmMSl))
|
||||
name = arr.NmMSf[rnd] + arr.NmMSl[rnd2]
|
||||
}
|
||||
}
|
||||
if !swear(name) {
|
||||
names = append(names, name)
|
||||
}
|
||||
}
|
||||
return names
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package generators
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
"os"
|
||||
)
|
||||
|
||||
type YuanTiArrays 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"`
|
||||
}
|
||||
|
||||
func LoadYuanTiArrays(path string) (YuanTiArrays, error) {
|
||||
var arr YuanTiArrays
|
||||
f, err := os.Open(path)
|
||||
if err != nil {
|
||||
return arr, err
|
||||
}
|
||||
defer f.Close()
|
||||
dec := json.NewDecoder(f)
|
||||
if err := dec.Decode(&arr); err != nil {
|
||||
return arr, err
|
||||
}
|
||||
return arr, nil
|
||||
}
|
||||
|
||||
func GenerateYuanTiNames(arr *YuanTiArrays, swear func(string) bool) []string {
|
||||
var names []string
|
||||
for i := 0; i < 10; i++ {
|
||||
var name string
|
||||
rnd := rand.Intn(len(arr.Nm1))
|
||||
rnd2 := rand.Intn(len(arr.Nm2))
|
||||
rnd3 := rand.Intn(len(arr.Nm3))
|
||||
rnd4 := rand.Intn(len(arr.Nm5))
|
||||
rnd5 := rand.Intn(len(arr.Nm6))
|
||||
if i < 6 {
|
||||
for arr.Nm1[rnd] == arr.Nm3[rnd3] || arr.Nm3[rnd3] == arr.Nm6[rnd5] {
|
||||
rnd3 = rand.Intn(len(arr.Nm3))
|
||||
}
|
||||
name = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm5[rnd4] + arr.Nm6[rnd5]
|
||||
} else {
|
||||
rnd6 := rand.Intn(len(arr.Nm4))
|
||||
rnd7 := rand.Intn(len(arr.Nm2))
|
||||
for arr.Nm3[rnd4] == arr.Nm4[rnd6] || arr.Nm4[rnd6] == arr.Nm6[rnd5] {
|
||||
rnd6 = rand.Intn(len(arr.Nm4))
|
||||
}
|
||||
name = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm2[rnd7] + arr.Nm4[rnd6] + arr.Nm5[rnd4] + arr.Nm6[rnd5]
|
||||
}
|
||||
if !swear(name) {
|
||||
names = append(names, name)
|
||||
}
|
||||
}
|
||||
return names
|
||||
}
|
||||
Reference in New Issue
Block a user