diff --git a/src/common/kernel/names.c b/src/common/kernel/names.c index f03471f67..61c71433b 100644 --- a/src/common/kernel/names.c +++ b/src/common/kernel/names.c @@ -216,54 +216,6 @@ const char *silbe3[SIL3] = { "bus", }; -#define DTITEL 5 - -const xmlChar *dtitel[6][DTITEL] = -{ - { /* Ebene, Hochland */ - "der Weise", - "der Allwissende", - "der Mächtige", - "die Ehrwürdige", - "die Listige" - }, - { /* Wald */ - "der Grüne", - "die Strafende", - "der Sehende", - "der Reisende", - "die Wissende" - }, - { /* Berge */ - "der Goldene", - "der Graue", - "der Steinerne", - "die Alte", - "die Mächtige" - }, - { /* Wüste */ - "die Goldene", - "der Grausame", - "der Sanddrache", - "der Durstige", - "die Verzehrende" - }, - { /* Sumpf */ - "die Grüne", - "die Rote", - "der Furchtlose", - "der Allmächtige", - "der Weitblickende" - }, - { /* Gletscher */ - "der Weiße", - "die Glänzende", - "der Wissende", - "die Unbarmherzige", - "die Schöne" - } -}; - const xmlChar * generic_name(const unit *u) { @@ -277,34 +229,59 @@ const xmlChar * dragon_name(const unit *u) { static char name[NAMESIZE + 1]; - int rnd = rng_int() % DTITEL; - const xmlChar *t = dtitel[0][rnd]; + int rnd, ter = 0; int anzahl = 1; + static int num_postfix; + char zText[32]; + const xmlChar * str; + + if (num_postfix==0) { + for (num_postfix=0;;++num_postfix) { + sprintf(zText, "dragon_postfix_%d", num_postfix); + str = locale_getstring(default_locale, zText); + if (str==NULL) break; + } + if (num_postfix==0) num_postfix = -1; + } + if (num_postfix<=0) { + return NULL; + } if (u) { region *r = u->region; anzahl = u->number; switch (rterrain(r)) { case T_PLAIN: - t = dtitel[1][rnd]; + ter = 1; break; case T_MOUNTAIN: - t = dtitel[2][rnd]; + ter = 2; break; case T_DESERT: - t = dtitel[3][rnd]; + ter = 3; break; case T_SWAMP: - t = dtitel[4][rnd]; + ter = 4; break; case T_GLACIER: - t = dtitel[5][rnd]; + ter = 5; break; } } - if (anzahl > 1) { - sprintf(name, "Die %sn von %s", t+4, rname(u->region, NULL)); + rnd = num_postfix / 6; + rnd = (rng_int() % rnd) + ter * rnd; + + sprintf(zText, "dragon_postfix_%d", rnd); + + str = locale_getstring(default_locale, zText); + assert(str!=NULL); + + if (anzahl > 1) { + const char * no_article = strchr((const char *)str, ' '); + assert(no_article); + /* TODO: GERMAN */ + sprintf(name, "Die %sn von %s", no_article, rname(u->region, NULL)); } else { char n[32]; @@ -312,20 +289,20 @@ dragon_name(const unit *u) strcat(n, silbe2[rng_int() % SIL2]); strcat(n, silbe3[rng_int() % SIL3]); if (rng_int() % 5 > 2) { - sprintf(name, "%s, %s", n, t); /* "Name, der Titel" */ + sprintf(name, "%s, %s", n, str); /* "Name, der Titel" */ } else { - strcpy(name, t); /* "Der Titel Name" */ - name[0] = (char) toupper(name[0]); + strcpy(name, (const char *)str); /* "Der Titel Name" */ + name[0] = (char)toupper(name[0]); strcat(name, " "); strcat(name, n); } if (u && (rng_int() % 3 == 0)) { strcat(name, " von "); - strcat(name, rname(u->region, NULL)); + strcat(name, (const char *)rname(u->region, NULL)); } } - return name; + return (xmlChar *)name; } /* Dracoide */ @@ -406,6 +383,8 @@ abkz(const xmlChar *s, size_t max) unsigned int c = 0; size_t bpt, i; + /* TODO: UNICODE. This function uses isalnum */ + max = min(max, 79); /* Prüfen, ob Kurz genug */ @@ -460,7 +439,7 @@ abkz(const xmlChar *s, size_t max) buf[c] = 0; - return buf; + return (const xmlChar *)buf; } void diff --git a/src/res/eressea.xml b/src/res/eressea.xml index f9e695489..f40725def 100644 --- a/src/res/eressea.xml +++ b/src/res/eressea.xml @@ -22,6 +22,7 @@ + diff --git a/src/res/names-dragons.xml b/src/res/names-dragons.xml new file mode 100644 index 000000000..1b0abf4c1 --- /dev/null +++ b/src/res/names-dragons.xml @@ -0,0 +1,95 @@ + + + + + der Weise + + + der Allwissende + + + der Mächtige + + + die Ehrwürdige + + + die Listige + + + der Grüne + + + die Strafende + + + der Sehende + + + der Reisende + + + die Wissende + + + der Goldene + + + der Graue + + + der Steinerne + + + die Alte + + + die Mächtige + + + die Goldene + + + der Grausame + + + der Sanddrache + + + der Durstige + + + die Verzehrende + + + die Grüne + + + die Rote + + + der Furchtlose + + + der Allmächtige + + + der Weitblickende + + + der Weiße + + + die Glänzende + + + der Wissende + + + die Unbarmherzige + + + die Schöne + + + diff --git a/src/res/names-ghouls.xml b/src/res/names-ghouls.xml new file mode 100644 index 000000000..474156c55 --- /dev/null +++ b/src/res/names-ghouls.xml @@ -0,0 +1,115 @@ + + + + + Faulende + + + Angsteinflößende + + + Leise + + + Kinderfressende + + + Menschenfressende + + + Wahnsinnige + + + Brutale + + + Schwarze + + + Dunkle + + + Fürchterliche + + + Grauenhafte + + + Furchtbare + + + Entsetzliche + + + Schauderhafte + + + Schreckliche + + + Düstere + + + Schaurige + + + + Ghoule + + + Kreaturen + + + Verlorene + + + Erschlagene + + + Verdammte + + + Schlurfende Ghoule + + + + der Nacht + + + der Schatten + + + der Finsternis + + + des Bösen + + + der Erschlagenen + + + der Verfluchten + + + der Ruhelosen + + + aus dem Nebel + + + aus dem Dunkel + + + der Tiefe + + + in Ketten + + + aus dem Totenreich + + + aus der Unterwelt + + + diff --git a/src/res/names-skeletons.xml b/src/res/names-skeletons.xml new file mode 100644 index 000000000..47554d6ae --- /dev/null +++ b/src/res/names-skeletons.xml @@ -0,0 +1,121 @@ + + + + + Klapperige + + + Stöhnende + + + Schwarzknochige + + + Schwarzgewandete + + + Angsteinflößende + + + Heulende + + + Wartende + + + Grauenvolle + + + Schwarze + + + Dunkle + + + Fürchterliche + + + Grauenhafte + + + Furchtbare + + + Entsetzliche + + + Schauderhafte + + + Schreckliche + + + Düstere + + + Schaurige + + + Erbarmungslose + + + + Skelette + + + Kreaturen + + + Krieger + + + Kämpfer + + + Rächer + + + + der Nacht + + + der Schatten + + + der Finsternis + + + des Bösen + + + der Erschlagenen + + + der Verfluchten + + + der Gefolterten + + + der Ruhelosen + + + aus dem Nebel + + + aus dem Dunkel + + + der Tiefe + + + in Ketten + + + aus dem Totenreich + + + aus der Unterwelt + + + diff --git a/src/res/names-zombies.xml b/src/res/names-zombies.xml new file mode 100644 index 000000000..d494b9380 --- /dev/null +++ b/src/res/names-zombies.xml @@ -0,0 +1,108 @@ + + + + Faulende + + + Zerschlagene + + + Gefolterte + + + Angsteinflößende + + + Leise Schlurfende + + + Kinderfressende + + + Schwarze + + + Dunkle + + + Fürchterliche + + + Grauenhafte + + + Furchtbare + + + Entsetzliche + + + Schauderhafte + + + Schreckliche + + + Düstere + + + Schaurige + + + + Zombies + + + Kreaturen + + + Verlorene + + + Erschlagene + + + Verdammte + + + + der Nacht + + + der Schatten + + + der Finsternis + + + des Bösen + + + der Erschlagenen + + + der Verfluchten + + + der Ruhelosen + + + aus dem Nebel + + + aus dem Dunkel + + + der Tiefe + + + in Ketten + + + aus dem Totenreich + + + aus der Unterwelt + + +