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

@ -119,6 +119,7 @@ extern void prod_nat(int);
/* plague.c */
extern void do_plague(struct sctstr *, int);
extern int plague_people(struct natstr *, short *, int *, int *, int);
extern void plague_report(natid, int, int, int, int, char *, char *);
/* plane.c */
extern void prod_plane(int, int, struct bp *, int);
/* populace.c */

View file

@ -141,46 +141,9 @@ upd_land(struct lndstr *lp, int etus, struct bp *bp, int build)
ptime = lp->lnd_ptime;
if (pstage != PLG_HEALTHY) {
n = plague_people(np, lp->lnd_item, &pstage, &ptime, etus);
switch (n) {
case PLG_DYING:
wu(0, lp->lnd_own,
"PLAGUE deaths reported on %s\n", prland(lp));
nreport(lp->lnd_own, N_DIE_PLAGUE, 0, 1);
break;
case PLG_INFECT:
wu(0, lp->lnd_own, "%s battling PLAGUE\n", prland(lp));
break;
case PLG_INCUBATE:
/* Are we still incubating? */
if (n == pstage) {
/* Yes. Will it turn "infectious" next time? */
if (ptime <= etus) {
/* Yes. Report an outbreak. */
wu(0, lp->lnd_own,
"Outbreak of PLAGUE on %s!\n", prland(lp));
nreport(lp->lnd_own, N_OUT_PLAGUE, 0, 1);
}
} else {
/* It has already moved on to "infectious" */
wu(0, lp->lnd_own,
"%s battling PLAGUE\n", prland(lp));
}
break;
case PLG_EXPOSED:
/* Has the plague moved to "incubation" yet? */
if (n != pstage) {
/* Yes. Will it turn "infectious" next time? */
if (ptime <= etus) {
/* Yes. Report an outbreak. */
wu(0, lp->lnd_own,
"Outbreak of PLAGUE on %s!\n", prland(lp));
nreport(lp->lnd_own, N_OUT_PLAGUE, 0, 1);
}
}
break;
default:
break;
}
if (n != PLG_HEALTHY)
plague_report(lp->lnd_own, n, pstage, ptime, etus,
"on", prland(lp));
lp->lnd_pstage = pstage;
lp->lnd_ptime = ptime;
}

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;
}
}

View file

@ -132,47 +132,9 @@ upd_ship(struct shpstr *sp, int etus, struct bp *bp, int build)
ptime = sp->shp_ptime;
if (pstage != PLG_HEALTHY) {
n = plague_people(np, sp->shp_item, &pstage, &ptime, etus);
switch (n) {
case PLG_DYING:
wu(0, sp->shp_own,
"PLAGUE deaths reported on %s\n", prship(sp));
nreport(sp->shp_own, N_DIE_PLAGUE, 0, 1);
break;
case PLG_INFECT:
wu(0, sp->shp_own, "%s battling PLAGUE\n", prship(sp));
break;
case PLG_INCUBATE:
/* Are we still incubating? */
if (n == pstage) {
/* Yes. Will it turn "infectious" next time? */
if (ptime <= etus) {
/* Yes. Report an outbreak. */
wu(0, sp->shp_own,
"Outbreak of PLAGUE on %s!\n", prship(sp));
nreport(sp->shp_own, N_OUT_PLAGUE, 0, 1);
}
} else {
/* It has already moved on to "infectious" */
wu(0, sp->shp_own,
"%s battling PLAGUE\n", prship(sp));
}
break;
case PLG_EXPOSED:
/* Has the plague moved to "incubation" yet? */
if (n != pstage) {
/* Yes. Will it turn "infectious" next time? */
if (ptime <= etus) {
/* Yes. Report an outbreak. */
wu(0, sp->shp_own,
"Outbreak of PLAGUE on %s!\n", prship(sp));
nreport(sp->shp_own, N_OUT_PLAGUE, 0, 1);
}
}
break;
default:
break;
}
if (n != PLG_HEALTHY)
plague_report(sp->shp_own, n, pstage, ptime, etus,
"on", prship(sp));
sp->shp_pstage = pstage;
sp->shp_ptime = ptime;
}

View file

@ -1341,14 +1341,14 @@
Play#0 output Play#0 1 Partisans take over -14,-8!
Play#0 output Play#0 1 Revolutionary subversion reported in -12,-8!
Play#0 output Play#0 1 Revolutionary subversion reported in -15,-7!
Play#0 output Play#0 1 PLAGUE deaths reported in -16,-6.
Play#0 output Play#0 1 PLAGUE deaths reported in -14,-6.
Play#0 output Play#0 1 PLAGUE deaths reported in -12,-6.
Play#0 output Play#0 1 PLAGUE deaths reported in -10,-6.
Play#0 output Play#0 1 PLAGUE deaths reported in -8,-6.
Play#0 output Play#0 1 PLAGUE deaths reported in -6,-6.
Play#0 output Play#0 1 PLAGUE deaths reported in -4,-6.
Play#0 output Play#0 1 PLAGUE deaths reported in -2,-6.
Play#0 output Play#0 1 PLAGUE deaths reported in -16,-6
Play#0 output Play#0 1 PLAGUE deaths reported in -14,-6
Play#0 output Play#0 1 PLAGUE deaths reported in -12,-6
Play#0 output Play#0 1 PLAGUE deaths reported in -10,-6
Play#0 output Play#0 1 PLAGUE deaths reported in -8,-6
Play#0 output Play#0 1 PLAGUE deaths reported in -6,-6
Play#0 output Play#0 1 PLAGUE deaths reported in -4,-6
Play#0 output Play#0 1 PLAGUE deaths reported in -2,-6
Play#0 output Play#0 1 -15,-5 battling PLAGUE
Play#0 output Play#0 1 -13,-5 battling PLAGUE
Play#0 output Play#0 1 -11,-5 battling PLAGUE