forked from cloudflare/doom-wasm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
net_petname.c
118 lines (111 loc) · 2.29 KB
/
net_petname.c
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
//
// Copyright(C) 2019 Jonathan Dowland
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// DESCRIPTION:
// Generate a randomized, private, memorable name for a Player
//
#include <stdlib.h>
#include <time.h>
#include "doomtype.h"
#include "m_misc.h"
static const char * const adjectives [] = {
"Grumpy",
"Ecstatic",
"Surly",
"Prepared",
"Crafty",
"Alert",
"Sluggish",
"Testy",
"Reluctant",
"Languid",
"Passive",
"Pacifist",
"Aggressive",
"Hostile",
"Bubbly",
"Giggly",
"Laughing",
"Crying",
"Frowning",
"Torpid",
"Lethargic",
"Manic",
"Patient",
"Protective",
"Philosophical",
"Enquiring",
"Debating",
"Furious",
"Laid-Back",
"Easy-Going",
"Cromulent",
"Excitable",
"Tired",
"Exhausted",
"Ruminating",
"Redundant",
"Sporty",
"Ginger",
"Scary",
"Posh",
"Baby",
};
static const char * const nouns[] = {
"Frad",
// Doom
"Cacodemon",
"Arch-Vile",
"Cyberdemon",
"Imp",
"Demon",
"Mancubus",
"Arachnotron",
"Baron",
"Knight",
"Revenant",
// Hexen
"Ettin",
"Maulotaur",
"Centaur",
"Afrit",
"Serpent",
// Heretic
"Disciple",
"Gargoyle",
"Golem",
"Lich",
// Strife
"Sentinel",
"Acolyte",
"Templar",
"Reaver",
"Spectre",
};
/*
* ideally we would export this and the caller would invoke it during
* their setup routine. But, the two callers only invoke getRandomPetName
* once, so the initialization might as well occur then.
*/
static void InitPetName()
{
srand((unsigned int)time(NULL));
}
char *NET_GetRandomPetName()
{
const char *a, *n;
InitPetName();
a = adjectives[rand() % arrlen(adjectives)];
n = nouns[rand() % arrlen(nouns)];
return M_StringJoin(a, " ", n, NULL);
}