select_corpse gibt keinen index mehr zurück, spielt ja keine Rolle.

This commit is contained in:
Enno Rehling 2004-05-29 18:57:18 +00:00
parent 6820841790
commit 3e3e79d6e5
3 changed files with 32 additions and 41 deletions

View File

@ -391,7 +391,7 @@ allysf(const side * s, const faction * f)
return allysfm(s, f, HELP_FIGHT); return allysfm(s, f, HELP_FIGHT);
} }
troop fighter *
select_corpse(battle * b, fighter * af) select_corpse(battle * b, fighter * af)
/* Wählt eine Leiche aus, der af hilft. casualties ist die Anzahl der /* Wählt eine Leiche aus, der af hilft. casualties ist die Anzahl der
* Toten auf allen Seiten (im Array). Wenn af == NULL, wird die * Toten auf allen Seiten (im Array). Wenn af == NULL, wird die
@ -399,8 +399,6 @@ select_corpse(battle * b, fighter * af)
* *
* Untote werden nicht ausgewählt (casualties, not dead) */ * Untote werden nicht ausgewählt (casualties, not dead) */
{ {
troop dt =
{0, 0};
int di, maxcasualties = 0; int di, maxcasualties = 0;
fighter *df; fighter *df;
side *side; side *side;
@ -421,14 +419,13 @@ select_corpse(battle * b, fighter * af)
if (af && !helping(af->side, df->side)) if (af && !helping(af->side, df->side))
continue; continue;
if (di < dead) { if (di < dead) {
dt.fighter = df; return df;
dt.index = df->unit->number - di;
break; break;
} }
di -= dead; di -= dead;
} }
cv_next(df); cv_next(df);
return dt; return NULL;
} }
boolean boolean
@ -571,28 +568,23 @@ sort_fighterrow(fighter ** elem1, fighter ** elem2)
static void static void
reportcasualties(battle * b, fighter * fig, int dead) reportcasualties(battle * b, fighter * fig, int dead)
{ {
bfaction * bf; struct message * m;
if (fig->alive == fig->unit->number) if (fig->alive == fig->unit->number) return;
return;
#ifndef NO_RUNNING #ifndef NO_RUNNING
if (fig->run.region == NULL) { if (fig->run.region == NULL) {
fig->run.region = fleeregion(fig->unit); fig->run.region = fleeregion(fig->unit);
if (fig->run.region == NULL) fig->run.region = b->region; if (fig->run.region == NULL) fig->run.region = b->region;
} }
#endif #endif
fbattlerecord(b, fig->unit->faction, " ");
for (bf = b->factions;bf;bf=bf->next) {
faction * f = bf->faction;
#ifdef NO_RUNNING #ifdef NO_RUNNING
struct message * m = msg_message("casualties", "unit runto run alive fallen", m = msg_message("casualties", "unit runto run alive fallen",
fig->unit, NULL, fig->run.number, fig->alive, dead); fig->unit, NULL, fig->run.number, fig->alive, dead);
#else #else
struct message * m = msg_message("casualties", "unit runto run alive fallen", m = msg_message("casualties", "unit runto run alive fallen",
fig->unit, fig->run.region, fig->run.number, fig->alive, dead); fig->unit, fig->run.region, fig->run.number, fig->alive, dead);
#endif #endif
message_faction(b, f, m); message_all(b, m);
msg_release(m); msg_release(m);
}
} }
@ -1370,7 +1362,7 @@ select_enemy(battle * b, fighter * af, int minrow, int maxrow)
fighter * df = *fi; fighter * df = *fi;
int dr; int dr;
ui = statusrow(df); ui = statusrow(df->status);
if (unitrow[ui]<0) { if (unitrow[ui]<0) {
unitrow[ui] = get_unitrow(df); unitrow[ui] = get_unitrow(df);
} }

View File

@ -221,7 +221,7 @@ extern "C" {
extern boolean helping(struct side * as, struct side * ds); extern boolean helping(struct side * as, struct side * ds);
extern void rmfighter(fighter *df, int i); extern void rmfighter(fighter *df, int i);
extern struct region * fleeregion(const struct unit * u); extern struct region * fleeregion(const struct unit * u);
extern struct troop select_corpse(struct battle * b, struct fighter * af); extern struct fighter * select_corpse(struct battle * b, struct fighter * af);
extern fighter * make_fighter(struct battle * b, struct unit * u, side * s, boolean attack); extern fighter * make_fighter(struct battle * b, struct unit * u, side * s, boolean attack);
extern int statusrow(int status); extern int statusrow(int status);
extern void drain_exp(struct unit *u, int d); extern void drain_exp(struct unit *u, int d);

View File

@ -1538,27 +1538,26 @@ sp_reanimate(fighter * fi, int level, double power, spell * sp)
healable = count_healable(b, fi); healable = count_healable(b, fi);
healable = (int)min(k, healable); healable = (int)min(k, healable);
while (healable--) { while (healable--) {
troop t = select_corpse(b, fi); fighter * tf = select_corpse(b, fi);
if (t.fighter if (tf!=NULL && tf->side->casualties > 0
&& t.fighter->side->casualties > 0 && old_race(tf->unit->race) != RC_DAEMON
&& old_race(t.fighter->unit->race) != RC_DAEMON && (chance(c)))
&& (chance(c)))
{ {
assert(t.fighter->alive < t.fighter->unit->number); assert(tf->alive < tf->unit->number);
/* t.fighter->person[].hp beginnt mit t.index = 0 zu zählen, /* t.fighter->person[].hp beginnt mit t.index = 0 zu zählen,
* t.fighter->alive ist jedoch die Anzahl lebender in der Einheit, * t.fighter->alive ist jedoch die Anzahl lebender in der Einheit,
* also sind die hp von t.fighter->alive * also sind die hp von t.fighter->alive
* t.fighter->hitpoints[t.fighter->alive-1] und der erste Tote * t.fighter->hitpoints[t.fighter->alive-1] und der erste Tote
* oder weggelaufene ist t.fighter->hitpoints[t.fighter->alive] */ * oder weggelaufene ist t.fighter->hitpoints[tf->alive] */
t.fighter->person[t.fighter->alive].hp = 2; tf->person[tf->alive].hp = 2;
++t.fighter->alive; ++tf->alive;
++t.fighter->side->size[SUM_ROW]; ++tf->side->size[SUM_ROW];
++t.fighter->side->size[t.fighter->unit->status + 1]; ++tf->side->size[tf->unit->status + 1];
++t.fighter->side->healed; ++tf->side->healed;
--t.fighter->side->casualties; --tf->side->casualties;
assert(t.fighter->side->casualties>=0); assert(tf->side->casualties>=0);
--t.fighter->side->dead; --tf->side->dead;
assert(t.fighter->side->dead>=0); assert(tf->side->dead>=0);
++j; ++j;
} }
} }