1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32: #include <sys/cdefs.h>
33: #ifndef lint
34: #if 0
35: static char sccsid[] = "@(#)dr_5.c 8.2 (Berkeley) 4/28/95";
36: #else
37: __RCSID("$NetBSD: dr_5.c,v 1.12 2003/08/07 09:37:42 agc Exp $");
38: #endif
39: #endif
40:
41: #include <sys/types.h>
42: #include "extern.h"
43:
44: void
45: subtract(struct ship *from, struct ship *fromcap, int totalfrom, int *crewfrom, int pcfrom)
46: {
47: int n;
48:
49: if (fromcap == from && totalfrom) {
50: for (n = 0; n < 3; n++) {
51: if (totalfrom > crewfrom[n]) {
52: totalfrom -= crewfrom[n];
53: crewfrom[n] = 0;
54: } else {
55: crewfrom[n] -= totalfrom;
56: totalfrom = 0;
57: }
58: }
59: Write(W_CREW, from, crewfrom[0], crewfrom[1], crewfrom[2], 0);
60: } else if (totalfrom) {
61: pcfrom -= totalfrom;
62: pcfrom = pcfrom < 0 ? 0 : pcfrom;
63: Write(W_PCREW, from, pcfrom, 0, 0, 0);
64: }
65: }
66:
67: int
68: mensent(struct ship *from, struct ship *to, int *crew, struct ship **captured, int *pc, int isdefense)
69: {
70: int men = 0;
71: int n;
72: int c1, c2, c3;
73: struct BP *bp;
74:
75: *pc = from->file->pcrew;
76: *captured = from->file->captured;
77: crew[0] = from->specs->crew1;
78: crew[1] = from->specs->crew2;
79: crew[2] = from->specs->crew3;
80: bp = isdefense ? from->file->DBP : from->file->OBP;
81: for (n=0; n < NBP; n++, bp++) {
82: if (bp->turnsent && bp->toship == to)
83: men += bp->mensent;
84: }
85: if (men) {
86: c1 = men/100 ? crew[0] : 0;
87: c2 = (men%100)/10 ? crew[1] : 0;
88: c3 = men/10 ? crew[2] : 0;
89: c3 = *captured == 0 ? crew[2] : *pc;
90: } else
91: c1 = c2 = c3 = 0;
92: return(c1 + c2 + c3);
93: }