inet6: require RTF_ANNOUNCE to proxy NS
[dragonfly.git] / games / sail / pl_4.c
blob710be027a0b3a121b1e7ab3350c2473c8f9db4e1
1 /* $NetBSD: pl_4.c,v 1.16 2009/03/14 22:52:52 dholland Exp $ */
3 /*
4 * Copyright (c) 1983, 1993
5 * The Regents of the University of California. All rights reserved.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. Neither the name of the University nor the names of its contributors
16 * may be used to endorse or promote products derived from this software
17 * without specific prior written permission.
19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
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.16 2009/03/14 22:52:52 dholland Exp $");
38 #endif
39 #endif /* not lint */
41 #include <sys/types.h>
42 #include <ctype.h>
43 #include "extern.h"
44 #include "player.h"
46 void
47 changesail(void)
49 int rig, full;
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 send_fs(ms, 1);
62 } else {
63 if (sgetch("Reduce to Battle sails? ",
64 (struct ship *)0, 1) == 'y') {
65 send_fs(ms, 0);
66 changed = 1;
69 } else if (!rig)
70 Msg("Sails rent to pieces");
73 void
74 acceptsignal(void)
76 char buf[60];
77 char *p = buf;
79 *p++ = '"';
80 sgetstr("Message? ", p, sizeof buf - 2);
81 while (*p++)
83 p[-1] = '"';
84 *p = 0;
85 send_signal(ms, buf);
88 void
89 lookout(void)
91 struct ship *sp;
92 char buf[3];
93 char c;
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);
106 const char *
107 saywhat(struct ship *sp, int flag)
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)";
121 void
122 eyeball(struct ship *ship)
124 int i;
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]);