]> git.pond.sub.org Git - empserver/commitdiff
Clean up misuse of mpr() in msl_launch()
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 6 Jun 2010 20:39:52 +0000 (22:39 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 27 Jun 2010 16:28:07 +0000 (18:28 +0200)
Don't use multiple calls of mpr() to print a single line, because that
creates a separate bulletin for each part.  The read command normally
merges the bulletins, but if the bulletins are more than five seconds
apart (clock jumped somehow), we get a bulletin header in the middle
of a line.

The mpr() misuse was introduced in Empire 2.

src/lib/subs/mslsub.c

index 2a3aa0a146db53ab2a8f1bc211aca12124e3b305..e7c03e5df5f5e26579a6f145124ddae1e356217b 100644 (file)
@@ -62,7 +62,7 @@ msl_launch(struct plnstr *pp, int type, char *what, coord x, coord y,
     struct nukstr nuke;
     struct sctstr sect;
     int sublaunch = 0;
-    char *from;
+    char *base, *in_or_at, *from;
     int dam;
 
     mpr(pp->pln_own, "Preparing to launch %s at %s %s %s%s\n",
@@ -71,25 +71,27 @@ msl_launch(struct plnstr *pp, int type, char *what, coord x, coord y,
        what,
        type != EF_SECTOR ? "in " : "",
        xyas(x, y, pp->pln_own));
-    mpr(pp->pln_own, "\tLaunching from ");
     if (pp->pln_ship >= 0) {
        getship(pp->pln_ship, &ship);
-       mpr(pp->pln_own, "%s in ", prship(&ship));
+       base = prship(&ship);
+       in_or_at = " in ";
        if (mchr[(int)ship.shp_type].m_flags & M_SUB) {
            sublaunch = 1;
            from = "in hatch";
        } else
            from = "on deck";
-       mpr(pp->pln_own, "%s\n",
-           xyas(ship.shp_x, ship.shp_y, pp->pln_own));
     } else {
        if (pp->pln_harden > 0) {
-           mpr(pp->pln_own, "missile silo at ");
+           base = "missile silo";
+           in_or_at = " at ";
            from = "in silo";
-       } else
+       } else {
+           base = in_or_at = "";
            from = "on launch pad";
-       mpr(pp->pln_own, "%s\n", xyas(pp->pln_x, pp->pln_y, pp->pln_own));
+       }
     }
+    mpr(pp->pln_own, "\tLaunching from %s%s%s\n",
+       base, in_or_at, xyas(pp->pln_x, pp->pln_y, pp->pln_own));
 
     CANT_HAPPEN(pp->pln_flags & PLN_LAUNCHED);
     pp->pln_flags |= PLN_LAUNCHED;