]> git.pond.sub.org Git - empserver/blobdiff - src/lib/subs/retreat.c
Revert "retreat: Don't report a destroyed ship/land unit couldn't retreat"
[empserver] / src / lib / subs / retreat.c
index 98b9a8e0f239aad14fe3b0aa66c3d21a86307101..e57a8d87f85e91e74b160582be94b59e41932cb1 100644 (file)
@@ -84,7 +84,7 @@ retreat_ship(struct shpstr *sp, char code)
     struct nstr_item ni;
     struct shpstr ship;
 
-    if (sp->shp_effic < SHIP_MINEFF || CANT_HAPPEN(!sp->shp_own))
+    if (CANT_HAPPEN(!sp->shp_own))
        return;
     if (sp->shp_own == player->cnum)
        return;
@@ -123,6 +123,15 @@ retreat_ship1(struct shpstr *sp, char code, int orig)
     struct mchrstr *mcp;
     int changed;
 
+    if (sp->shp_effic < SHIP_MINEFF) {
+       wu(0, sp->shp_own,
+          "%s %s,\nbut it died in the attack, and so couldn't retreat!\n",
+          prship(sp), conditions[findcondition(code)].desc[orig]);
+       if (!orig)
+           putship(sp->shp_uid, sp);
+       return 0;
+    }
+
     /* check crew - uws don't count */
     if (sp->shp_item[I_MILIT] == 0 && sp->shp_item[I_CIVIL] == 0) {
        wu(0, sp->shp_own,
@@ -274,7 +283,7 @@ retreat_land(struct lndstr *lp, char code)
     struct nstr_item ni;
     struct lndstr land;
 
-    if (lp->lnd_effic < LAND_MINEFF || CANT_HAPPEN(!lp->lnd_own))
+    if (CANT_HAPPEN(!lp->lnd_own))
        return;
     if (lp->lnd_own == player->cnum)
        return;
@@ -312,6 +321,15 @@ retreat_land1(struct lndstr *lp, char code, int orig)
     double mobcost;
     struct lchrstr *lcp;
 
+    if (lp->lnd_effic < LAND_MINEFF) {
+       wu(0, lp->lnd_own,
+          "%s %s,\nbut it died in the attack, and so couldn't retreat!\n",
+          prland(lp), conditions[findcondition(code)].desc[orig]);
+       if (!orig)
+           putland(lp->lnd_uid, lp);
+       return 0;
+    }
+
     getsect(lp->lnd_x, lp->lnd_y, &sect);
 
     if (lp->lnd_mobil <= 0.0) {