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