update: Factor out common plague reporting

No functional change, except the "PLAGUE deaths" message for sectors
loses its period.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2016-06-22 07:41:40 +02:00
parent 391778e09c
commit 1dfe91ca96
5 changed files with 62 additions and 128 deletions

View file

@ -65,45 +65,9 @@ do_plague(struct sctstr *sp, int etu)
ptime = 0;
} else {
n = plague_people(np, sp->sct_item, &pstage, &ptime, etu);
switch (n) {
case PLG_DYING:
wu(0, sp->sct_own, "PLAGUE deaths reported in %s.\n",
ownxy(sp));
nreport(sp->sct_own, N_DIE_PLAGUE, 0, 1);
break;
case PLG_INFECT:
wu(0, sp->sct_own, "%s battling PLAGUE\n", ownxy(sp));
break;
case PLG_INCUBATE:
/* Are we still incubating? */
if (n == pstage) {
/* Yes. Will it turn "infectious" next time? */
if (ptime <= etu) {
/* Yes. Report an outbreak. */
wu(0, sp->sct_own,
"Outbreak of PLAGUE in %s!\n", ownxy(sp));
nreport(sp->sct_own, N_OUT_PLAGUE, 0, 1);
}
} else {
/* It has already moved on to "infectious" */
wu(0, sp->sct_own, "%s battling PLAGUE\n", ownxy(sp));
}
break;
case PLG_EXPOSED:
/* Has the plague moved to "incubation" yet? */
if (n != pstage) {
/* Yes. Will it turn "infectious" next time? */
if (ptime <= etu) {
/* Yes. Report an outbreak. */
wu(0, sp->sct_own,
"Outbreak of PLAGUE in %s!\n", ownxy(sp));
nreport(sp->sct_own, N_OUT_PLAGUE, 0, 1);
}
}
break;
default:
break;
}
if (n != PLG_HEALTHY)
plague_report(sp->sct_own, n, pstage, ptime, etu,
"in", ownxy(sp));
}
sp->sct_pstage = pstage;
sp->sct_ptime = ptime;
@ -187,3 +151,47 @@ plague_people(struct natstr *np, short *vec,
}
return stage;
}
void
plague_report(natid victim, int new_pstage, int pstage, int ptime,
int etus, char *in_on, char *place)
{
switch (new_pstage) {
case PLG_DYING:
wu(0, victim, "PLAGUE deaths reported %s %s\n", in_on, place);
nreport(victim, N_DIE_PLAGUE, 0, 1);
break;
case PLG_INFECT:
wu(0, victim, "%s battling PLAGUE\n", place);
break;
case PLG_INCUBATE:
/* Are we still incubating? */
if (new_pstage == pstage) {
/* Yes. Will it turn "infectious" next time? */
if (ptime <= etus) {
/* Yes. Report an outbreak. */
wu(0, victim,
"Outbreak of PLAGUE %s %s!\n", in_on, place);
nreport(victim, N_OUT_PLAGUE, 0, 1);
}
} else {
/* It has already moved on to "infectious" */
wu(0, victim, "%s battling PLAGUE\n", place);
}
break;
case PLG_EXPOSED:
/* Has the plague moved to "incubation" yet? */
if (new_pstage != pstage) {
/* Yes. Will it turn "infectious" next time? */
if (ptime <= etus) {
/* Yes. Report an outbreak. */
wu(0, victim,
"Outbreak of PLAGUE %s %s!\n", in_on, place);
nreport(victim, N_OUT_PLAGUE, 0, 1);
}
}
break;
default:
break;
}
}