]>
git.cameronkatri.com Git - bsdgames-darwin.git/blob - battlestar/com2.c
1 /* $NetBSD: com2.c,v 1.12 2000/09/21 10:38:50 jsm Exp $ */
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
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. All advertising materials mentioning features or use of this software
16 * must display the following acknowledgement:
17 * This product includes software developed by the University of
18 * California, Berkeley and its contributors.
19 * 4. Neither the name of the University nor the names of its contributors
20 * may be used to endorse or promote products derived from this software
21 * without specific prior written permission.
23 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 #include <sys/cdefs.h>
39 static char sccsid
[] = "@(#)com2.c 8.2 (Berkeley) 4/28/95" ;
41 __RCSID ( "$NetBSD: com2.c,v 1.12 2000/09/21 10:38:50 jsm Exp $" );
49 { /* synonyms = {sheathe, sheath} */
51 int firstnumber
, value
;
53 firstnumber
= wordnumber
;
54 while ( wordtype
[++ wordnumber
] == ADJS
);
55 while ( wordnumber
<= wordcount
&& ( wordtype
[ wordnumber
] == OBJECT
||
56 wordtype
[ wordnumber
] == NOUNS
) && wordvalue
[ wordnumber
] != DOOR
) {
57 value
= wordvalue
[ wordnumber
];
58 if ( objsht
[ value
] == NULL
)
60 for ( n
= 0 ; objsht
[ value
][ n
]; n
++);
68 printf ( "You can't wear %s%s ! \n " , ( objsht
[ value
][ n
- 1 ] == 's' ? " " : " a " ), objsht
[ value
]);
74 case LEVIS
: /* wearable things */
90 if ( testbit ( inven
, value
)) {
91 clearbit ( inven
, value
);
93 carrying
-= objwt
[ value
];
94 encumber
-= objcumber
[ value
];
96 printf ( "You are now wearing %s %s . \n " ,
97 ( objsht
[ value
][ n
- 1 ] == 's' ? "the"
98 : "a" ), objsht
[ value
]);
100 if ( testbit ( wear
, value
))
101 printf ( "You are already wearing the %s . \n " ,
104 printf ( "You aren't holding the %s . \n " ,
106 if ( wordnumber
< wordcount
- 1 &&
107 wordvalue
[++ wordnumber
] == AND
)
110 return ( firstnumber
);
113 puts ( "Don't be ridiculous." );
114 return ( firstnumber
);
119 { /* synonyms = {buckle, strap, tie} */
120 if ( wordvalue
[ wordnumber
+ 1 ] == ON
) {
121 wordvalue
[++ wordnumber
] = PUTON
;
124 if ( wordvalue
[ wordnumber
+ 1 ] == DOWN
) {
125 wordvalue
[++ wordnumber
] = DROP
;
128 puts ( "I don't understand what you want to put." );
135 { /* synonyms = {pull, carry} */
142 while ( wordtype
[++ wordnumber
] == ADJS
&& wordnumber
< wordcount
);
143 if ( wordvalue
[ wordnumber
] == AMULET
&& testbit ( inven
, AMULET
) &&
145 puts ( "The amulet begins to glow." );
146 if ( testbit ( inven
, MEDALION
)) {
147 puts ( "The medallion comes to life too." );
148 if ( position
== 114 ) {
149 location
[ position
]. down
= 160 ;
150 whichway ( location
[ position
]);
151 puts ( "The waves subside and it is possible to descend to the sea cave now." );
156 puts ( "A light mist falls over your eyes and the sound of purling water trickles in" );
157 puts ( "your ears. When the mist lifts you are standing beside a cool stream." );
165 } else if ( position
== FINAL
)
166 puts ( "The amulet won't work in here." );
167 else if ( wordvalue
[ wordnumber
] == COMPASS
&& testbit ( inven
, COMPASS
))
168 printf ( "Your compass points %s . \n " , truedirec ( NORTH
, '-' ));
169 else if ( wordvalue
[ wordnumber
] == COMPASS
)
170 puts ( "You aren't holding the compass." );
171 else if ( wordvalue
[ wordnumber
] == AMULET
)
172 puts ( "You aren't holding the amulet." );
174 puts ( "There is no apparent use." );
183 for ( n
= 0 ; !(( n
== SWORD
|| n
== KNIFE
|| n
== TWO_HANDED
|| n
== MACE
|| n
== CLEAVER
|| n
== BROAD
|| n
== CHAIN
|| n
== SHOVEL
|| n
== HALBERD
) && testbit ( inven
, n
)) && n
< NUMOFOBJECTS
; n
++);
184 if ( n
== NUMOFOBJECTS
) {
185 if ( testbit ( inven
, LASER
)) {
186 printf ( "Your laser should do the trick. \n " );
188 while ( wordtype
[++ n
] == ADJS
)
190 switch ( wordvalue
[ n
]) {
195 wordvalue
[ wordnumber
] = SHOOT
;
202 if ( wordtype
[ n
] != OBJECT
||
203 wordvalue
[ wordnumber
] == EVERYTHING
)
204 puts ( "You can't kill that!" );
206 printf ( "You can't kill the %s ! \n " ,
207 objsht
[ wordvalue
[ n
]]);
211 puts ( "You don't have suitable weapons to kill." );
213 printf ( "Your %s should do the trick. \n " , objsht
[ n
]);
214 while ( wordtype
[++ wordnumber
] == ADJS
);
215 switch ( wordvalue
[ wordnumber
]) {
218 if ( testbit ( location
[ position
]. objects
, BATHGOD
)) {
219 puts ( "The goddess's head slices off. Her corpse floats in the water." );
220 clearbit ( location
[ position
]. objects
, BATHGOD
);
221 setbit ( location
[ position
]. objects
, DEADGOD
);
225 if ( testbit ( location
[ position
]. objects
, NORMGOD
)) {
226 puts ( "The goddess pleads but you strike her mercilessly. Her broken body lies in a \n pool of blood." );
227 clearbit ( location
[ position
]. objects
, NORMGOD
);
228 setbit ( location
[ position
]. objects
, DEADGOD
);
234 puts ( "I dont see her anywhere." );
237 if ( testbit ( location
[ position
]. objects
, TIMER
)) {
238 puts ( "The old man offers no resistance." );
239 clearbit ( location
[ position
]. objects
, TIMER
);
240 setbit ( location
[ position
]. objects
, DEADTIME
);
247 if ( testbit ( location
[ position
]. objects
, NATIVE
)) {
248 puts ( "The girl screams as you cut her body to shreds. She is dead." );
249 clearbit ( location
[ position
]. objects
, NATIVE
);
250 setbit ( location
[ position
]. objects
, DEADNATIVE
);
257 if ( testbit ( location
[ position
]. objects
, MAN
)) {
258 puts ( "You strike him to the ground, and he coughs up blood." );
259 puts ( "Your fantasy is over." );
267 if ( wordtype
[ wordnumber
] != OBJECT
)
268 puts ( "You can't kill that!" );
270 printf ( "You can't kill the %s ! \n " ,
271 objsht
[ wordvalue
[ wordnumber
]]);
279 while ( wordtype
[++ wordnumber
] != NOUNS
&& wordnumber
<= wordcount
);
280 if ( wordtype
[ wordnumber
] == NOUNS
&& testbit ( location
[ position
]. objects
, wordvalue
[ wordnumber
])) {
282 switch ( wordvalue
[ wordnumber
]) {
284 puts ( "You attack the goddess, and she screams as you beat her. She falls down" );
285 puts ( "crying and tries to hold her torn and bloodied dress around her." );
295 puts ( "The girl tries to run, but you catch her and throw her down. Her face is" );
296 puts ( "bleeding, and she screams as you tear off her clothes." );
303 puts ( "Her screams have attracted attention. I think we are surrounded." );
304 setbit ( location
[ ahead
]. objects
, WOODSMAN
);
305 setbit ( location
[ ahead
]. objects
, DEADWOOD
);
306 setbit ( location
[ ahead
]. objects
, MALLET
);
307 setbit ( location
[ back
]. objects
, WOODSMAN
);
308 setbit ( location
[ back
]. objects
, DEADWOOD
);
309 setbit ( location
[ back
]. objects
, MALLET
);
310 setbit ( location
[ left
]. objects
, WOODSMAN
);
311 setbit ( location
[ left
]. objects
, DEADWOOD
);
312 setbit ( location
[ left
]. objects
, MALLET
);
313 setbit ( location
[ right
]. objects
, WOODSMAN
);
314 setbit ( location
[ right
]. objects
, DEADWOOD
);
315 setbit ( location
[ right
]. objects
, MALLET
);
319 puts ( "You are perverted." );
328 if ( followfight
== ourtime
) {
329 puts ( "The Dark Lord leaps away and runs down secret tunnels and corridors." );
330 puts ( "You chase him through the darkness and splash in pools of water." );
331 puts ( "You have cornered him. His laser sword extends as he steps forward." );
334 setbit ( location
[ position
]. objects
, TALISMAN
);
335 setbit ( location
[ position
]. objects
, AMULET
);
338 if ( followgod
== ourtime
) {
339 puts ( "The goddess leads you down a steamy tunnel and into a high, wide chamber." );
340 puts ( "She sits down on a throne." );
342 setbit ( location
[ position
]. objects
, NORMGOD
);
346 puts ( "There is no one to follow." );