]> git.pond.sub.org Git - empserver/blobdiff - src/lib/commands/bomb.c
retreat: Fix group retreat after failed board sinks ship
[empserver] / src / lib / commands / bomb.c
index 20ab1891a76c749e04469d556789a41ff358f5fd..5e4888cd223b2f296070abab3cee746597ef38f2 100644 (file)
@@ -288,11 +288,11 @@ eff_bomb(struct emp_qelem *list, struct sctstr *target)
     pr("did %d%% damage to efficiency in %s\n",
        oldeff - target->sct_effic,
        xyas(target->sct_x, target->sct_y, player->cnum));
-    if (target->sct_own)
-       wu(0, target->sct_own,
-          "%s bombing raid did %d%% damage in %s\n",
-          cname(player->cnum), oldeff - target->sct_effic,
-          xyas(target->sct_x, target->sct_y, target->sct_own));
+    if (target->sct_own != player->cnum)
+       mpr(target->sct_own,
+           "%s bombing raid did %d%% damage in %s\n",
+           cname(player->cnum), oldeff - target->sct_effic,
+           xyas(target->sct_x, target->sct_y, target->sct_own));
     bridge_damaged(target);
     putsect(&sect);
     collateral_damage(target->sct_x, target->sct_y, dam);
@@ -361,11 +361,11 @@ comm_bomb(struct emp_qelem *list, struct sctstr *target)
     pr("did %.2f%% damage to %s in %s\n",
        b, ip->i_name, xyas(target->sct_x, target->sct_y, player->cnum));
     nreport(player->cnum, N_SCT_BOMB, target->sct_own, 1);
-    if (target->sct_own != 0)
-       wu(0, target->sct_own,
-          "%s precision bombing raid did %.2f%% damage to %s in %s\n",
-          cname(player->cnum), b, ip->i_name,
-          xyas(target->sct_x, target->sct_y, target->sct_own));
+    if (target->sct_own != player->cnum)
+       mpr(target->sct_own,
+           "%s precision bombing raid did %.2f%% damage to %s in %s\n",
+           cname(player->cnum), b, ip->i_name,
+           xyas(target->sct_x, target->sct_y, target->sct_own));
     putsect(&sect);
     collateral_damage(target->sct_x, target->sct_y, dam);
 }
@@ -469,22 +469,21 @@ ship_bomb(struct emp_qelem *list, struct sctstr *target)
            nreport(player->cnum, N_SUB_BOMB, ship.shp_own, 1);
        else
            nreport(player->cnum, N_SHP_BOMB, ship.shp_own, 1);
-       if (ship.shp_own) {
-           wu(0, ship.shp_own, "%s bombs did %d damage to %s at %s\n",
-              cname(player->cnum), dam,
-              prship(&ship),
-              xyas(target->sct_x, target->sct_y, ship.shp_own));
+       if (ship.shp_own != player->cnum) {
+           mpr(ship.shp_own, "%s bombs did %d damage to %s at %s\n",
+               cname(player->cnum), dam,
+               prship(&ship),
+               xyas(target->sct_x, target->sct_y, ship.shp_own));
        }
-       pr("\n");
        shipdamage(&ship, dam);
        if (ship.shp_effic < SHIP_MINEFF)
            pr("%s at %s sunk!\n",
               prship(&ship),
               xyas(target->sct_x, target->sct_y, player->cnum));
        if (dam && (ship.shp_rflags & RET_INJURED))
-           retreat_ship(&ship, 'i');
+           retreat_ship(&ship, ship.shp_own, 'i');
        else if (ship.shp_rflags & RET_BOMBED)
-           retreat_ship(&ship, 'b');
+           retreat_ship(&ship, ship.shp_own, 'b');
        putship(ship.shp_uid, &ship);
        collateral_damage(target->sct_x, target->sct_y, dam / 2);
     }
@@ -572,19 +571,10 @@ plane_bomb(struct emp_qelem *list, struct sctstr *target)
        else
            plane.pln_effic -= dam;
        plane.pln_mobil = (dam * plane.pln_mobil / 100.0);
-       if (own == player->cnum) {
-           pr("%s reports %d%% damage\n", prplane(&plane), dam);
-       } else {
-           if (own != 0)
-               wu(0, own,
-                  "%s pinpoint bombing raid did %d%% damage to %s\n",
-                  cname(player->cnum), dam, prplane(&plane));
-       }
-       nreport(player->cnum, N_DOWN_PLANE, own, 1);
-       if (own != 0)
-           wu(0, own, "%s bombs did %d%% damage to %s at %s\n",
+       mpr(own, "%s bombs did %d%% damage to %s at %s\n",
               cname(player->cnum), dam, prplane(&plane),
               xyas(target->sct_x, target->sct_y, own));
+       nreport(player->cnum, N_DOWN_PLANE, own, 1);
        putplane(plane.pln_uid, &plane);
        collateral_damage(target->sct_x, target->sct_y, dam);
     }
@@ -675,13 +665,15 @@ land_bomb(struct emp_qelem *list, struct sctstr *target)
        if (dam > 100)
            dam = 100;
        own = land.lnd_own;
-       mpr(own, "%s pinpoint bombing raid did %d damage to %s\n",
-           cname(player->cnum), dam, prland(&land));
+       if (own != player->cnum)
+           mpr(own, "%s bombs did %d%% damage to %s at %s\n",
+               cname(player->cnum), dam, prland(&land),
+               xyas(target->sct_x, target->sct_y, own));
        landdamage(&land, dam);
        if (dam && (land.lnd_rflags & RET_INJURED))
-           retreat_land(&land, 'i');
+           retreat_land(&land, own, 'i');
        else if (land.lnd_rflags & RET_BOMBED)
-           retreat_land(&land, 'b');
+           retreat_land(&land, own, 'b');
        nreport(player->cnum, N_UNIT_BOMB, own, 1);
        putland(land.lnd_uid, &land);
        collateral_damage(target->sct_x, target->sct_y, dam);
@@ -709,10 +701,10 @@ strat_bomb(struct emp_qelem *list, struct sctstr *target)
        return;
     getsect(target->sct_x, target->sct_y, &sect);
     target = &sect;
-    if (target->sct_own)
-       wu(0, target->sct_own, "%s bombing raid did %d damage in %s\n",
-          cname(player->cnum), PERCENT_DAMAGE(dam),
-          xyas(target->sct_x, target->sct_y, target->sct_own));
+    if (target->sct_own != player->cnum)
+       mpr(target->sct_own, "%s bombing raid did %d damage in %s\n",
+           cname(player->cnum), PERCENT_DAMAGE(dam),
+           xyas(target->sct_x, target->sct_y, target->sct_own));
 
     sectdamage(target, dam);