dnd-name-generator/language/languages/infernal/names.py
2023-11-24 08:48:03 -05:00

88 lines
2.1 KiB
Python

from language import types
from language.languages.infernal import Language
adjectives = types.equal_weights(
[
"eternal",
"wondrous",
"luminous",
"perfect",
"essential",
"golden",
"unfailing",
"perpetual",
"infinite",
"exquisite",
"sinless",
"ultimate",
"flawless",
"timeless",
"glorious",
"absolute",
"boundless",
"true",
"incredible",
"virtuous",
"supreme",
"enchanted",
"magnificent",
"superior",
"spectacular",
"divine",
],
0.25,
)
bloodlines = types.equal_weights(
[
"Asmodeus",
"Baalzebul",
"Rimmon",
"Dispater",
"Fierna",
"Glasya",
"Levistus",
"Mammon",
"Mephistopheles",
"Zariel",
]
)
class InfernalNameGenerator(types.NameGenerator):
def __init__(self):
super().__init__(
language=Language,
templates=types.NameSet(
# (types.NameTemplate("adjective,name,nickname,surname"), 1.0),
(types.NameTemplate("name"), 0.25),
(types.NameTemplate("adjective,name"), 0.25),
),
adjectives=adjectives,
)
self.language.minimum_grapheme_count = 2
self.suffixes = types.equal_weights(["us", "ius", "eus", "a", "an", "is"], 1.0, blank=False)
def get_name(self) -> str:
return super().get_name() + self.suffixes.random()
class NobleInfernalNameGenerator(types.NameGenerator):
def __init__(self):
super().__init__(
language=Language,
templates=types.NameSet(
(types.NameTemplate("adjective,name"), 1.0),
),
adjectives=bloodlines,
)
self.language.minimum_grapheme_count = 2
self.suffixes = types.equal_weights(["us", "ius", "to", "tro", "eus", "a", "an", "is"], 1.0, blank=False)
def get_name(self) -> str:
return super().get_name() + self.suffixes.random()
Name = InfernalNameGenerator()
NobleName = NobleInfernalNameGenerator()