|
|
1.1 root 1: /*
2: * Copyright (c) 1983 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that: (1) source distributions retain this entire copyright
7: * notice and comment, and (2) distributions including binaries display
8: * the following acknowledgement: ``This product includes software
9: * developed by the University of California, Berkeley and its contributors''
10: * in the documentation or other materials provided with the distribution
11: * and in all advertising materials mentioning features or use of this
12: * software. Neither the name of the University nor the names of its
13: * contributors may be used to endorse or promote products derived
14: * from this software without specific prior written permission.
15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18: */
19:
20: #ifndef lint
21: static char sccsid[] = "@(#)game.c 5.4 (Berkeley) 6/1/90";
22: #endif /* not lint */
23:
24: #include "externs.h"
25:
26: maxturns(ship, af)
27: register struct ship *ship;
28: char *af;
29: {
30: register int turns;
31:
32: turns = ship->specs->ta;
33: if (*af = (ship->file->drift > 1 && turns)) {
34: turns--;
35: if (ship->file->FS == 1)
36: turns = 0;
37: }
38: return turns;
39: }
40:
41: maxmove(ship, dir, fs)
42: register struct ship *ship;
43: int dir, fs;
44: {
45: register int riggone = 0, Move, flank = 0;
46:
47: Move = ship->specs->bs;
48: if (!ship->specs->rig1)
49: riggone++;
50: if (!ship->specs->rig2)
51: riggone++;
52: if (!ship->specs->rig3)
53: riggone++;
54: if (!ship->specs->rig4)
55: riggone++;
56: if ((ship->file->FS || fs) && fs != -1) {
57: flank = 1;
58: Move = ship->specs->fs;
59: }
60: if (dir == winddir)
61: Move -= 1 + WET[windspeed][ship->specs->class-1].B;
62: else if (dir == winddir + 2 || dir == winddir - 2 || dir == winddir - 6 || dir == winddir + 6)
63: Move -= 1 + WET[windspeed][ship->specs->class-1].C;
64: else if (dir == winddir + 3 || dir == winddir - 3 || dir == winddir - 5 || dir == winddir + 5)
65: Move = (flank ? 2 : 1) - WET[windspeed][ship->specs->class-1].D;
66: else if (dir == winddir + 4 || dir == winddir - 4)
67: Move = 0;
68: else
69: Move -= WET[windspeed][ship->specs->class-1].A;
70: Move -= riggone;
71: Move = Move < 0 ? 0 : Move;
72: return(Move);
73: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.