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