4.4BSD snapshot (revision 8.1); add 1993 to copyright
[unix-history] / usr / src / games / sail / pl_4.c
CommitLineData
b5f0675e 1/*
9dceaff0
KB
2 * Copyright (c) 1983, 1993
3 * The Regents of the University of California. All rights reserved.
c0ca48ec 4 *
b2e7427f 5 * %sccs.include.redist.c%
b5f0675e
EW
6 */
7
d8ada91f 8#ifndef lint
9dceaff0 9static char sccsid[] = "@(#)pl_4.c 8.1 (Berkeley) %G%";
c0ca48ec 10#endif /* not lint */
d8ada91f
EW
11
12#include "player.h"
13
14changesail()
15{
16 int rig, full;
17
18 rig = mc->rig1;
19 full = mf->FS;
20 if (windspeed == 6 || windspeed == 5 && mc->class > 4)
21 rig = 0;
22 if (mc->crew3 && rig) {
23 if (!full) {
789d5e82
EW
24 if (sgetch("Increase to Full sails? ",
25 (struct ship *)0, 1) == 'y') {
d8ada91f
EW
26 changed = 1;
27 Write(W_FS, ms, 0, 1, 0, 0, 0);
28 }
29 } else {
789d5e82
EW
30 if (sgetch("Reduce to Battle sails? ",
31 (struct ship *)0, 1) == 'y') {
d8ada91f
EW
32 Write(W_FS, ms, 0, 0, 0, 0, 0);
33 changed = 1;
34 }
35 }
36 } else if (!rig)
37 Signal("Sails rent to pieces", (struct ship *)0);
38}
39
d8ada91f
EW
40acceptsignal()
41{
42 char buf[60];
43 register char *p = buf;
44
d8ada91f 45 *p++ = '"';
9c4d91cb 46 sgetstr("Message? ", p, sizeof buf - 2);
d8ada91f
EW
47 while (*p++)
48 ;
49 p[-1] = '"';
066b3d96 50 *p = 0;
d8ada91f
EW
51 Write(W_SIGNAL, ms, 1, (int)buf, 0, 0, 0);
52}
53
fe0cae24 54lookout()
d8ada91f
EW
55{
56 register struct ship *sp;
fe0cae24
EW
57 char buf[3];
58 register char c;
d8ada91f 59
fe0cae24 60 sgetstr("What ship? ", buf, sizeof buf);
d8ada91f 61 foreachship(sp) {
fe0cae24
EW
62 c = *countryname[sp->nationality];
63 if ((c == *buf || tolower(c) == *buf || colours(sp) == *buf)
64 && (sp->file->stern == buf[1] || sterncolour(sp) == buf[1]
65 || buf[1] == '?')) {
66 eyeball(sp);
d8ada91f
EW
67 }
68 }
d8ada91f
EW
69}
70
fe0cae24
EW
71char *
72saywhat(sp, flag)
73register struct ship *sp;
74char flag;
d8ada91f 75{
fe0cae24
EW
76 if (sp->file->captain[0])
77 return sp->file->captain;
78 else if (sp->file->struck)
79 return "(struck)";
80 else if (sp->file->captured != 0)
81 return "(captured)";
82 else if (flag)
83 return "(available)";
d8ada91f 84 else
fe0cae24 85 return "(computer)";
d8ada91f
EW
86}
87
fe0cae24
EW
88eyeball(ship)
89register struct ship *ship;
d8ada91f 90{
fe0cae24
EW
91 int i;
92
93 if (ship->file->dir != 0) {
94 Signal("Sail ho! (range %d, %s)",
95 (struct ship *)0, range(ms, ship), saywhat(ship, 0));
96 i = portside(ms, ship, 1) - mf->dir;
97 if (i <= 0)
98 i += 8;
99 Signal("%s (%c%c) %s %s %s.",
100 ship, countryname[ship->nationality],
101 classname[ship->specs->class], directionname[i]);
d8ada91f 102 }
d8ada91f 103}