Zauber mit REGION als letztem Parameter beschwerten sich ueber fehlende
Parameter.
This commit is contained in:
Enno Rehling 2005-02-18 12:20:29 +00:00
parent 03b2543d30
commit c580b96da8
2 changed files with 92 additions and 80 deletions

View File

@ -1862,7 +1862,13 @@ add_spellparameter(region *target_r, unit *u, const char *syntax, char ** param,
int minlen = 0; int minlen = 0;
for (c=syntax;*c!=0;++c) { for (c=syntax;*c!=0;++c) {
if (*c!='+' && *c!='k') ++minlen; /* this makes sure that:
* minlen("kc?") = 0
* minlen("kc+") = 1
* minlen("cccc+c?") = 4
*/
if (*c=='?') --minlen;
else if (*c!='+' && *c!='k') ++minlen;
} }
c = syntax; c = syntax;
@ -1883,78 +1889,84 @@ add_spellparameter(region *target_r, unit *u, const char *syntax, char ** param,
param_t pword; param_t pword;
int j = -1; int j = -1;
switch (*c) { switch (*c) {
case '+': case '?':
/* das vorhergehende Element kommt ein oder mehrmals vor, wir /* tja. das sollte moeglichst nur am Ende passieren,
* springen zum key zurück */ * weil sonst die kacke dampft. */
j = 0; ++c;
--c; assert(*c==0);
break; break;
case 'u': case '+':
/* Parameter ist eine Einheit, evtl. TEMP */ /* das vorhergehende Element kommt ein oder mehrmals vor, wir
j = addparam_unit(param+i, &spobj, u, ord); * springen zum key zurück */
++c; j = 0;
break; --c;
case 'r': break;
/* Parameter sind zwei Regionskoordinaten */ case 'u':
j = addparam_region(param+i, &spobj, u, ord); /* Parameter ist eine Einheit, evtl. TEMP */
++c; j = addparam_unit(param+i, &spobj, u, ord);
break; ++c;
case 'b': break;
/* Parameter ist eine Burgnummer */ case 'r':
j = addparam_building(param+i, &spobj); /* Parameter sind zwei Regionskoordinaten */
++c; j = addparam_region(param+i, &spobj, u, ord);
break; ++c;
case 's': break;
j = addparam_ship(param+i, &spobj); case 'b':
++c; /* Parameter ist eine Burgnummer */
break; j = addparam_building(param+i, &spobj);
case 'c': ++c;
/* Text, wird im Spruch ausgewertet */ break;
j = addparam_string(param+i, &spobj); case 's':
++c; j = addparam_ship(param+i, &spobj);
break; ++c;
case 'i': /* Zahl */ break;
j = addparam_int(param+i, &spobj); case 'c':
++c; /* Text, wird im Spruch ausgewertet */
break; j = addparam_string(param+i, &spobj);
case 'k': ++c;
++c; break;
pword = findparam(param[i++], u->faction->locale); case 'i': /* Zahl */
switch (pword) { j = addparam_int(param+i, &spobj);
case P_REGION: ++c;
spobj = malloc(sizeof(spllprm)); break;
spobj->flag = 0; case 'k':
spobj->typ = SPP_REGION; ++c;
spobj->data.r = u->region; pword = findparam(param[i++], u->faction->locale);
j = 0; switch (pword) {
++c; case P_REGION:
break; spobj = malloc(sizeof(spllprm));
case P_UNIT: spobj->flag = 0;
if (i<size) { spobj->typ = SPP_REGION;
j = addparam_unit(param+i, &spobj, u, ord); spobj->data.r = u->region;
++c; j = 0;
} ++c;
break; break;
case P_BUILDING: case P_UNIT:
case P_GEBAEUDE: if (i<size) {
if (i<size) { j = addparam_unit(param+i, &spobj, u, ord);
j = addparam_building(param+i, &spobj); ++c;
++c; }
} break;
break; case P_BUILDING:
case P_SHIP: case P_GEBAEUDE:
if (i<size) { if (i<size) {
j = addparam_ship(param+i, &spobj); j = addparam_building(param+i, &spobj);
++c; ++c;
} }
break; break;
default: case P_SHIP:
j = -1; if (i<size) {
break; j = addparam_ship(param+i, &spobj);
} ++c;
break; }
default: break;
j = -1; default:
j = -1;
break;
}
break;
default:
j = -1;
break; break;
} }
if (j<0) fail = true; if (j<0) fail = true;

View File

@ -8041,7 +8041,7 @@ static spell spelldaten[] =
"ZAUBERE [REGION x y] [STUFE n] \'Geister bannen\' EINHEIT <Einheit-Nr>\n" "ZAUBERE [REGION x y] [STUFE n] \'Geister bannen\' EINHEIT <Einheit-Nr>\n"
"ZAUBERE [REGION x y] [STUFE n] \'Geister bannen\' GEBÄUDE <Gebäude-Nr>\n" "ZAUBERE [REGION x y] [STUFE n] \'Geister bannen\' GEBÄUDE <Gebäude-Nr>\n"
"ZAUBERE [REGION x y] [STUFE n] \'Geister bannen\' SCHIFF <Schiff-Nr>", "ZAUBERE [REGION x y] [STUFE n] \'Geister bannen\' SCHIFF <Schiff-Nr>",
"kc", "kc?",
M_DRUIDE, M_DRUIDE,
(FARCASTING | SPELLLEVEL | ONSHIPCAST | ONETARGET | TESTCANSEE), (FARCASTING | SPELLLEVEL | ONSHIPCAST | ONETARGET | TESTCANSEE),
2, 8, 2, 8,
@ -8522,7 +8522,7 @@ static spell spelldaten[] =
"ZAUBERE [REGION x y] [STUFE n] \'Pentagramm\' EINHEIT <Einheit-Nr>\n" "ZAUBERE [REGION x y] [STUFE n] \'Pentagramm\' EINHEIT <Einheit-Nr>\n"
"ZAUBERE [REGION x y] [STUFE n] \'Pentagramm\' GEBÄUDE <Gebäude-Nr>\n" "ZAUBERE [REGION x y] [STUFE n] \'Pentagramm\' GEBÄUDE <Gebäude-Nr>\n"
"ZAUBERE [REGION x y] [STUFE n] \'Pentagramm\' SCHIFF <Schiff-Nr>", "ZAUBERE [REGION x y] [STUFE n] \'Pentagramm\' SCHIFF <Schiff-Nr>",
"kc", "kc?",
M_CHAOS, M_CHAOS,
(FARCASTING | SPELLLEVEL | ONSHIPCAST | ONETARGET | TESTCANSEE), (FARCASTING | SPELLLEVEL | ONSHIPCAST | ONETARGET | TESTCANSEE),
2, 10, 2, 10,
@ -8877,7 +8877,7 @@ static spell spelldaten[] =
"ZAUBERE [REGION x y] [STUFE n] \'Traumbilder entwirren\' EINHEIT <Einheit-Nr>\n" "ZAUBERE [REGION x y] [STUFE n] \'Traumbilder entwirren\' EINHEIT <Einheit-Nr>\n"
"ZAUBERE [REGION x y] [STUFE n] \'Traumbilder entwirren\' GEBÄUDE <Gebäude-Nr>\n" "ZAUBERE [REGION x y] [STUFE n] \'Traumbilder entwirren\' GEBÄUDE <Gebäude-Nr>\n"
"ZAUBERE [REGION x y] [STUFE n] \'Traumbilder entwirren\' SCHIFF <Schiff-Nr>", "ZAUBERE [REGION x y] [STUFE n] \'Traumbilder entwirren\' SCHIFF <Schiff-Nr>",
"kc", "kc?",
M_TRAUM, M_TRAUM,
(FARCASTING | SPELLLEVEL | ONSHIPCAST | ONETARGET | TESTCANSEE), (FARCASTING | SPELLLEVEL | ONSHIPCAST | ONETARGET | TESTCANSEE),
2, 8, 2, 8,
@ -9354,7 +9354,7 @@ static spell spelldaten[] =
"ZAUBERE [STUFE n] \'Lied des Ortes analysieren\' REGION\n" "ZAUBERE [STUFE n] \'Lied des Ortes analysieren\' REGION\n"
"ZAUBERE [STUFE n] \'Lied des Ortes analysieren\' GEBÄUDE <Gebäude-nr>\n" "ZAUBERE [STUFE n] \'Lied des Ortes analysieren\' GEBÄUDE <Gebäude-nr>\n"
"ZAUBERE [STUFE n] \'Lied des Ortes analysieren\' SCHIFF <Schiff-nr>", "ZAUBERE [STUFE n] \'Lied des Ortes analysieren\' SCHIFF <Schiff-nr>",
"kc", "kc?",
M_BARDE, (SPELLLEVEL|ONSHIPCAST), 5, 8, M_BARDE, (SPELLLEVEL|ONSHIPCAST), 5, 8,
{ {
{ R_AURA, 3, SPC_LEVEL }, { R_AURA, 3, SPC_LEVEL },
@ -9374,7 +9374,7 @@ static spell spelldaten[] =
"ZAUBERE [REGION x y] [STUFE n] \'Lebenslied festigen\' EINHEIT <Einheit-Nr>\n" "ZAUBERE [REGION x y] [STUFE n] \'Lebenslied festigen\' EINHEIT <Einheit-Nr>\n"
"ZAUBERE [REGION x y] [STUFE n] \'Lebenslied festigen\' GEBÄUDE <Gebäude-Nr>\n" "ZAUBERE [REGION x y] [STUFE n] \'Lebenslied festigen\' GEBÄUDE <Gebäude-Nr>\n"
"ZAUBERE [REGION x y] [STUFE n] \'Lebenslied festigen\' SCHIFF <Schiff-Nr>", "ZAUBERE [REGION x y] [STUFE n] \'Lebenslied festigen\' SCHIFF <Schiff-Nr>",
"kc", "kc?",
M_BARDE, M_BARDE,
(FARCASTING | SPELLLEVEL | ONSHIPCAST | ONETARGET | TESTCANSEE), (FARCASTING | SPELLLEVEL | ONSHIPCAST | ONETARGET | TESTCANSEE),
2, 8, 2, 8,
@ -9612,7 +9612,7 @@ static spell spelldaten[] =
"ZAUBERE [STUFE n] \'Magie analysieren\' EINHEIT <Einheit-Nr>\n" "ZAUBERE [STUFE n] \'Magie analysieren\' EINHEIT <Einheit-Nr>\n"
"ZAUBERE [STUFE n] \'Magie analysieren\' GEBÄUDE <Gebäude-Nr>\n" "ZAUBERE [STUFE n] \'Magie analysieren\' GEBÄUDE <Gebäude-Nr>\n"
"ZAUBERE [STUFE n] \'Magie analysieren\' SCHIFF <Schiff-Nr>", "ZAUBERE [STUFE n] \'Magie analysieren\' SCHIFF <Schiff-Nr>",
"kc", "kc?",
M_ASTRAL, (SPELLLEVEL | UNITSPELL | ONSHIPCAST | TESTCANSEE), 5, 1, M_ASTRAL, (SPELLLEVEL | UNITSPELL | ONSHIPCAST | TESTCANSEE), 5, 1,
{ {
{ R_AURA, 1, SPC_LEVEL }, { R_AURA, 1, SPC_LEVEL },
@ -9830,7 +9830,7 @@ static spell spelldaten[] =
"ZAUBERE [REGION x y] [STUFE n] \'Magiefresser\' EINHEIT <Einheit-Nr>\n" "ZAUBERE [REGION x y] [STUFE n] \'Magiefresser\' EINHEIT <Einheit-Nr>\n"
"ZAUBERE [REGION x y] [STUFE n] \'Magiefresser\' GEBÄUDE <Gebäude-Nr>\n" "ZAUBERE [REGION x y] [STUFE n] \'Magiefresser\' GEBÄUDE <Gebäude-Nr>\n"
"ZAUBERE [REGION x y] [STUFE n] \'Magiefresser\' SCHIFF <Schiff-Nr>", "ZAUBERE [REGION x y] [STUFE n] \'Magiefresser\' SCHIFF <Schiff-Nr>",
"kc", "kc?",
M_ASTRAL, M_ASTRAL,
(FARCASTING | SPELLLEVEL | ONSHIPCAST | ONETARGET | TESTCANSEE), (FARCASTING | SPELLLEVEL | ONSHIPCAST | ONETARGET | TESTCANSEE),
2, 5, 2, 5,