xref: /dragonfly/games/battlestar/command5.c (revision 4318c66e)
1*4318c66eSSascha Wildner /*	@(#)com5.c	8.2 (Berkeley) 4/28/95				*/
2*4318c66eSSascha Wildner /*	$NetBSD: command5.c,v 1.5 2014/03/22 23:31:28 dholland Exp $	*/
3*4318c66eSSascha Wildner 
4*4318c66eSSascha Wildner /*
5937f07e0SSascha Wildner  * Copyright (c) 1983, 1993
6937f07e0SSascha Wildner  *	The Regents of the University of California.  All rights reserved.
7937f07e0SSascha Wildner  *
8937f07e0SSascha Wildner  * Redistribution and use in source and binary forms, with or without
9937f07e0SSascha Wildner  * modification, are permitted provided that the following conditions
10937f07e0SSascha Wildner  * are met:
11937f07e0SSascha Wildner  * 1. Redistributions of source code must retain the above copyright
12937f07e0SSascha Wildner  *    notice, this list of conditions and the following disclaimer.
13937f07e0SSascha Wildner  * 2. Redistributions in binary form must reproduce the above copyright
14937f07e0SSascha Wildner  *    notice, this list of conditions and the following disclaimer in the
15937f07e0SSascha Wildner  *    documentation and/or other materials provided with the distribution.
16937f07e0SSascha Wildner  * 3. Neither the name of the University nor the names of its contributors
17937f07e0SSascha Wildner  *    may be used to endorse or promote products derived from this software
18937f07e0SSascha Wildner  *    without specific prior written permission.
19937f07e0SSascha Wildner  *
20937f07e0SSascha Wildner  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21937f07e0SSascha Wildner  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22937f07e0SSascha Wildner  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23937f07e0SSascha Wildner  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24937f07e0SSascha Wildner  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25937f07e0SSascha Wildner  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26937f07e0SSascha Wildner  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27937f07e0SSascha Wildner  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28937f07e0SSascha Wildner  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29937f07e0SSascha Wildner  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30937f07e0SSascha Wildner  * SUCH DAMAGE.
31937f07e0SSascha Wildner  */
32937f07e0SSascha Wildner 
33*4318c66eSSascha Wildner #include "extern.h"
34937f07e0SSascha Wildner 
35937f07e0SSascha Wildner void
kiss(void)36937f07e0SSascha Wildner kiss(void)
37937f07e0SSascha Wildner {
38937f07e0SSascha Wildner 	while (wordtype[++wordnumber] != NOUNS && wordnumber <= wordcount)
39*4318c66eSSascha Wildner 		continue;
40*4318c66eSSascha Wildner 	/* The goddess must be "taken" first if bathing. */
41*4318c66eSSascha Wildner 	if (wordtype[wordnumber] == NOUNS && wordvalue[wordnumber] == NORMGOD
42*4318c66eSSascha Wildner 	    && testbit(location[position].objects, BATHGOD)) {
43*4318c66eSSascha Wildner 		wordvalue[--wordnumber] = TAKE;
44*4318c66eSSascha Wildner 		cypher();
45*4318c66eSSascha Wildner 		return;
46*4318c66eSSascha Wildner 	}
47*4318c66eSSascha Wildner 	if (wordtype[wordnumber] == NOUNS) {
48*4318c66eSSascha Wildner 		if (testbit(location[position].objects,
49*4318c66eSSascha Wildner 		    wordvalue[wordnumber])) {
50937f07e0SSascha Wildner 			pleasure++;
51937f07e0SSascha Wildner 			printf("Kissed.\n");
52937f07e0SSascha Wildner 			switch (wordvalue[wordnumber]) {
53937f07e0SSascha Wildner 			case NORMGOD:
54937f07e0SSascha Wildner 				switch (godready++) {
55937f07e0SSascha Wildner 				case 0:
56*4318c66eSSascha Wildner 					printf("She squirms and avoids your ");
57*4318c66eSSascha Wildner 					puts("advances.");
58937f07e0SSascha Wildner 					break;
59937f07e0SSascha Wildner 				case 1:
60*4318c66eSSascha Wildner 					puts("She is coming around; she ");
61*4318c66eSSascha Wildner 					puts("didn't fight it as much.");
62937f07e0SSascha Wildner 					break;
63937f07e0SSascha Wildner 				case 2:
64937f07e0SSascha Wildner 					puts("She's beginning to like it.");
65937f07e0SSascha Wildner 					break;
66937f07e0SSascha Wildner 				default:
67937f07e0SSascha Wildner 					puts("She's gone limp.");
68937f07e0SSascha Wildner 
69937f07e0SSascha Wildner 				}
70937f07e0SSascha Wildner 				break;
71937f07e0SSascha Wildner 			case NATIVE:
72*4318c66eSSascha Wildner 				printf("Her lips are warm and her body ");
73*4318c66eSSascha Wildner 				printf("robust.  She pulls you down to ");
74*4318c66eSSascha Wildner 				puts("the ground.");
75937f07e0SSascha Wildner 				break;
76937f07e0SSascha Wildner 			case TIMER:
77937f07e0SSascha Wildner 				puts("The old man blushes.");
78937f07e0SSascha Wildner 				break;
79937f07e0SSascha Wildner 			case MAN:
80937f07e0SSascha Wildner 				puts("The dwarf punches you in the kneecap.");
81937f07e0SSascha Wildner 				break;
82937f07e0SSascha Wildner 			default:
83937f07e0SSascha Wildner 				pleasure--;
84937f07e0SSascha Wildner 			}
85937f07e0SSascha Wildner 		} else
86*4318c66eSSascha Wildner 			puts("I see nothing like that here.");
87*4318c66eSSascha Wildner 	} else
88937f07e0SSascha Wildner 		puts("I'd prefer not to.");
89937f07e0SSascha Wildner }
90937f07e0SSascha Wildner 
91937f07e0SSascha Wildner void
love(void)92937f07e0SSascha Wildner love(void)
93937f07e0SSascha Wildner {
94937f07e0SSascha Wildner 	int     n;
95937f07e0SSascha Wildner 
96937f07e0SSascha Wildner 	while (wordtype[++wordnumber] != NOUNS && wordnumber <= wordcount)
97*4318c66eSSascha Wildner 		continue;
98*4318c66eSSascha Wildner 	if (wordtype[wordnumber] == NOUNS) {
99*4318c66eSSascha Wildner 		if ((testbit(location[position].objects, BATHGOD) ||
100*4318c66eSSascha Wildner 		    testbit(location[position].objects, NORMGOD)) &&
101*4318c66eSSascha Wildner 		    wordvalue[wordnumber] == NORMGOD) {
102*4318c66eSSascha Wildner 			if (loved) {
103*4318c66eSSascha Wildner 				printf("Loved.\n");
104*4318c66eSSascha Wildner 				return;
105*4318c66eSSascha Wildner 			}
106937f07e0SSascha Wildner 			if (godready >= 2) {
107*4318c66eSSascha Wildner 				printf("She cuddles up to you, and her mouth ");
108*4318c66eSSascha Wildner 				printf("starts to work:\n'That was my ");
109*4318c66eSSascha Wildner 				printf("sister's amulet.  The lovely ");
110*4318c66eSSascha Wildner 				printf("goddess, Purl, was she.  The Empire\n");
111*4318c66eSSascha Wildner 				printf("captured her just after the Darkness ");
112*4318c66eSSascha Wildner 				printf("came.  My other sister, Vert, was ");
113*4318c66eSSascha Wildner 				printf("killed\nby the Dark Lord himself.  ");
114*4318c66eSSascha Wildner 				printf("He took her amulet and warped its ");
115*4318c66eSSascha Wildner 				printf("power.\nYour quest was foretold by ");
116*4318c66eSSascha Wildner 				printf("my father before he died, but to get ");
117*4318c66eSSascha Wildner 				printf("the Dark Lord's\namulet you must use ");
118*4318c66eSSascha Wildner 				printf("cunning and skill.  I will leave you ");
119*4318c66eSSascha Wildner 				puts("my amulet,");
120*4318c66eSSascha Wildner 				printf("which you may use as you wish.  As ");
121*4318c66eSSascha Wildner 				printf("for me, I am the last goddess of ");
122*4318c66eSSascha Wildner 				printf("the\nwaters.  My father was the ");
123*4318c66eSSascha Wildner 				printf("Island King, and the rule is ");
124*4318c66eSSascha Wildner 				printf("rightfully mine.'\n\nShe pulls the ");
125*4318c66eSSascha Wildner 				puts("throne out into a large bed.");
126937f07e0SSascha Wildner 				power++;
127937f07e0SSascha Wildner 				pleasure += 15;
128937f07e0SSascha Wildner 				ego++;
129937f07e0SSascha Wildner 				if (card(injuries, NUMOFINJURIES)) {
130*4318c66eSSascha Wildner 					printf("Her kisses revive you; your ");
131*4318c66eSSascha Wildner 					printf("wounds are healed.\n");
132937f07e0SSascha Wildner 					for (n = 0; n < NUMOFINJURIES; n++)
133937f07e0SSascha Wildner 						injuries[n] = 0;
134937f07e0SSascha Wildner 					WEIGHT = MAXWEIGHT;
135937f07e0SSascha Wildner 					CUMBER = MAXCUMBER;
136937f07e0SSascha Wildner 				}
137937f07e0SSascha Wildner 				printf("Goddess:\n");
138937f07e0SSascha Wildner 				if (!loved)
139*4318c66eSSascha Wildner 					setbit(location[position].objects,
140*4318c66eSSascha Wildner 					    MEDALION);
141937f07e0SSascha Wildner 				loved = 1;
142*4318c66eSSascha Wildner 				ourtime += 10;
143*4318c66eSSascha Wildner 				printf("Loved.\n");
144937f07e0SSascha Wildner 				zzz();
145*4318c66eSSascha Wildner 				return;
146937f07e0SSascha Wildner 			} else {
147937f07e0SSascha Wildner 				puts("You wish!");
148937f07e0SSascha Wildner 				return;
149937f07e0SSascha Wildner 			}
150937f07e0SSascha Wildner 		}
151*4318c66eSSascha Wildner 		if (testbit(location[position].objects,
152*4318c66eSSascha Wildner 		    wordvalue[wordnumber])) {
153937f07e0SSascha Wildner 			if (wordvalue[wordnumber] == NATIVE) {
154*4318c66eSSascha Wildner 				printf("The girl is easy prey.  She peels ");
155*4318c66eSSascha Wildner 				puts("off her sarong and indulges you.");
156937f07e0SSascha Wildner 				power++;
157937f07e0SSascha Wildner 				pleasure += 5;
158937f07e0SSascha Wildner 				printf("Girl:\n");
159*4318c66eSSascha Wildner 				ourtime += 10;
160*4318c66eSSascha Wildner 				printf("Loved.\n");
161937f07e0SSascha Wildner 				zzz();
162937f07e0SSascha Wildner 			}
163*4318c66eSSascha Wildner 			if (wordvalue[wordnumber] == MAN ||
164*4318c66eSSascha Wildner 			    wordvalue[wordnumber] == BODY ||
165*4318c66eSSascha Wildner 			    wordvalue[wordnumber] == ELF ||
166*4318c66eSSascha Wildner 			    wordvalue[wordnumber] == TIMER)
167*4318c66eSSascha Wildner 				puts("Kinky!");
168*4318c66eSSascha Wildner 			else
169*4318c66eSSascha Wildner 				puts("It doesn't seem to work.");
170937f07e0SSascha Wildner 		} else
171*4318c66eSSascha Wildner 			puts("Where's your lover?");
172*4318c66eSSascha Wildner 	} else
173*4318c66eSSascha Wildner 		puts("It doesn't seem to work.");
174937f07e0SSascha Wildner }
175937f07e0SSascha Wildner 
176937f07e0SSascha Wildner int
zzz(void)177937f07e0SSascha Wildner zzz(void)
178937f07e0SSascha Wildner {
179937f07e0SSascha Wildner 	int     oldtime;
180937f07e0SSascha Wildner 	int     n;
181*4318c66eSSascha Wildner 	int zzztime;
182937f07e0SSascha Wildner 
183*4318c66eSSascha Wildner 	zzztime = (3 * CYCLE) / 4;
184*4318c66eSSascha Wildner 
185*4318c66eSSascha Wildner 	oldtime = ourtime;
186*4318c66eSSascha Wildner 	if ((snooze - ourtime) < zzztime) {
187*4318c66eSSascha Wildner 		ourtime += zzztime - (snooze - ourtime);
188937f07e0SSascha Wildner 		printf("<zzz>");
189*4318c66eSSascha Wildner 		for (n = 0; n < ourtime - oldtime; n++)
190937f07e0SSascha Wildner 			printf(".");
191937f07e0SSascha Wildner 		printf("\n");
192*4318c66eSSascha Wildner 		snooze += 3 * (ourtime - oldtime);
193937f07e0SSascha Wildner 		if (notes[LAUNCHED]) {
194*4318c66eSSascha Wildner 			fuel -= (ourtime - oldtime);
195937f07e0SSascha Wildner 			if (location[position].down) {
196937f07e0SSascha Wildner 				position = location[position].down;
197937f07e0SSascha Wildner 				crash();
198937f07e0SSascha Wildner 			} else
199937f07e0SSascha Wildner 				notes[LAUNCHED] = 0;
200937f07e0SSascha Wildner 		}
201937f07e0SSascha Wildner 		if (OUTSIDE && rnd(100) < 50) {
202*4318c66eSSascha Wildner 			printf("You are awakened abruptly by the sound ");
203*4318c66eSSascha Wildner 			puts("of someone nearby.");
204937f07e0SSascha Wildner 			switch (rnd(4)) {
205937f07e0SSascha Wildner 			case 0:
206937f07e0SSascha Wildner 				if (ucard(inven)) {
207937f07e0SSascha Wildner 					n = rnd(NUMOFOBJECTS);
208937f07e0SSascha Wildner 					while (!testbit(inven, n))
209937f07e0SSascha Wildner 						n = rnd(NUMOFOBJECTS);
210937f07e0SSascha Wildner 					clearbit(inven, n);
211937f07e0SSascha Wildner 					if (n != AMULET && n != MEDALION &&
212937f07e0SSascha Wildner 					    n != TALISMAN)
213*4318c66eSSascha Wildner 						setbit(
214*4318c66eSSascha Wildner 						    location[position].objects,
215*4318c66eSSascha Wildner 						    n);
216937f07e0SSascha Wildner 					carrying -= objwt[n];
217937f07e0SSascha Wildner 					encumber -= objcumber[n];
218937f07e0SSascha Wildner 				}
219*4318c66eSSascha Wildner 				printf("A fiendish little Elf is stealing ");
220*4318c66eSSascha Wildner 				puts("your treasures!");
221937f07e0SSascha Wildner 				fight(ELF, 10);
222937f07e0SSascha Wildner 				break;
223937f07e0SSascha Wildner 			case 1:
224937f07e0SSascha Wildner 				setbit(location[position].objects, DEADWOOD);
225937f07e0SSascha Wildner 				break;
226937f07e0SSascha Wildner 			case 2:
227937f07e0SSascha Wildner 				setbit(location[position].objects, HALBERD);
228937f07e0SSascha Wildner 				break;
229937f07e0SSascha Wildner 			default:
230937f07e0SSascha Wildner 				break;
231937f07e0SSascha Wildner 			}
232937f07e0SSascha Wildner 		}
233937f07e0SSascha Wildner 	} else
234937f07e0SSascha Wildner 		return (0);
235937f07e0SSascha Wildner 	return (1);
236937f07e0SSascha Wildner }
237937f07e0SSascha Wildner 
238937f07e0SSascha Wildner void
chime(void)239937f07e0SSascha Wildner chime(void)
240937f07e0SSascha Wildner {
241*4318c66eSSascha Wildner 	if ((ourtime / CYCLE + 1) % 2 && OUTSIDE)
242*4318c66eSSascha Wildner 		switch ((ourtime % CYCLE) / (CYCLE / 7)) {
243937f07e0SSascha Wildner 		case 0:
244937f07e0SSascha Wildner 			puts("It is just after sunrise.");
245937f07e0SSascha Wildner 			break;
246937f07e0SSascha Wildner 		case 1:
247937f07e0SSascha Wildner 			puts("It is early morning.");
248937f07e0SSascha Wildner 			break;
249937f07e0SSascha Wildner 		case 2:
250937f07e0SSascha Wildner 			puts("It is late morning.");
251937f07e0SSascha Wildner 			break;
252937f07e0SSascha Wildner 		case 3:
253937f07e0SSascha Wildner 			puts("It is near noon.");
254937f07e0SSascha Wildner 			break;
255937f07e0SSascha Wildner 		case 4:
256937f07e0SSascha Wildner 			puts("It is early afternoon.");
257937f07e0SSascha Wildner 			break;
258937f07e0SSascha Wildner 		case 5:
259937f07e0SSascha Wildner 			puts("It is late afternoon.");
260937f07e0SSascha Wildner 			break;
261937f07e0SSascha Wildner 		case 6:
262937f07e0SSascha Wildner 			puts("It is near sunset.");
263937f07e0SSascha Wildner 			break;
264937f07e0SSascha Wildner 		}
265937f07e0SSascha Wildner 	else if (OUTSIDE)
266*4318c66eSSascha Wildner 		switch ((ourtime % CYCLE) / (CYCLE / 7)) {
267937f07e0SSascha Wildner 		case 0:
268937f07e0SSascha Wildner 			puts("It is just after sunset.");
269937f07e0SSascha Wildner 			break;
270937f07e0SSascha Wildner 		case 1:
271937f07e0SSascha Wildner 			puts("It is early evening.");
272937f07e0SSascha Wildner 			break;
273937f07e0SSascha Wildner 		case 2:
274937f07e0SSascha Wildner 			puts("The evening is getting old.");
275937f07e0SSascha Wildner 			break;
276937f07e0SSascha Wildner 		case 3:
277937f07e0SSascha Wildner 			puts("It is near midnight.");
278937f07e0SSascha Wildner 			break;
279937f07e0SSascha Wildner 		case 4:
280937f07e0SSascha Wildner 			puts("These are the wee hours of the morning.");
281937f07e0SSascha Wildner 			break;
282937f07e0SSascha Wildner 		case 5:
283937f07e0SSascha Wildner 			puts("The night is waning.");
284937f07e0SSascha Wildner 			break;
285937f07e0SSascha Wildner 		case 6:
286937f07e0SSascha Wildner 			puts("It is almost morning.");
287937f07e0SSascha Wildner 			break;
288937f07e0SSascha Wildner 		}
289937f07e0SSascha Wildner 	else
290937f07e0SSascha Wildner 		puts("I can't tell the time in here.");
291937f07e0SSascha Wildner }
292937f07e0SSascha Wildner 
293937f07e0SSascha Wildner int
give(void)294937f07e0SSascha Wildner give(void)
295937f07e0SSascha Wildner {
296*4318c66eSSascha Wildner 	int     obj = -1, result = -1, person = 0, firstnumber, last1, last2;
297937f07e0SSascha Wildner 
298*4318c66eSSascha Wildner 	last1 = last2 = 0;
299937f07e0SSascha Wildner 	firstnumber = wordnumber;
300937f07e0SSascha Wildner 	while (wordtype[++wordnumber] != OBJECT &&
301937f07e0SSascha Wildner 	    wordvalue[wordnumber] != AMULET &&
302937f07e0SSascha Wildner 	    wordvalue[wordnumber] != MEDALION &&
303937f07e0SSascha Wildner 	    wordvalue[wordnumber] != TALISMAN && wordnumber <= wordcount)
304*4318c66eSSascha Wildner 		continue;
305937f07e0SSascha Wildner 	if (wordnumber <= wordcount) {
306937f07e0SSascha Wildner 		obj = wordvalue[wordnumber];
307937f07e0SSascha Wildner 		if (obj == EVERYTHING)
308937f07e0SSascha Wildner 			wordtype[wordnumber] = -1;
309937f07e0SSascha Wildner 		last1 = wordnumber;
310937f07e0SSascha Wildner 	}
311937f07e0SSascha Wildner 	wordnumber = firstnumber;
312937f07e0SSascha Wildner 	while ((wordtype[++wordnumber] != NOUNS ||
313*4318c66eSSascha Wildner 	    wordvalue[wordnumber] == obj) && wordnumber <= wordcount);
314937f07e0SSascha Wildner 	if (wordtype[wordnumber] == NOUNS) {
315937f07e0SSascha Wildner 		person = wordvalue[wordnumber];
316937f07e0SSascha Wildner 		last2 = wordnumber;
317937f07e0SSascha Wildner 	}
318937f07e0SSascha Wildner 	/* Setting wordnumber to last1 - 1 looks wrong if last1 is 0, e.g.,
319937f07e0SSascha Wildner 	 * plain `give'.  However, detecting this case is liable to detect
320937f07e0SSascha Wildner 	 * `give foo' as well, which would give a confusing error.  We
321937f07e0SSascha Wildner 	 * need to make sure the -1 value can cause no problems if it arises.
322937f07e0SSascha Wildner 	 * If in the below we get to the drop("Given") then drop will look
323937f07e0SSascha Wildner 	 * at word 0 for an object to give, and fail, which is OK; then
324937f07e0SSascha Wildner 	 * result will be -1 and we get to the end, where wordnumber gets
325937f07e0SSascha Wildner 	 * set to something more sensible.  If we get to "I don't think
326937f07e0SSascha Wildner 	 * that is possible" then again wordnumber is set to something
327937f07e0SSascha Wildner 	 * sensible.  The wordnumber we leave with still isn't right if
328937f07e0SSascha Wildner 	 * you include words the game doesn't know in your command, but
329937f07e0SSascha Wildner 	 * that's no worse than what other commands than give do in
330937f07e0SSascha Wildner 	 * the same place.  */
331937f07e0SSascha Wildner 	wordnumber = last1 - 1;
332937f07e0SSascha Wildner 	if (person && testbit(location[position].objects, person)) {
333937f07e0SSascha Wildner 		if (person == NORMGOD && godready < 2 &&
334937f07e0SSascha Wildner 		    !(obj == RING || obj == BRACELET))
335937f07e0SSascha Wildner 			puts("The goddess won't look at you.");
336937f07e0SSascha Wildner 		else
337937f07e0SSascha Wildner 			result = drop("Given");
338937f07e0SSascha Wildner 	} else {
339937f07e0SSascha Wildner 		puts("I don't think that is possible.");
340937f07e0SSascha Wildner 		wordnumber = max(last1, last2) + 1;
341937f07e0SSascha Wildner 		return (0);
342937f07e0SSascha Wildner 	}
343937f07e0SSascha Wildner 	if (result != -1 && (testbit(location[position].objects, obj) ||
344937f07e0SSascha Wildner 	    obj == AMULET || obj == MEDALION || obj == TALISMAN)) {
345937f07e0SSascha Wildner 		clearbit(location[position].objects, obj);
346*4318c66eSSascha Wildner 		ourtime++;
347937f07e0SSascha Wildner 		ego++;
348937f07e0SSascha Wildner 		switch (person) {
349937f07e0SSascha Wildner 		case NATIVE:
350937f07e0SSascha Wildner 			puts("She accepts it shyly.");
351937f07e0SSascha Wildner 			ego += 2;
352937f07e0SSascha Wildner 			break;
353937f07e0SSascha Wildner 		case NORMGOD:
354937f07e0SSascha Wildner 			if (obj == RING || obj == BRACELET) {
355*4318c66eSSascha Wildner 				printf("She takes the charm and puts it on.");
356*4318c66eSSascha Wildner 				puts("  A little kiss on the cheek is");
357937f07e0SSascha Wildner 				puts("your reward.");
358937f07e0SSascha Wildner 				ego += 5;
359937f07e0SSascha Wildner 				godready += 3;
360937f07e0SSascha Wildner 			}
361937f07e0SSascha Wildner 			if (obj == AMULET || obj == MEDALION ||
362937f07e0SSascha Wildner 			    obj == TALISMAN) {
363*4318c66eSSascha Wildner 				win++;
364937f07e0SSascha Wildner 				ego += 5;
365937f07e0SSascha Wildner 				power -= 5;
366*4318c66eSSascha Wildner 				if (win >= 3) {
367*4318c66eSSascha Wildner 					printf("The powers of the earth are ");
368*4318c66eSSascha Wildner 					printf("now legitimate.  You have ");
369*4318c66eSSascha Wildner 					puts("destroyed the Darkness");
370*4318c66eSSascha Wildner 					printf("and restored the goddess to ");
371*4318c66eSSascha Wildner 					printf("her throne.  The entire ");
372*4318c66eSSascha Wildner 					puts("island celebrates with");
373*4318c66eSSascha Wildner 					printf("dancing and spring feasts.  ");
374*4318c66eSSascha Wildner 					printf("As a measure of her ");
375*4318c66eSSascha Wildner 					puts("gratitude, the goddess weds you");
376*4318c66eSSascha Wildner 					printf("in the late summer and ");
377*4318c66eSSascha Wildner 					printf("crowns you Prince Liverwort, ");
378*4318c66eSSascha Wildner 					puts("Lord of Fungus.");
379*4318c66eSSascha Wildner 					printf("\nBut, as the year wears on ");
380*4318c66eSSascha Wildner 					printf("and autumn comes along, you ");
381*4318c66eSSascha Wildner 					puts("become restless and");
382*4318c66eSSascha Wildner 					printf("yearn for adventure.  The ");
383*4318c66eSSascha Wildner 					printf("goddess, too, realizes that ");
384*4318c66eSSascha Wildner 					puts("the marriage can't last.");
385*4318c66eSSascha Wildner 					printf("She becomes bored and takes ");
386*4318c66eSSascha Wildner 					printf("several more natives as ");
387*4318c66eSSascha Wildner 					puts("husbands.  One evening,");
388*4318c66eSSascha Wildner 					printf("after having been out ");
389*4318c66eSSascha Wildner 					printf("drinking with the girls, she ");
390*4318c66eSSascha Wildner 					puts("kicks the throne particularly");
391*4318c66eSSascha Wildner 					printf("hard and wakes you up.  (If ");
392*4318c66eSSascha Wildner 					printf("you want to win this game, ");
393*4318c66eSSascha Wildner 					printf("you're going to have to\n");
394*4318c66eSSascha Wildner 					puts("shoot her!)");
395*4318c66eSSascha Wildner 					clearbit(location[position].objects,
396*4318c66eSSascha Wildner 					    MEDALION);
397*4318c66eSSascha Wildner 					wintime = ourtime;
398937f07e0SSascha Wildner 				}
399937f07e0SSascha Wildner 			}
400937f07e0SSascha Wildner 			break;
401937f07e0SSascha Wildner 		case TIMER:
402937f07e0SSascha Wildner 			if (obj == COINS) {
403*4318c66eSSascha Wildner 				printf("He fingers the coins for a moment ");
404*4318c66eSSascha Wildner 				printf("and then looks up agape.  `Kind you ");
405*4318c66eSSascha Wildner 				puts("are and");
406*4318c66eSSascha Wildner 				printf("I mean to repay you as best I can.'  ");
407*4318c66eSSascha Wildner 				printf("Grabbing a pencil and cocktail ");
408*4318c66eSSascha Wildner 				puts("napkin...\n");
409*4318c66eSSascha Wildner 				printf("+-----------------------------------");
410*4318c66eSSascha Wildner 				printf("------------------------------------");
411*4318c66eSSascha Wildner 				printf("------+\n");
412937f07e0SSascha Wildner 				printf("|				   xxxxxxxx\\				      |\n");
413937f07e0SSascha Wildner 				printf("|				       xxxxx\\	CLIFFS			      |\n");
414937f07e0SSascha Wildner 				printf("|		FOREST			  xxx\\				      |\n");
415937f07e0SSascha Wildner 				printf("|				\\\\	     x\\        	OCEAN		      |\n");
416937f07e0SSascha Wildner 				printf("|				||	       x\\			      |\n");
417937f07e0SSascha Wildner 				printf("|				||  ROAD	x\\			      |\n");
418937f07e0SSascha Wildner 				printf("|				||		x\\			      |\n");
419937f07e0SSascha Wildner 				printf("|		SECRET		||	  .........			      |\n");
420937f07e0SSascha Wildner 				printf("|		 - + -		||	   ........			      |\n");
421937f07e0SSascha Wildner 				printf("|		ENTRANCE	||		...      BEACH		      |\n");
422937f07e0SSascha Wildner 				printf("|				||		...		  E	      |\n");
423937f07e0SSascha Wildner 				printf("|				||		...		  |	      |\n");
424937f07e0SSascha Wildner 				printf("|				//		...	    N <-- + --- S     |\n");
425937f07e0SSascha Wildner 				printf("|		PALM GROVE     //		...		  |	      |\n");
426937f07e0SSascha Wildner 				printf("|			      //		...		  W	      |\n");
427*4318c66eSSascha Wildner 				printf("+");
428*4318c66eSSascha Wildner 				printf("---------------------------------");
429*4318c66eSSascha Wildner 				printf("---------------------------------");
430*4318c66eSSascha Wildner 				printf("-----------+\n");
431*4318c66eSSascha Wildner 				printf("\n`This map shows a secret entrance ");
432*4318c66eSSascha Wildner 				puts("to the catacombs.");
433*4318c66eSSascha Wildner 				printf("You will know when you arrive ");
434*4318c66eSSascha Wildner 				printf("because I left an old pair of shoes ");
435*4318c66eSSascha Wildner 				puts("there.'");
436937f07e0SSascha Wildner 			}
437937f07e0SSascha Wildner 			break;
438937f07e0SSascha Wildner 		}
439937f07e0SSascha Wildner 	}
440937f07e0SSascha Wildner 	wordnumber = max(last1, last2) + 1;
441937f07e0SSascha Wildner 	return (firstnumber);
442937f07e0SSascha Wildner }
443