1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
const common = require("./common.js")
const pseudoRandom = require("pseudo-random")
const hiragana = require("./hiragana.json")
let hiraganaList = []
for (let k of Object.keys(hiragana))
if (k.length == 1)
hiraganaList.push(k)
const waifuName = rng => {
let r = Math.floor(1
+ rng.random()
+ rng.random()
+ rng.random()
+ rng.random()
+ rng.random()
)
let jp = ""
for (let i = 0; i < r; i++)
jp += common.choose(hiraganaList, rng)
let en = ""
for (let i = 0; i < r; i++) {
const combo = hiragana[jp.slice(i, i + 2)]
if (combo) {
en += combo
i++
} else {
en += hiragana[jp.slice(i, i + 1)]
}
}
return `${jp} (${common.uppercase(en)})`
}
const waifuSpecies = rng => common.chooseWeighted([
[ null, 100], // Human
[ "Catgirl", 15],
[ "Foxgirl", 15],
[ "Wolfgirl", 15],
[ "Orc", 5],
[ "Elb", 5],
[ "Dwarf", 5],
[ "Femboy", 3],
["Apache Helicopter", 1],
[ "C++ Programmer", 1],
], rng)
const waifuGender = rng => common.chooseWeighted([
[ "Male", 50],
[ "Female", 50],
[ "null", 1],
["undefined", 1],
[ "Infinity", 1],
["-Infinity", 1],
[ "NaN", 1],
[ "-NaN", 1],
], rng)
const waifuHair = rng => common.chooseWeighted([
[[ "Brown", "#DDAE92"], 25],
[[ "Black", "#433F3A"], 25],
[["Blonde", "#ECC87E"], 20],
[[ "Red", "#E2887F"], 10],
], rng)
const waifuEyes = rng => common.chooseWeighted([
[["Brown", "#463230"], 15],
[[ "Blue", "#97C6FE"], 10],
[["Green", "#36CC4E"], 5],
], rng)
const waifuAge = rng => {
const tab = common.chooseWeighted([
[[ 200, 600], 25], // deamon
[[1000, 2000], 5], // next level deamon
[[ 12, 16], 50], // teen loli
[[ 18, 19], 5], // legal loli
[[ 5, 9], 5], // true loli
[ null, 1], // unknown
], rng)
return tab ? tab[0] + Math.floor(rng.random() * (tab[1] - tab[0] + 1)) : null;
}
const waifu = id => {
const rng = pseudoRandom(id = id || Math.floor(Math.random() * 32767))
return {
id,
name: waifuName(rng),
species: waifuSpecies(rng),
gender: waifuGender(rng),
hair: waifuHair(rng),
eyes: waifuEyes(rng),
age: waifuAge(rng),
}
}
const formatWaifu = waifu =>
`__**${waifu.name}**__
**Age:** ${waifu.age || "Unknown"}
**Gender:** ${waifu.gender}
${waifu.hair[0]} Hair
${waifu.eyes[0]} Eyes
#${waifu.id}
`
module.exports = {
waifu: {
func: (msg, [id]) =>
msg.reply(formatWaifu(waifu(parseInt(id))))
}
}
|