initial import

This commit is contained in:
evilchili
2023-11-24 08:48:03 -05:00
commit 45f4d6e401
66 changed files with 3601 additions and 0 deletions
+19
View File
@@ -0,0 +1,19 @@
### Infernal
The language of devils is a collection of gutteral barks that is unmistakable,
and unmistakably terrifying, to the ear of common folk. Traditional names
typically begin with the name of the ruler of whatever circle of Hell the devil
calls home, but some Tieflings (and others of Infernal origin) reject their
Infernal legacies and choose less noble names.
*Z'zait cocf k'd z'xz t'ugoo! Yipd k'j x'euy, z'edu k'oczu!*
**Infernal Names:**
* P'Utufus
* Golden Bdaeus
* Timeless Ujius
**Noble Infernal Names:**
* Mephistopheles T'Xieis
* Asmodeus T'Opakan
* Mammon K'Nusan
+7
View File
@@ -0,0 +1,7 @@
"""
Infernal
"""
from .base import Language
from .names import Name, NobleName
__all__ = [Language, Name, NobleName]
+52
View File
@@ -0,0 +1,52 @@
from language import defaults, types
from .rules import rules
consonants = types.WeightedSet(
("b", 1.0),
("c", 1.0),
("d", 1.0),
("f", 0.5),
("g", 0.5),
("j", 1.0),
("k", 1.0),
("l", 0.3),
("m", 0.3),
("n", 0.3),
("p", 1.0),
("r", 0.2),
("s", 0.1),
("t", 1.0),
("v", 1.0),
("x", 1.0),
("y", 1.0),
("z", 1.0),
)
prefixes = types.equal_weights(
[
"t'",
"x'",
"k'",
"p'",
"z'",
],
0.5,
)
Language = types.Language(
name="infernal",
vowels=defaults.vowels,
consonants=consonants,
prefixes=prefixes,
suffixes=None,
syllables=types.SyllableSet(
(types.Syllable(template="consonant|vowel") * 2, 0.05),
(types.Syllable(template="consonant|vowel") * 3, 1.0),
(types.Syllable(template="consonant|vowel") * 4, 0.75),
(types.Syllable(template="consonant|vowel") * 5, 0.5),
(types.Syllable(template="consonant|vowel") * 6, 0.25),
),
rules=rules,
minimum_grapheme_count=2,
)
+87
View File
@@ -0,0 +1,87 @@
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()
+7
View File
@@ -0,0 +1,7 @@
import logging
from language.rules import default_rules
logger = logging.getLogger("infernal-rules")
rules = default_rules