]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - sail/assorted.c
Comment out debugging build (it still randomly crashes though) pointed out
[bsdgames-darwin.git] / sail / assorted.c
index 9d6ca9983a9d8c7a18504d345e09419e4771a5a3..7c35d5c663360fbb55af28c64d57b3d830c34242 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: assorted.c,v 1.3 1995/04/22 10:36:45 cgd Exp $ */
+/*     $NetBSD: assorted.c,v 1.19 2011/08/16 11:26:16 christos Exp $   */
 
 /*
  * Copyright (c) 1983, 1993
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  *
  * SUCH DAMAGE.
  */
 
+#include <sys/cdefs.h>
 #ifndef lint
 #if 0
-static char sccsid[] = "@(#)assorted.c 8.1 (Berkeley) 5/31/93";
+static char sccsid[] = "@(#)assorted.c 8.2 (Berkeley) 4/28/95";
 #else
-static char rcsid[] = "$NetBSD: assorted.c,v 1.3 1995/04/22 10:36:45 cgd Exp $";
+__RCSID("$NetBSD: assorted.c,v 1.19 2011/08/16 11:26:16 christos Exp $");
 #endif
 #endif /* not lint */
 
-#include "externs.h"
+#include <stdlib.h>
+#include <err.h>
+#include "extern.h"
 
