forked from github/server
Präkampfzauber beim Einrundenkampf kostet Aura Ab sofort kosten Präkampfzauber immer Aura. Wer nicht will, dass sie gezaubert werden, möge sie abschalten, dafür gibt es einen Befehl. Ausserdem werden sie gezaubert, auch wenn der Magier auf KÄMPFE NICHT steht. Ein Mechanismus zur Verhinderung von Präkampfzaubern sollte reichen, zwei führen nur zu Fehlern und Verwirrung.
This commit is contained in:
parent
617457f3d6
commit
f78105d262
|
@ -1480,9 +1480,7 @@ do_combatmagic(battle *b, combatmagic_t was)
|
||||||
for (fi = b->fighters.begin; fi != b->fighters.end; ++fi) {
|
for (fi = b->fighters.begin; fi != b->fighters.end; ++fi) {
|
||||||
fighter * fig = *fi;
|
fighter * fig = *fi;
|
||||||
unit * mage = fig->unit;
|
unit * mage = fig->unit;
|
||||||
int row = get_unitrow(fig);
|
|
||||||
|
|
||||||
if (row>BEHIND_ROW) continue;
|
|
||||||
if (fig->alive <= 0) continue; /* fighter kann im Kampf getötet worden sein */
|
if (fig->alive <= 0) continue; /* fighter kann im Kampf getötet worden sein */
|
||||||
|
|
||||||
level = eff_skill(mage, SK_MAGIC, r);
|
level = eff_skill(mage, SK_MAGIC, r);
|
||||||
|
@ -1549,9 +1547,6 @@ do_combatmagic(battle *b, combatmagic_t was)
|
||||||
level = ((cspell_f)sp->sp_function)(fig, level, power, sp);
|
level = ((cspell_f)sp->sp_function)(fig, level, power, sp);
|
||||||
if (level > 0) {
|
if (level > 0) {
|
||||||
pay_spell(fig->unit, sp, level, 1);
|
pay_spell(fig->unit, sp, level, 1);
|
||||||
if (was == DO_PRECOMBATSPELL) {
|
|
||||||
get_mage(fig->unit)->precombataura = level;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2433,24 +2428,6 @@ aftermath(battle * b)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Wenn die Schlacht kurz war, dann gib Aura für den Präcombatzauber
|
|
||||||
* zurück. Nicht logisch, aber die einzige Lösung, den Verlust der
|
|
||||||
* Aura durch Dummy-Angriffe zu verhindern. */
|
|
||||||
|
|
||||||
cv_foreach(s, b->sides) {
|
|
||||||
if (s->bf->lastturn+(b->has_tactics_turn?1:0)<=1) continue;
|
|
||||||
/* Prüfung, ob faction angegriffen hat. Geht nur über die Faction */
|
|
||||||
if (!s->bf->attacker) {
|
|
||||||
fighter *fig;
|
|
||||||
cv_foreach(fig, s->fighters) {
|
|
||||||
sc_mage * mage = get_mage(fig->unit);
|
|
||||||
if (mage)
|
|
||||||
mage->spellpoints += mage->precombataura;
|
|
||||||
} cv_next(fig);
|
|
||||||
}
|
|
||||||
/* Alle Fighter durchgehen, Mages suchen, Precombataura zurück */
|
|
||||||
} cv_next(s);
|
|
||||||
|
|
||||||
/* validate_sides(b); */
|
/* validate_sides(b); */
|
||||||
/* POSTCOMBAT */
|
/* POSTCOMBAT */
|
||||||
do_combatmagic(b, DO_POSTCOMBATSPELL);
|
do_combatmagic(b, DO_POSTCOMBATSPELL);
|
||||||
|
|
|
@ -117,8 +117,6 @@ typedef struct sc_mage {
|
||||||
int spellcount;
|
int spellcount;
|
||||||
spellid_t combatspell[MAXCOMBATSPELLS];
|
spellid_t combatspell[MAXCOMBATSPELLS];
|
||||||
int combatspelllevel[MAXCOMBATSPELLS];
|
int combatspelllevel[MAXCOMBATSPELLS];
|
||||||
int precombataura; /* Merker, wieviel Aura in den Präcombatzauber
|
|
||||||
gegangen ist. Nicht speichern. */
|
|
||||||
struct spell_ptr *spellptr;
|
struct spell_ptr *spellptr;
|
||||||
} sc_mage;
|
} sc_mage;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue