1 /*
2 * Copyright (c) 1983, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * %sccs.include.redist.c%
6 */
7
8 #ifndef lint
9 static char sccsid[] = "@(#)game.c 8.2 (Berkeley) 04/28/95";
10 #endif /* not lint */
11
12 #include "extern.h"
13
maxturns(ship,af)14 maxturns(ship, af)
15 register struct ship *ship;
16 char *af;
17 {
18 register int turns;
19
20 turns = ship->specs->ta;
21 if (*af = (ship->file->drift > 1 && turns)) {
22 turns--;
23 if (ship->file->FS == 1)
24 turns = 0;
25 }
26 return turns;
27 }
28
maxmove(ship,dir,fs)29 maxmove(ship, dir, fs)
30 register struct ship *ship;
31 int dir, fs;
32 {
33 register int riggone = 0, Move, flank = 0;
34
35 Move = ship->specs->bs;
36 if (!ship->specs->rig1)
37 riggone++;
38 if (!ship->specs->rig2)
39 riggone++;
40 if (!ship->specs->rig3)
41 riggone++;
42 if (!ship->specs->rig4)
43 riggone++;
44 if ((ship->file->FS || fs) && fs != -1) {
45 flank = 1;
46 Move = ship->specs->fs;
47 }
48 if (dir == winddir)
49 Move -= 1 + WET[windspeed][ship->specs->class-1].B;
50 else if (dir == winddir + 2 || dir == winddir - 2 || dir == winddir - 6 || dir == winddir + 6)
51 Move -= 1 + WET[windspeed][ship->specs->class-1].C;
52 else if (dir == winddir + 3 || dir == winddir - 3 || dir == winddir - 5 || dir == winddir + 5)
53 Move = (flank ? 2 : 1) - WET[windspeed][ship->specs->class-1].D;
54 else if (dir == winddir + 4 || dir == winddir - 4)
55 Move = 0;
56 else
57 Move -= WET[windspeed][ship->specs->class-1].A;
58 Move -= riggone;
59 Move = Move < 0 ? 0 : Move;
60 return(Move);
61 }
62