-table(rig, shot, hittable, on, from, roll)
-struct ship *on, *from;
-int rig, shot, hittable, roll;
+static void strike(struct ship *, struct ship *);
+
+void
+table(struct ship *from, struct ship *on,
+      int rig, int shot, int hittable, int roll)
 {
-       register int hhits = 0, chits = 0, ghits = 0, rhits = 0;
+       int hhits = 0, chits = 0, ghits = 0, rhits = 0;
        int Ghit = 0, Hhit = 0, Rhit = 0, Chit = 0;
        int guns, car, pc, hull;
        int crew[3];
-       register int n;
+       int n;
        int rigg[4];
-       char *message;
-       struct Tables *tp;
+       const char *message;
+       const struct Tables *tp;
 
        pc = on->file->pcrew;
        hull = on->specs->hull;
@@ -65,9 +66,9 @@ int rig, shot, hittable, roll;
        rigg[1] = on->specs->rig2;
        rigg[2] = on->specs->rig3;
        rigg[3] = on->specs->rig4;
-       if (shot == L_GRAPE)
+       if (shot == L_GRAPE) {
                Chit = chits = hittable;
-       else {
+       else {
                tp = &(rig ? RigTable : HullTable)[hittable][roll-1];
                Chit = chits = tp->C;
                Rhit = rhits = tp->R;
@@ -84,7 +85,7 @@ int rig, shot, hittable, roll;
                pc -= (chits + 1) / 2;
                chits /= 2;
        }
-       for (n = 0; n < 3; n++)
+       for (n = 0; n < 3; n++) {
                if (chits > crew[n]) {
                        chits -= crew[n];
                        crew[n] = 0;
@@ -92,14 +93,16 @@ int rig, shot, hittable, roll;
                        crew[n] -= chits;
                        chits = 0;
                }
-       for (n = 0; n < 3; n++)
-               if (rhits > rigg[n]){
+       }
+       for (n = 0; n < 3; n++) {
+               if (rhits > rigg[n]) {
                        rhits -= rigg[n];
                        rigg[n] = 0;
                } else {
                        rigg[n] -= rhits;
                        rhits = 0;
                }
+       }
        if (rigg[3] != -1 && rhits > rigg[3]) {
                rhits -= rigg[3];
                rigg[3] = 0;
@@ -107,7 +110,7 @@ int rig, shot, hittable, roll;
                rigg[3] -= rhits;
        }
        if (rig && !rigg[2] && (!rigg[3] || rigg[3] == -1))
-               makesignal(on, "dismasted!", (struct ship *)0);
+               makemsg(on, "dismasted!");
        if (portside(from, on, 0)) {
                guns = on->specs->gunR;
                car = on->specs->carR;
@@ -122,7 +125,7 @@ int rig, shot, hittable, roll;
                car -= ghits;
                ghits = 0;
        }
-       if (ghits > guns){
+       if (ghits > guns) {
                ghits -= guns;
                guns = 0;
        } else {
@@ -130,36 +133,44 @@ int rig, shot, hittable, roll;
                ghits = 0;
        }
        hull -= ghits;
-       if (Ghit)
-               Write(portside(from, on, 0) ? W_GUNR : W_GUNL,
-                       on, 0, guns, car, 0, 0);
+       if (Ghit) {
+               if (portside(from, on, 0)) {
+                       send_gunr(on, guns, car);
+               } else {
+                       send_gunl(on, guns, car);
+               }
+       }
        hull -= hhits;
        hull = hull < 0 ? 0 : hull;
        if (on->file->captured != 0 && Chit)
-               Write(W_PCREW, on, 0, pc, 0, 0, 0);
+               send_pcrew(on, pc);
        if (Hhit)
-               Write(W_HULL, on, 0, hull, 0, 0, 0);
+               send_hull(on, hull);
        if (Chit)
-               Write(W_CREW, on, 0, crew[0], crew[1], crew[2], 0);
+               send_crew(on, crew[0], crew[1], crew[2]);
        if (Rhit)
-               Write(W_RIGG, on, 0, rigg[0], rigg[1], rigg[2], rigg[3]);
+               send_rigg(on, rigg[0], rigg[1], rigg[2], rigg[3]);
        switch (shot) {
        case L_ROUND:
-               message = "firing round shot on %s (%c%c)";
+               message = "firing round";
                break;
        case L_GRAPE:
-               message = "firing grape shot on %s (%c%c)";
+               message = "firing grape";
                break;
        case L_CHAIN:
-               message = "firing chain shot on %s (%c%c)";
+               message = "firing chain";
                break;
        case L_DOUBLE:
-               message = "firing double shot on %s (%c%c)";
+               message = "firing double";
                break;
        case L_EXPLODE:
-               message = "exploding shot on %s (%c%c)";
+               message = "exploding";
+               break;
+       default:
+               errx(1, "Unknown shot type %d", shot);
+
        }
-       makesignal(from, message, on);
+       makesignal(from, "%s shot on $$", on, message);
        if (roll == 6 && rig) {
                switch(Rhit) {
                case 0:
@@ -183,8 +194,10 @@ int rig, shot, hittable, roll;
                case 7:
                        message = "main topmast and mizzen mast shattered";
                        break;
+               default:
+                       errx(1, "Bad Rhit = %d", Rhit);
                }
-               makesignal(on, message, (struct ship *)0);
+               makemsg(on, "%s", message);
        } else if (roll == 6) {
                switch (Hhit) {
                case 0:
@@ -204,41 +217,44 @@ int rig, shot, hittable, roll;
                        break;
                case 5:
                        message = "rudder cables shot through";
-                       Write(W_TA, on, 0, 0, 0, 0, 0);
+                       send_ta(on, 0);
                        break;
                case 6:
                        message = "shot holes below the water line";
                        break;
+               default:
+                       errx(1, "Bad Hhit = %d", Hhit);
                }
-               makesignal(on, message, (struct ship *)0);
+               makemsg(on, "%s", message);
        }
        /*
-       if (Chit > 1 && on->file->readyL&R_INITIAL && on->file->readyR&R_INITIAL) {
+       if (Chit > 1 && on->file->readyL & R_INITIAL &&
+           on->file->readyR & R_INITIAL) {
                on->specs->qual--;
                if (on->specs->qual <= 0) {
-                       makesignal(on, "crew mutinying!", (struct ship *)0);
+                       makemsg(on, "crew mutinying!");
                        on->specs->qual = 5;
-                       Write(W_CAPTURED, on, 0, on->file->index, 0, 0, 0);
-               } else 
-                       makesignal(on, "crew demoralized", (struct ship *)0);
-               Write(W_QUAL, on, 0, on->specs->qual, 0, 0, 0);
+                       Write(W_CAPTURED, on, on->file->index, 0, 0, 0);
+               } else {
+                       makemsg(on, "crew demoralized");
+               }
+               Write(W_QUAL, on, on->specs->qual, 0, 0, 0);
        }
        */
        if (!hull)
                strike(on, from);
 }
 
-Cleansnag(from, to, all, flag)
-register struct ship *from, *to;
-char all, flag;
+void
+Cleansnag(struct ship *from, struct ship *to, int all, int flag)
 {
        if (flag & 1) {
-               Write(W_UNGRAP, from, 0, to->file->index, all, 0, 0);
-               Write(W_UNGRAP, to, 0, from->file->index, all, 0, 0);
+               send_ungrap(from, to->file->index, all);
+               send_ungrap(to, from->file->index, all);
        }
        if (flag & 2) {
-               Write(W_UNFOUL, from, 0, to->file->index, all, 0, 0);
-               Write(W_UNFOUL, to, 0, from->file->index, all, 0, 0);
+               send_unfoul(from, to->file->index, all);
+               send_unfoul(to, from->file->index, all);
        }
        if (!snagged2(from, to)) {
                if (!snagged(from)) {
@@ -254,27 +270,27 @@ char all, flag;
        }
 }
 
-strike(ship, from)
-register struct ship *ship, *from;
+static void
+strike(struct ship *ship, struct ship *from)
 {
        int points;
 
        if (ship->file->struck)
                return;
-       Write(W_STRUCK, ship, 0, 1, 0, 0, 0);
+       send_struck(ship, 1);
        points = ship->specs->pts + from->file->points;
-       Write(W_POINTS, from, 0, points, 0, 0, 0);
+       send_points(from, points);
        unboard(ship, ship, 0);         /* all offense */
        unboard(ship, ship, 1);         /* all defense */
-       switch (die()) {
+       switch (dieroll()) {
        case 3:
        case 4:         /* ship may sink */
-               Write(W_SINK, ship, 0, 1, 0, 0, 0);
+               send_sink(ship, 1);
                break;
        case 5:
        case 6:         /* ship may explode */
-               Write(W_EXPLODE, ship, 0, 1, 0, 0, 0);
+               send_explode(ship, 1);
                break;
        }
-       Write(W_SIGNAL, ship, 1, (int) "striking her colours!", 0, 0, 0);
+       send_signal(ship, "striking her colours!");
 }