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[] = "@(#)game.c 8.2 (Berkeley) 4/28/95";
36: #else
37: __RCSID("$NetBSD: game.c,v 1.11 2003/08/07 09:37:42 agc Exp $");
38: #endif
39: #endif
40:
41: #include <sys/types.h>
42: #include "extern.h"
43:
44: int
45: maxturns(struct ship *ship, char *af)
46: {
47: int turns;
48:
49: turns = ship->specs->ta;
50: *af = (ship->file->drift > 1 && turns);
51: if (*af != '\0') {
52: turns--;
53: if (ship->file->FS == 1)
54: turns = 0;
55: }
56: return turns;
57: }
58:
59: int
60: maxmove(struct ship *ship, int dir, int fs)
61: {
62: int riggone = 0, Move, flank = 0;
63:
64: Move = ship->specs->bs;
65: if (!ship->specs->rig1)
66: riggone++;
67: if (!ship->specs->rig2)
68: riggone++;
69: if (!ship->specs->rig3)
70: riggone++;
71: if (!ship->specs->rig4)
72: riggone++;
73: if ((ship->file->FS || fs) && fs != -1) {
74: flank = 1;
75: Move = ship->specs->fs;
76: }
77: if (dir == winddir)
78: Move -= 1 + WET[windspeed][ship->specs->class-1].B;
79: else if (dir == winddir + 2 || dir == winddir - 2 || dir == winddir - 6 || dir == winddir + 6)
80: Move -= 1 + WET[windspeed][ship->specs->class-1].C;
81: else if (dir == winddir + 3 || dir == winddir - 3 || dir == winddir - 5 || dir == winddir + 5)
82: Move = (flank ? 2 : 1) - WET[windspeed][ship->specs->class-1].D;
83: else if (dir == winddir + 4 || dir == winddir - 4)
84: Move = 0;
85: else
86: Move -= WET[windspeed][ship->specs->class-1].A;
87: Move -= riggone;
88: Move = Move < 0 ? 0 : Move;
89: return(Move);
90: }