ref: 5037bbfa38f1946e465f9d4d0823e2aaa4229b35
dir: /src/petname.c/
//
// 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 <string.h>
static char *adjectives[] = {
"Grumpy",
"Ecstatic",
"Surly",
"Prepared",
"Crafty",
"Alert",
"Sluggish",
"Testy",
"Reluctant",
"Languid",
"Passive",
"Pacifist",
"Aggressive",
"Hostile",
"Diseased",
"Bubbly",
"Giggly",
"Laughing",
"Crying",
"Frowning",
"Flatulent",
"Torpid",
"Lethargic",
"Manic",
"Patient",
"Protective",
"Philosophical",
"Enquiring",
"Debating",
"Furious",
"Laid-Back",
"Easy-Going",
"Cromulent",
"Excitable",
"Tired",
"Exhausted",
"Ruminating",
"Redundant",
"Sporty",
"Ginger",
"Scary",
"Posh",
"Baby",
};
#define NUM_ADJECTIVES (sizeof adjectives / sizeof (char *))
static char *nouns[] = {
// 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",
"Crusader",
};
#define NUM_NOUNS (sizeof nouns / sizeof (char *))
/*
* 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 initialisation might as well occur then.
*/
static void initPetName()
{
srandom((unsigned int)time(NULL));
}
char *getRandomPetName()
{
char *a, *n, *r;
initPetName();
a = adjectives[random() % NUM_ADJECTIVES];
n = nouns[random() % NUM_NOUNS];
r = (char *)malloc(strlen(a) + (sizeof ' ') +
strlen(n) + (sizeof '\0'));
if(r)
{
strcpy(r,a);
r[strlen(a)] = ' ';
strcpy(r + strlen(a) + 1, n);
}
return r;
}