1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32: #include <sys/cdefs.h>
33: #ifndef lint
34: #if 0
35: static char sccsid[] = "@(#)pl_4.c 8.1 (Berkeley) 5/31/93";
36: #else
37: __RCSID("$NetBSD: pl_4.c,v 1.15 2004/11/05 21:30:32 dsl Exp $");
38: #endif
39: #endif
40:
41: #include <sys/types.h>
42: #include <ctype.h>
43: #include "extern.h"
44: #include "player.h"
45:
46: void
47: changesail(void)
48: {
49: int rig, full;
50:
51: rig = mc->rig1;
52: full = mf->FS;
53: if (windspeed == 6 || (windspeed == 5 && mc->class > 4))
54: rig = 0;
55: if (mc->crew3 && rig) {
56: if (!full) {
57: if (sgetch("Increase to Full sails? ",
58: (struct ship *)0, 1) == 'y') {
59: changed = 1;
60: Write(W_FS, ms, 1, 0, 0, 0);
61: }
62: } else {
63: if (sgetch("Reduce to Battle sails? ",
64: (struct ship *)0, 1) == 'y') {
65: Write(W_FS, ms, 0, 0, 0, 0);
66: changed = 1;
67: }
68: }
69: } else if (!rig)
70: Msg("Sails rent to pieces");
71: }
72:
73: void
74: acceptsignal(void)
75: {
76: char buf[60];
77: char *p = buf;
78:
79: *p++ = '"';
80: sgetstr("Message? ", p, sizeof buf - 2);
81: while (*p++)
82: ;
83: p[-1] = '"';
84: *p = 0;
85: Writestr(W_SIGNAL, ms, buf);
86: }
87:
88: void
89: lookout(void)
90: {
91: struct ship *sp;
92: char buf[3];
93: char c;
94:
95: sgetstr("What ship? ", buf, sizeof buf);
96: foreachship(sp) {
97: c = *countryname[sp->nationality];
98: if ((tolower((unsigned char)c) == *buf || colours(sp) == *buf)
99: && (sp->file->stern == buf[1] || sterncolour(sp) == buf[1]
100: || buf[1] == '?')) {
101: eyeball(sp);
102: }
103: }
104: }
105:
106: const char *
107: saywhat(struct ship *sp, int flag)
108: {
109: if (sp->file->captain[0])
110: return sp->file->captain;
111: else if (sp->file->struck)
112: return "(struck)";
113: else if (sp->file->captured != 0)
114: return "(captured)";
115: else if (flag)
116: return "(available)";
117: else
118: return "(computer)";
119: }
120:
121: void
122: eyeball(struct ship *ship)
123: {
124: int i;
125:
126: if (ship->file->dir != 0) {
127: Msg("Sail ho! (range %d, %s)",
128: range(ms, ship), saywhat(ship, 0));
129: i = portside(ms, ship, 1) - mf->dir;
130: if (i <= 0)
131: i += 8;
132: Signal("$$ %s %s %s.",
133: ship, countryname[ship->nationality],
134: classname[ship->specs->class], directionname[i]);
135: }
136: }