diff --git a/res/core/de/strings.xml b/res/core/de/strings.xml index 40dedbf8b..cc252c343 100644 --- a/res/core/de/strings.xml +++ b/res/core/de/strings.xml @@ -4771,6 +4771,10 @@ Strudel, einen Mahlstrom, welcher alle Schiffe, die ihn passieren, schwer beschädigen kann. + + This ritual summons a mighty water elemental from the depths of the ocean. + The elemental creates an enormous maelstrom which damages any passing ships. + diff --git a/src/direction.c b/src/direction.c index c499bbfe1..c74434fb3 100644 --- a/src/direction.c +++ b/src/direction.c @@ -1,6 +1,7 @@ #include #include #include "direction.h" +#include "vortex.h" #include "util/language.h" #include "util/umlaut.h" @@ -14,7 +15,7 @@ void init_direction(const struct locale *lang, direction_t dir, const char *str) addtoken(tokens, str, token); } -void init_directions(const struct locale *lang) { +void init_directions(struct locale *lang) { /* mit dieser routine kann man mehrere namen für eine direction geben, * das ist für die hexes ideal. */ const struct { @@ -39,6 +40,8 @@ void init_directions(const struct locale *lang) { int i; void **tokens = get_translations(lang, UT_DIRECTIONS); + register_special_direction(lang, "vortex"); + for (i = 0; dirs[i].direction != NODIRECTION; ++i) { const char *str = locale_string(lang, dirs[i].name); if (str) { diff --git a/src/direction.h b/src/direction.h index e02b5f9f7..aa32046a0 100644 --- a/src/direction.h +++ b/src/direction.h @@ -22,7 +22,7 @@ typedef enum { } direction_t; direction_t get_direction(const char *s, const struct locale *); -void init_directions(const struct locale *lang); +void init_directions(struct locale *lang); void init_direction(const struct locale *lang, direction_t dir, const char *str); direction_t finddirection(const char *str); diff --git a/src/kernel/config.c b/src/kernel/config.c index b368108b5..02f0a0dde 100644 --- a/src/kernel/config.c +++ b/src/kernel/config.c @@ -1779,7 +1779,7 @@ void init_options_translation(const struct locale * lang) { } } -void init_locale(const struct locale *lang) +void init_locale(struct locale *lang) { variant var; int i; @@ -1982,7 +1982,7 @@ void init_locales(void) { int l; for (l = 0; localenames[l]; ++l) { - const struct locale *lang = get_or_create_locale(localenames[l]); + struct locale *lang = get_or_create_locale(localenames[l]); init_locale(lang); } } diff --git a/src/kernel/config.h b/src/kernel/config.h index 9b0f7135b..06474dd65 100644 --- a/src/kernel/config.h +++ b/src/kernel/config.h @@ -177,7 +177,7 @@ extern "C" { int distribute(int old, int new_value, int n); void init_locales(void); - void init_locale(const struct locale *lang); + void init_locale(struct locale *lang); int newunitid(void); int forbiddenid(int id); diff --git a/src/spells.c b/src/spells.c index ba7c9c578..41b6e313c 100644 --- a/src/spells.c +++ b/src/spells.c @@ -6868,7 +6868,6 @@ void register_spells(void) register_function((pf_generic)sp_kampfzauber, "combat_spell"); register_spelldata(); - register_special_direction("vortex"); register_unitcurse(); register_regioncurse(); diff --git a/src/vortex.c b/src/vortex.c index a4517f7bb..a0791907d 100644 --- a/src/vortex.c +++ b/src/vortex.c @@ -26,33 +26,29 @@ typedef struct dir_lookup { static dir_lookup *dir_name_lookup; -void register_special_direction(const char *name) +void register_special_direction(struct locale *lang, const char *name) { - struct locale *lang; - char *str = _strdup(name); + const char *token = LOC(lang, name); - for (lang = locales; lang; lang = nextlocale(lang)) { + if (token) { void **tokens = get_translations(lang, UT_SPECDIR); - const char *token = LOC(lang, name); + variant var; + char *str = _strdup(name); - if (token) { - variant var; + var.v = str; + addtoken(tokens, token, var); - var.v = str; - addtoken(tokens, token, var); - - if (lang == locales) { - dir_lookup *dl = malloc(sizeof(dir_lookup)); - dl->name = str; - dl->oldname = token; - dl->next = dir_name_lookup; - dir_name_lookup = dl; - } - } - else { - log_error("no translation for spec_direction '%s' in locale '%s'\n", name, locale_name(lang)); + if (lang == locales) { + dir_lookup *dl = malloc(sizeof(dir_lookup)); + dl->name = str; + dl->oldname = token; + dl->next = dir_name_lookup; + dir_name_lookup = dl; } } + else { + log_error("no translation for spec_direction '%s' in locale '%s'\n", name, locale_name(lang)); + } } /********************/ diff --git a/src/vortex.h b/src/vortex.h index 905e1d8d5..6202e61d0 100644 --- a/src/vortex.h +++ b/src/vortex.h @@ -19,7 +19,7 @@ extern "C" { struct region *find_special_direction(const struct region *r, const char *token); - void register_special_direction(const char *name); + void register_special_direction(struct locale *lang, const char *name); struct spec_direction *special_direction(const struct region * from, const struct region * to); struct attrib *create_special_direction(struct region *r, struct region *rt, diff --git a/src/vortex.test.c b/src/vortex.test.c index 7185dc82d..152def397 100644 --- a/src/vortex.test.c +++ b/src/vortex.test.c @@ -25,7 +25,6 @@ static void test_move_to_vortex(CuTest *tc) { lang = get_or_create_locale("en"); locale_setstring(lang, "vortex", "wirbel"); init_locale(lang); - register_special_direction("vortex"); t_plain = test_create_terrain("plain", LAND_REGION | FOREST_REGION | WALK_INTO | CAVALRY_REGION); r1 = test_create_region(0, 0, t_plain); r2 = test_create_region(5, 0, t_plain);