From 55eb4270e08ceebeb7589491844bcd8f26a02eea Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Thu, 17 May 2001 16:37:54 +0000 Subject: [PATCH] letzte updates aus der beta-version in die neue --- src/common/kernel/magic.c | 17 ++++++++++++----- src/common/util/umlaut.c | 1 + src/res/de/messages.txt | 4 ++-- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/common/kernel/magic.c b/src/common/kernel/magic.c index d756687fb..05525a361 100644 --- a/src/common/kernel/magic.c +++ b/src/common/kernel/magic.c @@ -1948,9 +1948,13 @@ add_spellparameter(region *target_r, unit *u, const char *syntax, par->length++; token = strtok(NULL, " "); } + /* length sollte nun nur noch die Anzahl der für den Zauber relevanten + * Elemente enthalten */ par->length -= skip; /* Anzahl der Elemente ('temp 123' sind zwei!) */ - if (par->length < 2) { + /* mindestens ein Ziel (Ziellose Zauber werden nicht + * geparst) */ + if (par->length < 1) { /* Fehler: Ziel vergessen */ cmistake(u, strdup(s), 203, MSG_MAGIC); /* Aufräumen */ @@ -1966,13 +1970,15 @@ add_spellparameter(region *target_r, unit *u, const char *syntax, strcpy(tbuf, s); token = strtok (tbuf, " "); while(token && syntax[c] != 0) { - if (i > skip) { + if (i >= skip) { if (syntax[c] == '+') { - /* das vorhergehende Element kommt ein oder mehrmals vor */ + /* das vorhergehende Element kommt ein oder mehrmals vor, wir + * springen zum key zurück */ c--; } if (syntax[c] == '?') { - /* optionales Element vom Typ des nachfolgenden Zeichen */ + /* optionales Element vom Typ des nachfolgenden Zeichen, wir + * gehen ein Element weiter */ c++; } spobj = calloc(1, sizeof(spllprm)); @@ -2885,8 +2891,9 @@ magic(void) } /* Weitere Argumente zusammenbasten */ if (sp->parameter) { + ++skiptokens; args = add_spellparameter(target_r, mage, sp->parameter, - so->s, skiptokens++); + so->s, skiptokens); if (!args) { /* Syntax war falsch */ continue; diff --git a/src/common/util/umlaut.c b/src/common/util/umlaut.c index 9d3fdab50..367cf327d 100644 --- a/src/common/util/umlaut.c +++ b/src/common/util/umlaut.c @@ -104,6 +104,7 @@ addtoken(tnode * root, const char* str, void * id) int findtoken(const tnode * tk, const char * str, void **result) { + if (!str) return E_TOK_NOMATCH; if (*str == 0) return E_TOK_NOMATCH; while (*str) { diff --git a/src/res/de/messages.txt b/src/res/de/messages.txt index 6c4517b44..20e7c70e8 100644 --- a/src/res/de/messages.txt +++ b/src/res/de/messages.txt @@ -400,8 +400,8 @@ herbfound;production:2;de;{unit} in {region} findet {amount} {herb}. msg_economy;economy:0;de;{string} give;economy:0;de;{unit} übergibt {amount} {resource} an {target}. income;economy:0;de;{unit} verdient in {region} {amount} {$of wanted}. -income_tax;economy:4;de;{unit} treibt in {region} {amount} Steuern ein. -income_tax_reduced;economy:2;de;{unit} treibt in {region} {amount} statt {wanted} Steuern ein. +income_tax;economy:4;de;{unit} treibt in {region} {amount} Silber an Steuern ein. +income_tax_reduced;economy:2;de;{unit} treibt in {region} {amount} statt {wanted} Silber an Steuern ein. income_steal;economy:3;de;{unit} klaut in {region} {amount} Silber. income_steal_reduced;economy:1;de;{unit} klaut in {region} {amount} statt {wanted} Silber. income_magic;economy:3;de;{unit} verdient in {region} {amount} Silber durch Zauberei.