]> git.pond.sub.org Git - empserver/commitdiff
Factor common plane damage code into ac_damage_plane()
authorMarkus Armbruster <armbru@pond.sub.org>
Thu, 17 Jun 2010 05:47:45 +0000 (07:47 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 18 Jul 2010 06:36:19 +0000 (08:36 +0200)
Out of ac_planedamage() and pinflak_planedamage().

include/plane.h
src/lib/commands/bomb.c
src/lib/subs/aircombat.c

index e72e9f7a405b1614d09cf22ab677be71e82369ab..b39d755a30368d76d186249593561d91ecb5b66c 100644 (file)
@@ -165,6 +165,7 @@ extern int pln_next_on_unit(int);
 extern int ac_flak_dam(int, int, int);
 extern void ac_encounter(struct emp_qelem *, struct emp_qelem *, coord,
                         coord, char *, int);
 extern int ac_flak_dam(int, int, int);
 extern void ac_encounter(struct emp_qelem *, struct emp_qelem *, coord,
                         coord, char *, int);
+extern int ac_damage_plane(struct plnstr *, natid, int, int, char *);
 
 /* src/lib/subs/aswplnsubs.c */
 extern int on_shiplist(int, struct shiplist *);
 
 /* src/lib/subs/aswplnsubs.c */
 extern int on_shiplist(int, struct shiplist *);
index f1807fbe28c105389a2febc2c45cc124b5f87973..d541f68b8efed7c4205f34fbf445700a44926340 100644 (file)
@@ -805,40 +805,16 @@ pinflak_planedamage(struct plnstr *pp, struct plchrstr *pcp, natid from,
                    int flak)
 {
     int disp;
                    int flak)
 {
     int disp;
-    char dmess[255];
-    int eff;
-    natid plane_owner;
+    char dmess[14];
     int dam;
 
     dam = ac_flak_dam(flak, pln_def(pp), pcp->pl_flags);
     int dam;
 
     dam = ac_flak_dam(flak, pln_def(pp), pcp->pl_flags);
-    disp = 0;
-    plane_owner = pp->pln_own;
-    eff = pp->pln_effic;
     if (dam <= 0)
        return 0;
     if (dam <= 0)
        return 0;
-    memset(dmess, 0, sizeof(dmess));
-    eff -= dam;
-    if (eff < 0)
-       eff = 0;
-    if (eff < PLANE_MINEFF) {
-       sprintf(dmess, " -- shot down");
-       disp = 1;
-    } else if (eff < 80 && chance((80 - eff) / 100.0)) {
-       sprintf(dmess, " -- aborted @%d%%", eff);
-       disp = 2;
-    }
-    PR(plane_owner, "    Flak! %s %s takes %d%s.\n",
-       cname(pp->pln_own), prplane(pp), dam, dmess);
-
-    pp->pln_effic = eff;
-    pp->pln_mobil -= MIN(32 + pp->pln_mobil, dam / 2);
-    if (disp == 1) {
-       if (from != 0)
-           nreport(from, N_DOWN_PLANE, pp->pln_own, 1);
-    }
-    putplane(pp->pln_uid, pp);
+    disp = ac_damage_plane(pp, from, dam, 1, dmess);
+    PR(pp->pln_own, "    Flak! %s %s takes %d%s%s.\n",
+       cname(pp->pln_own), prplane(pp), dam, *dmess ? " --" : "", dmess);
 
 
-    if (disp > 0)
-       return 1;
-    return 0;
+    putplane(pp->pln_uid, pp);
+    return disp > 0;
 }
 }
index 465ec209cd26f79d38255784868c1a984da4b900..2cb1e2067c0282d1f91a7ae8931e58564aa13a17 100644 (file)
@@ -525,17 +525,27 @@ static void
 ac_planedamage(struct plist *plp, natid from, int dam, int flak,
               char *mesg)
 {
 ac_planedamage(struct plist *plp, natid from, int dam, int flak,
               char *mesg)
 {
-    struct plnstr *pp;
+    int disp = ac_damage_plane(&plp->plane, from, dam, flak, mesg);
+
+    if (disp) {
+       pln_put1(plp);
+    } else
+       putplane(plp->plane.pln_uid, &plp->plane);
+}
+
+int
+ac_damage_plane(struct plnstr *pp, natid from, int dam, int flak,
+               char *mesg)
+{
     int eff, disp;
 
     *mesg = 0;
     if (dam <= 0) {
        if (!flak)
            snprintf(mesg, 14, " no damage");
     int eff, disp;
 
     *mesg = 0;
     if (dam <= 0) {
        if (!flak)
            snprintf(mesg, 14, " no damage");
-       return;
+       return 0;
     }
 
     }
 
-    pp = &plp->plane;
     eff = pp->pln_effic - dam;
     if (eff < 0)
        eff = 0;
     eff = pp->pln_effic - dam;
     if (eff < 0)
        eff = 0;
@@ -552,12 +562,10 @@ ac_planedamage(struct plist *plp, natid from, int dam, int flak,
 
     pp->pln_effic = eff;
     pp->pln_mobil -= MIN(32 + pp->pln_mobil, dam / 2);
 
     pp->pln_effic = eff;
     pp->pln_mobil -= MIN(32 + pp->pln_mobil, dam / 2);
-    if (disp) {
-       if (disp == 1 && from != 0 && (plp->pcp->pl_flags & P_M) == 0)
-           nreport(from, N_DOWN_PLANE, pp->pln_own, 1);
-       pln_put1(plp);
-    } else
-       putplane(pp->pln_uid, pp);
+
+    if (disp == 1 && from != 0 && !(plchr[pp->pln_type].pl_flags & P_M))
+       nreport(from, N_DOWN_PLANE, pp->pln_own, 1);
+    return disp;
 }
 
 static void
 }
 
 static void