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 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 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