]> git.pond.sub.org Git - empserver/commitdiff
update: Factor out common plague reporting
authorMarkus Armbruster <armbru@pond.sub.org>
Wed, 22 Jun 2016 05:41:40 +0000 (07:41 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 6 Aug 2017 18:08:30 +0000 (20:08 +0200)
No functional change, except the "PLAGUE deaths" message for sectors
loses its period.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
include/update.h
src/lib/update/land.c
src/lib/update/plague.c
src/lib/update/ship.c
tests/update/journal.log

index 2c76540f90e0798464c768c1f8dec8e246a045d6..387ca76910b79d221d5f46433d8a6542cbeee50a 100644 (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 */
index 0cc99ef26b465cd70c073db7e8543316be4e0576..5929c4a7acce0395768e084053fd5cfe8e5129d3 100644 (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;
            }
index 306ee6a3b487b44e6d94dd526464b3a49b6345d5..1ec3211440c5a339462ea972a433e5963c4669e6 100644 (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;
+    }
+}
index e4b4f184bc33771d54364476e9f98e8fa539c63f..53f1929e9e5b58e107f562ad9922b4f6774cf08f 100644 (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;
            }
index be9c6d315336ccf01e24256e6f4b817f02af2446..c0a801bced1d0c5332525411c78862594ecc3f80 100644 (file)
     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