Bugfix Schiffsresistenz: Wenn ein Schiff resistent war, wurde der ganze Zauber nicht gesprochen

This commit is contained in:
Enno Rehling 2004-02-20 21:44:05 +00:00
parent 5276354493
commit c9a8fad508

View file

@ -3083,7 +3083,7 @@ magic(void)
{ /* einige oder alle Ziele waren magieresistent */ { /* einige oder alle Ziele waren magieresistent */
spellparameter *pa = co->par; spellparameter *pa = co->par;
int n; int n;
for (n = 0; n < pa->length; n++) { for (n=0; n!=pa->length;++n) {
if(pa->param[n]->flag != TARGET_RESISTS if(pa->param[n]->flag != TARGET_RESISTS
&& pa->param[n]->flag != TARGET_NOTFOUND) && pa->param[n]->flag != TARGET_NOTFOUND)
{ /* mindestens ein erfolgreicher Zauberversuch, wir machen { /* mindestens ein erfolgreicher Zauberversuch, wir machen
@ -3091,16 +3091,19 @@ magic(void)
break; break;
} }
} }
if (n==pa->length) {
/* zwar wurde mindestens ein Ziel gefunden, das widerstand /* zwar wurde mindestens ein Ziel gefunden, das widerstand
* jedoch dem Zauber. Kosten abziehen und abbrechen. */ * jedoch dem Zauber. Kosten abziehen und abbrechen. */
pay_spell(u, sp, level, co->distance); pay_spell(u, sp, level, co->distance);
countspells(u,1); countspells(u, 1);
sprintf(buf, "%s gelingt es %s zu zaubern, doch der Spruch zeigt " sprintf(buf, "%s gelingt es %s zu zaubern, doch der Spruch zeigt "
"keine Wirkung.", unitname(u), "keine Wirkung.", unitname(u),
spell_name(sp, u->faction->locale)); spell_name(sp, u->faction->locale));
addmessage(0, u->faction, buf, MSG_MAGIC, ML_MISTAKE); addmessage(0, u->faction, buf, MSG_MAGIC, ML_MISTAKE);
continue; /* äußere Schleife, nächster Zauberer */ continue; /* äußere Schleife, nächster Zauberer */
} }
break;
}
case 2: case 2:
default: default:
/* Zauber war erfolgreich */ /* Zauber war erfolgreich */
@ -3113,7 +3116,7 @@ magic(void)
/* zuerst bezahlen, dann evt in do_fumble alle Aura verlieren */ /* zuerst bezahlen, dann evt in do_fumble alle Aura verlieren */
pay_spell(u, sp, level, co->distance); pay_spell(u, sp, level, co->distance);
do_fumble(co); do_fumble(co);
countspells(u,1); countspells(u, 1);
continue; continue;
} }
success = ((nspell_f)sp->sp_function)(co); success = ((nspell_f)sp->sp_function)(co);