xref: /dflybsd-src/games/larn/moreobj.c (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
1*86d7f5d3SJohn Marino /* moreobj.c 		Larn is copyrighted 1986 by Noah Morgan.
2*86d7f5d3SJohn Marino  * $FreeBSD: src/games/larn/moreobj.c,v 1.4 1999/11/16 02:57:22 billf Exp $
3*86d7f5d3SJohn Marino  * $DragonFly: src/games/larn/moreobj.c,v 1.3 2006/08/26 17:05:05 pavalos Exp $
4*86d7f5d3SJohn Marino  *
5*86d7f5d3SJohn Marino  *	Routines in this file:
6*86d7f5d3SJohn Marino  *
7*86d7f5d3SJohn Marino  *	oaltar()
8*86d7f5d3SJohn Marino  *	othrone()
9*86d7f5d3SJohn Marino  *	ochest()
10*86d7f5d3SJohn Marino  *	ofountain()
11*86d7f5d3SJohn Marino  */
12*86d7f5d3SJohn Marino #include "header.h"
13*86d7f5d3SJohn Marino 
14*86d7f5d3SJohn Marino static void ohear(void);
15*86d7f5d3SJohn Marino static void fch(int, long *);
16*86d7f5d3SJohn Marino static void fntchange(int);
17*86d7f5d3SJohn Marino 
18*86d7f5d3SJohn Marino /*
19*86d7f5d3SJohn Marino  *	subroutine to process an altar object
20*86d7f5d3SJohn Marino  */
21*86d7f5d3SJohn Marino void
oaltar(void)22*86d7f5d3SJohn Marino oaltar(void)
23*86d7f5d3SJohn Marino {
24*86d7f5d3SJohn Marino 	unsigned long k;
25*86d7f5d3SJohn Marino 
26*86d7f5d3SJohn Marino 	lprcat("\nDo you (p) pray  (d) desecrate");
27*86d7f5d3SJohn Marino 	iopts();
28*86d7f5d3SJohn Marino 	while (1) {
29*86d7f5d3SJohn Marino 		while (1)
30*86d7f5d3SJohn Marino 			switch (getchr()) {
31*86d7f5d3SJohn Marino 			case 'p':
32*86d7f5d3SJohn Marino 				lprcat(" pray\nDo you (m) give money or (j) just pray? ");
33*86d7f5d3SJohn Marino 				while (1)
34*86d7f5d3SJohn Marino 					switch (getchr()) {
35*86d7f5d3SJohn Marino 					case 'j':
36*86d7f5d3SJohn Marino 						if (rnd(100) < 75)
37*86d7f5d3SJohn Marino 							lprcat("\nnothing happens");
38*86d7f5d3SJohn Marino 						else if (rnd(13) < 4)
39*86d7f5d3SJohn Marino 							ohear();
40*86d7f5d3SJohn Marino 						else if (rnd(43) == 10) {
41*86d7f5d3SJohn Marino 							if (c[WEAR])
42*86d7f5d3SJohn Marino 								lprcat("\nYou feel your armor vibrate for a moment");
43*86d7f5d3SJohn Marino 							enchantarmor();
44*86d7f5d3SJohn Marino 							return;
45*86d7f5d3SJohn Marino 						} else if (rnd(43) == 10) {
46*86d7f5d3SJohn Marino 							if (c[WIELD])
47*86d7f5d3SJohn Marino 								lprcat("\nYou feel your weapon vibrate for a moment");
48*86d7f5d3SJohn Marino 							enchweapon();
49*86d7f5d3SJohn Marino 							return;
50*86d7f5d3SJohn Marino 						} else
51*86d7f5d3SJohn Marino 							createmonster(makemonst(level + 1));
52*86d7f5d3SJohn Marino 						return;
53*86d7f5d3SJohn Marino 
54*86d7f5d3SJohn Marino 					case 'm':
55*86d7f5d3SJohn Marino 						lprcat("\n\n");
56*86d7f5d3SJohn Marino 						cursor(1, 24);
57*86d7f5d3SJohn Marino 						cltoeoln();
58*86d7f5d3SJohn Marino 						cursor(1, 23);
59*86d7f5d3SJohn Marino 						cltoeoln();
60*86d7f5d3SJohn Marino 						lprcat("how much do you donate? ");
61*86d7f5d3SJohn Marino 						k = readnum((long)c[GOLD]);
62*86d7f5d3SJohn Marino 						if (c[GOLD] < (long)k) {
63*86d7f5d3SJohn Marino 							lprcat("\nYou don't have that much!");
64*86d7f5d3SJohn Marino 							return;
65*86d7f5d3SJohn Marino 						}
66*86d7f5d3SJohn Marino 						c[GOLD] -= k;
67*86d7f5d3SJohn Marino 						if ((long)k < c[GOLD] / 10 || (long)k < rnd(50)) {
68*86d7f5d3SJohn Marino 							createmonster(makemonst(level + 1));
69*86d7f5d3SJohn Marino 							c[AGGRAVATE] += 200;
70*86d7f5d3SJohn Marino 						} else if (rnd(101) > 50) {
71*86d7f5d3SJohn Marino 							ohear();
72*86d7f5d3SJohn Marino 							return;
73*86d7f5d3SJohn Marino 						} else if (rnd(43) == 5) {
74*86d7f5d3SJohn Marino 							if (c[WEAR])
75*86d7f5d3SJohn Marino 								lprcat("\nYou feel your armor vibrate for a moment");
76*86d7f5d3SJohn Marino 							enchantarmor();
77*86d7f5d3SJohn Marino 							return;
78*86d7f5d3SJohn Marino 						} else if (rnd(43) == 8) {
79*86d7f5d3SJohn Marino 							if (c[WIELD])
80*86d7f5d3SJohn Marino 								lprcat("\nYou feel your weapon vibrate for a moment");
81*86d7f5d3SJohn Marino 							enchweapon();
82*86d7f5d3SJohn Marino 							return;
83*86d7f5d3SJohn Marino 						} else
84*86d7f5d3SJohn Marino 							lprcat("\nThank You.");
85*86d7f5d3SJohn Marino 						bottomline();
86*86d7f5d3SJohn Marino 						return;
87*86d7f5d3SJohn Marino 
88*86d7f5d3SJohn Marino 					case '\33':
89*86d7f5d3SJohn Marino 						return;
90*86d7f5d3SJohn Marino 					}
91*86d7f5d3SJohn Marino 
92*86d7f5d3SJohn Marino 			case 'd':
93*86d7f5d3SJohn Marino 				lprcat(" desecrate");
94*86d7f5d3SJohn Marino 				if (rnd(100) < 60) {
95*86d7f5d3SJohn Marino 					createmonster(makemonst(level + 2) + 8);
96*86d7f5d3SJohn Marino 					c[AGGRAVATE] += 2500;
97*86d7f5d3SJohn Marino 				} else if (rnd(101) < 30) {
98*86d7f5d3SJohn Marino 					lprcat("\nThe altar crumbles into a pile of dust before your eyes");
99*86d7f5d3SJohn Marino 					forget();               /* remember to destroy the altar */
100*86d7f5d3SJohn Marino 				} else
101*86d7f5d3SJohn Marino 					lprcat("\nnothing happens");
102*86d7f5d3SJohn Marino 				return;
103*86d7f5d3SJohn Marino 
104*86d7f5d3SJohn Marino 			case 'i':
105*86d7f5d3SJohn Marino 			case '\33':
106*86d7f5d3SJohn Marino 				ignore();
107*86d7f5d3SJohn Marino 				if (rnd(100) < 30) {
108*86d7f5d3SJohn Marino 					createmonster(makemonst(level + 1));
109*86d7f5d3SJohn Marino 					c[AGGRAVATE] += rnd(450);
110*86d7f5d3SJohn Marino 				} else
111*86d7f5d3SJohn Marino 					lprcat("\nnothing happens");
112*86d7f5d3SJohn Marino 				return;
113*86d7f5d3SJohn Marino 			}
114*86d7f5d3SJohn Marino 	}
115*86d7f5d3SJohn Marino }
116*86d7f5d3SJohn Marino 
117*86d7f5d3SJohn Marino /*
118*86d7f5d3SJohn Marino 	function to cast a +3 protection on the player
119*86d7f5d3SJohn Marino  */
120*86d7f5d3SJohn Marino static void
ohear(void)121*86d7f5d3SJohn Marino ohear(void)
122*86d7f5d3SJohn Marino {
123*86d7f5d3SJohn Marino 	lprcat("\nYou have been heard!");
124*86d7f5d3SJohn Marino 	if (c[ALTPRO] == 0)
125*86d7f5d3SJohn Marino 		c[MOREDEFENSES] += 3;
126*86d7f5d3SJohn Marino 	c[ALTPRO] += 500;	/* protection field */
127*86d7f5d3SJohn Marino 	bottomline();
128*86d7f5d3SJohn Marino }
129*86d7f5d3SJohn Marino 
130*86d7f5d3SJohn Marino /*
131*86d7f5d3SJohn Marino 	subroutine to process a throne object
132*86d7f5d3SJohn Marino  */
133*86d7f5d3SJohn Marino void
othrone(int arg)134*86d7f5d3SJohn Marino othrone(int arg)
135*86d7f5d3SJohn Marino {
136*86d7f5d3SJohn Marino 	int i, k;
137*86d7f5d3SJohn Marino 
138*86d7f5d3SJohn Marino 	lprcat("\nDo you (p) pry off jewels, (s) sit down");
139*86d7f5d3SJohn Marino 	iopts();
140*86d7f5d3SJohn Marino 	while (1) {
141*86d7f5d3SJohn Marino 		while (1)
142*86d7f5d3SJohn Marino 			switch (getchr()) {
143*86d7f5d3SJohn Marino 			case 'p':
144*86d7f5d3SJohn Marino 				lprcat(" pry off");
145*86d7f5d3SJohn Marino 				k = rnd(101);
146*86d7f5d3SJohn Marino 				if (k < 25) {
147*86d7f5d3SJohn Marino 					for (i = 0; i < rnd(4); i++)
148*86d7f5d3SJohn Marino 						creategem();	/* gems pop off the throne */
149*86d7f5d3SJohn Marino 					item[playerx][playery] = ODEADTHRONE;
150*86d7f5d3SJohn Marino 					know[playerx][playery] = 0;
151*86d7f5d3SJohn Marino 				} else if (k < 40 && arg == 0) {
152*86d7f5d3SJohn Marino 					createmonster(GNOMEKING);
153*86d7f5d3SJohn Marino 					item[playerx][playery] = OTHRONE2;
154*86d7f5d3SJohn Marino 					know[playerx][playery] = 0;
155*86d7f5d3SJohn Marino 				} else
156*86d7f5d3SJohn Marino 					lprcat("\nnothing happens");
157*86d7f5d3SJohn Marino 				return;
158*86d7f5d3SJohn Marino 
159*86d7f5d3SJohn Marino 			case 's':
160*86d7f5d3SJohn Marino 				lprcat(" sit down");
161*86d7f5d3SJohn Marino 				k = rnd(101);
162*86d7f5d3SJohn Marino 				if (k < 30 && arg == 0) {
163*86d7f5d3SJohn Marino 					createmonster(GNOMEKING);
164*86d7f5d3SJohn Marino 					item[playerx][playery] = OTHRONE2;
165*86d7f5d3SJohn Marino 					know[playerx][playery] = 0;
166*86d7f5d3SJohn Marino 				} else if (k < 35)             {
167*86d7f5d3SJohn Marino 					lprcat("\nZaaaappp!  You've been teleported!\n");
168*86d7f5d3SJohn Marino 					beep();
169*86d7f5d3SJohn Marino 					oteleport(0);
170*86d7f5d3SJohn Marino 				} else
171*86d7f5d3SJohn Marino 					lprcat("\nnothing happens");
172*86d7f5d3SJohn Marino 				return;
173*86d7f5d3SJohn Marino 
174*86d7f5d3SJohn Marino 			case 'i':
175*86d7f5d3SJohn Marino 			case '\33':
176*86d7f5d3SJohn Marino 				ignore();
177*86d7f5d3SJohn Marino 				return;
178*86d7f5d3SJohn Marino 			}
179*86d7f5d3SJohn Marino 	}
180*86d7f5d3SJohn Marino }
181*86d7f5d3SJohn Marino 
182*86d7f5d3SJohn Marino void
odeadthrone(void)183*86d7f5d3SJohn Marino odeadthrone(void)
184*86d7f5d3SJohn Marino {
185*86d7f5d3SJohn Marino 	int k;
186*86d7f5d3SJohn Marino 
187*86d7f5d3SJohn Marino 	lprcat("\nDo you (s) sit down");
188*86d7f5d3SJohn Marino 	iopts();
189*86d7f5d3SJohn Marino 	while (1) {
190*86d7f5d3SJohn Marino 		while (1)
191*86d7f5d3SJohn Marino 			switch (getchr()) {
192*86d7f5d3SJohn Marino 			case 's':
193*86d7f5d3SJohn Marino 				lprcat(" sit down");
194*86d7f5d3SJohn Marino 				k = rnd(101);
195*86d7f5d3SJohn Marino 				if (k < 35) {
196*86d7f5d3SJohn Marino 					lprcat("\nZaaaappp!  You've been teleported!\n");
197*86d7f5d3SJohn Marino 					beep();
198*86d7f5d3SJohn Marino 					oteleport(0);
199*86d7f5d3SJohn Marino 				} else
200*86d7f5d3SJohn Marino 					lprcat("\nnothing happens");
201*86d7f5d3SJohn Marino 				return;
202*86d7f5d3SJohn Marino 
203*86d7f5d3SJohn Marino 			case 'i':
204*86d7f5d3SJohn Marino 			case '\33':
205*86d7f5d3SJohn Marino 				ignore();
206*86d7f5d3SJohn Marino 				return;
207*86d7f5d3SJohn Marino 			}
208*86d7f5d3SJohn Marino 	}
209*86d7f5d3SJohn Marino }
210*86d7f5d3SJohn Marino 
211*86d7f5d3SJohn Marino /*
212*86d7f5d3SJohn Marino 	subroutine to process a throne object
213*86d7f5d3SJohn Marino  */
214*86d7f5d3SJohn Marino void
ochest(void)215*86d7f5d3SJohn Marino ochest(void)
216*86d7f5d3SJohn Marino {
217*86d7f5d3SJohn Marino 	int i, k;
218*86d7f5d3SJohn Marino 	lprcat("\nDo you (t) take it, (o) try to open it");
219*86d7f5d3SJohn Marino 	iopts();
220*86d7f5d3SJohn Marino 	while (1) {
221*86d7f5d3SJohn Marino 		while (1)
222*86d7f5d3SJohn Marino 			switch (getchr()) {
223*86d7f5d3SJohn Marino 			case 'o':
224*86d7f5d3SJohn Marino 				lprcat(" open it");
225*86d7f5d3SJohn Marino 				k = rnd(101);
226*86d7f5d3SJohn Marino 				if (k < 40) {
227*86d7f5d3SJohn Marino 					lprcat("\nThe chest explodes as you open it");
228*86d7f5d3SJohn Marino 					beep();
229*86d7f5d3SJohn Marino 					i = rnd(10);
230*86d7f5d3SJohn Marino 					lastnum = 281;		/* in case he dies */
231*86d7f5d3SJohn Marino 					lprintf("\nYou suffer %d hit points damage!", (long)i);
232*86d7f5d3SJohn Marino 					checkloss(i);
233*86d7f5d3SJohn Marino 					switch (rnd(10)) {	/* see if he gets a curse */
234*86d7f5d3SJohn Marino 					case 1:
235*86d7f5d3SJohn Marino 						c[ITCHING] += rnd(1000) + 100;
236*86d7f5d3SJohn Marino 						lprcat("\nYou feel an irritation spread over your skin!");
237*86d7f5d3SJohn Marino 						beep();
238*86d7f5d3SJohn Marino 						break;
239*86d7f5d3SJohn Marino 
240*86d7f5d3SJohn Marino 					case 2:
241*86d7f5d3SJohn Marino 						c[CLUMSINESS] += rnd(1600) + 200;
242*86d7f5d3SJohn Marino 						lprcat("\nYou begin to lose hand to eye coordination!");
243*86d7f5d3SJohn Marino 						beep();
244*86d7f5d3SJohn Marino 						break;
245*86d7f5d3SJohn Marino 
246*86d7f5d3SJohn Marino 					case 3:
247*86d7f5d3SJohn Marino 						c[HALFDAM] += rnd(1600) + 200;
248*86d7f5d3SJohn Marino 						beep();
249*86d7f5d3SJohn Marino 						lprcat("\nA sickness engulfs you!");
250*86d7f5d3SJohn Marino 						break;
251*86d7f5d3SJohn Marino 					}
252*86d7f5d3SJohn Marino 					item[playerx][playery] = know[playerx][playery] = 0;
253*86d7f5d3SJohn Marino 					if (rnd(100) < 69)
254*86d7f5d3SJohn Marino 						creategem();	/* gems from the chest */
255*86d7f5d3SJohn Marino 					dropgold(rnd(110 * iarg[playerx][playery] + 200));
256*86d7f5d3SJohn Marino 					for (i = 0; i < rnd(4); i++)
257*86d7f5d3SJohn Marino 						something(iarg[playerx][playery] + 2);
258*86d7f5d3SJohn Marino 				} else
259*86d7f5d3SJohn Marino 					lprcat("\nnothing happens");
260*86d7f5d3SJohn Marino 				return;
261*86d7f5d3SJohn Marino 
262*86d7f5d3SJohn Marino 			case 't':
263*86d7f5d3SJohn Marino 				lprcat(" take");
264*86d7f5d3SJohn Marino 				if (take(OCHEST, iarg[playerx][playery]) == 0)
265*86d7f5d3SJohn Marino 					item[playerx][playery] = know[playerx][playery] = 0;
266*86d7f5d3SJohn Marino 				return;
267*86d7f5d3SJohn Marino 
268*86d7f5d3SJohn Marino 			case 'i':
269*86d7f5d3SJohn Marino 			case '\33':
270*86d7f5d3SJohn Marino 				ignore();
271*86d7f5d3SJohn Marino 				return;
272*86d7f5d3SJohn Marino 			}
273*86d7f5d3SJohn Marino 	}
274*86d7f5d3SJohn Marino }
275*86d7f5d3SJohn Marino 
276*86d7f5d3SJohn Marino /*
277*86d7f5d3SJohn Marino 	process a fountain object
278*86d7f5d3SJohn Marino  */
279*86d7f5d3SJohn Marino void
ofountain(void)280*86d7f5d3SJohn Marino ofountain(void)
281*86d7f5d3SJohn Marino {
282*86d7f5d3SJohn Marino 	int x;
283*86d7f5d3SJohn Marino 	cursors();
284*86d7f5d3SJohn Marino 	lprcat("\nDo you (d) drink, (w) wash yourself");
285*86d7f5d3SJohn Marino 	iopts();
286*86d7f5d3SJohn Marino 	while (1)
287*86d7f5d3SJohn Marino 		switch (getchr()) {
288*86d7f5d3SJohn Marino 		case 'd':
289*86d7f5d3SJohn Marino 			lprcat("drink");
290*86d7f5d3SJohn Marino 			if (rnd(1501) < 2) {
291*86d7f5d3SJohn Marino 				lprcat("\nOops!  You seem to have caught the dreadful sleep!");
292*86d7f5d3SJohn Marino 				beep();
293*86d7f5d3SJohn Marino 				lflush();
294*86d7f5d3SJohn Marino 				sleep(3);
295*86d7f5d3SJohn Marino 				died(280);
296*86d7f5d3SJohn Marino 				return;
297*86d7f5d3SJohn Marino 			}
298*86d7f5d3SJohn Marino 			x = rnd(100);
299*86d7f5d3SJohn Marino 			if (x < 7) {
300*86d7f5d3SJohn Marino 				c[HALFDAM] += 200 + rnd(200);
301*86d7f5d3SJohn Marino 				lprcat("\nYou feel a sickness coming on");
302*86d7f5d3SJohn Marino 			} else if (x < 13)
303*86d7f5d3SJohn Marino 				quaffpotion(23);	/* see invisible */
304*86d7f5d3SJohn Marino 			else if (x < 45)
305*86d7f5d3SJohn Marino 				lprcat("\nnothing seems to have happened");
306*86d7f5d3SJohn Marino 			else if (rnd(3) != 2)
307*86d7f5d3SJohn Marino 				fntchange(1);		/* change char levels upward */
308*86d7f5d3SJohn Marino 			else
309*86d7f5d3SJohn Marino 				fntchange(-1);		/* change char levels downward */
310*86d7f5d3SJohn Marino 			if (rnd(12) < 3) {
311*86d7f5d3SJohn Marino 				lprcat("\nThe fountains bubbling slowly quiets");
312*86d7f5d3SJohn Marino 				item[playerx][playery] = ODEADFOUNTAIN;	/* dead fountain */
313*86d7f5d3SJohn Marino 				know[playerx][playery] = 0;
314*86d7f5d3SJohn Marino 			}
315*86d7f5d3SJohn Marino 			return;
316*86d7f5d3SJohn Marino 
317*86d7f5d3SJohn Marino 		case '\33':
318*86d7f5d3SJohn Marino 		case 'i':
319*86d7f5d3SJohn Marino 			ignore();
320*86d7f5d3SJohn Marino 			return;
321*86d7f5d3SJohn Marino 
322*86d7f5d3SJohn Marino 		case 'w':
323*86d7f5d3SJohn Marino 			lprcat("wash yourself");
324*86d7f5d3SJohn Marino 			if (rnd(100) < 11) {
325*86d7f5d3SJohn Marino 				x = rnd((level << 2) + 2);
326*86d7f5d3SJohn Marino 				lprintf("\nOh no!  The water was foul!  You suffer %d hit points!", (long)x);
327*86d7f5d3SJohn Marino 				lastnum = 273;
328*86d7f5d3SJohn Marino 				losehp(x);
329*86d7f5d3SJohn Marino 				bottomline();
330*86d7f5d3SJohn Marino 				cursors();
331*86d7f5d3SJohn Marino 			} else if (rnd(100) < 29)
332*86d7f5d3SJohn Marino 				lprcat("\nYou got the dirt off!");
333*86d7f5d3SJohn Marino 			else if (rnd(100) < 31)
334*86d7f5d3SJohn Marino 				lprcat("\nThis water seems to be hard water!  The dirt didn't come off!");
335*86d7f5d3SJohn Marino 			else if (rnd(100) < 34)
336*86d7f5d3SJohn Marino 				createmonster(WATERLORD);	/* make water lord */
337*86d7f5d3SJohn Marino 			else
338*86d7f5d3SJohn Marino 				lprcat("\nnothing seems to have happened");
339*86d7f5d3SJohn Marino 			return;
340*86d7f5d3SJohn Marino 		}
341*86d7f5d3SJohn Marino }
342*86d7f5d3SJohn Marino 
343*86d7f5d3SJohn Marino /*
344*86d7f5d3SJohn Marino 	***
345*86d7f5d3SJohn Marino 	FCH
346*86d7f5d3SJohn Marino 	***
347*86d7f5d3SJohn Marino 
348*86d7f5d3SJohn Marino 	subroutine to process an up/down of a character attribute for ofountain
349*86d7f5d3SJohn Marino  */
350*86d7f5d3SJohn Marino static void
fch(int how,long * x)351*86d7f5d3SJohn Marino fch(int how, long *x)
352*86d7f5d3SJohn Marino {
353*86d7f5d3SJohn Marino 	if (how < 0) {
354*86d7f5d3SJohn Marino 		lprcat(" went down by one!");
355*86d7f5d3SJohn Marino 		--(*x);
356*86d7f5d3SJohn Marino 	} else {
357*86d7f5d3SJohn Marino 		lprcat(" went up by one!");
358*86d7f5d3SJohn Marino 		(*x)++;
359*86d7f5d3SJohn Marino 	}
360*86d7f5d3SJohn Marino 	bottomline();
361*86d7f5d3SJohn Marino }
362*86d7f5d3SJohn Marino 
363*86d7f5d3SJohn Marino /*
364*86d7f5d3SJohn Marino 	a subroutine to raise or lower character levels
365*86d7f5d3SJohn Marino 	if x > 0 they are raised   if x < 0 they are lowered
366*86d7f5d3SJohn Marino  */
367*86d7f5d3SJohn Marino static void
fntchange(int how)368*86d7f5d3SJohn Marino fntchange(int how)
369*86d7f5d3SJohn Marino {
370*86d7f5d3SJohn Marino 	long j;
371*86d7f5d3SJohn Marino 	lprc('\n');
372*86d7f5d3SJohn Marino 	switch (rnd(9)) {
373*86d7f5d3SJohn Marino 	case 1:
374*86d7f5d3SJohn Marino 		lprcat("Your strength");
375*86d7f5d3SJohn Marino 		fch(how, &c[0]);
376*86d7f5d3SJohn Marino 		break;
377*86d7f5d3SJohn Marino 	case 2:
378*86d7f5d3SJohn Marino 		lprcat("Your intelligence");
379*86d7f5d3SJohn Marino 		fch(how, &c[1]);
380*86d7f5d3SJohn Marino 		break;
381*86d7f5d3SJohn Marino 	case 3:
382*86d7f5d3SJohn Marino 		lprcat("Your wisdom");
383*86d7f5d3SJohn Marino 		fch(how, &c[2]);
384*86d7f5d3SJohn Marino 		break;
385*86d7f5d3SJohn Marino 	case 4:
386*86d7f5d3SJohn Marino 		lprcat("Your constitution");
387*86d7f5d3SJohn Marino 		fch(how, &c[3]);
388*86d7f5d3SJohn Marino 		break;
389*86d7f5d3SJohn Marino 	case 5:
390*86d7f5d3SJohn Marino 		lprcat("Your dexterity");
391*86d7f5d3SJohn Marino 		fch(how, &c[4]);
392*86d7f5d3SJohn Marino 		break;
393*86d7f5d3SJohn Marino 	case 6:
394*86d7f5d3SJohn Marino 		lprcat("Your charm");
395*86d7f5d3SJohn Marino 		fch(how, &c[5]);
396*86d7f5d3SJohn Marino 		break;
397*86d7f5d3SJohn Marino 	case 7:
398*86d7f5d3SJohn Marino 		j = rnd(level + 1);
399*86d7f5d3SJohn Marino 		if (how < 0) {
400*86d7f5d3SJohn Marino 			lprintf("You lose %d hit point", (long)j);
401*86d7f5d3SJohn Marino 			if (j > 1)
402*86d7f5d3SJohn Marino 				lprcat("s!");
403*86d7f5d3SJohn Marino 			else
404*86d7f5d3SJohn Marino 				lprc('!');
405*86d7f5d3SJohn Marino 			losemhp((int)j);
406*86d7f5d3SJohn Marino 		} else {
407*86d7f5d3SJohn Marino 			lprintf("You gain %d hit point", (long)j);
408*86d7f5d3SJohn Marino 			if (j > 1)
409*86d7f5d3SJohn Marino 				lprcat("s!");
410*86d7f5d3SJohn Marino 			else
411*86d7f5d3SJohn Marino 				lprc('!');
412*86d7f5d3SJohn Marino 			raisemhp((int)j);
413*86d7f5d3SJohn Marino 		}
414*86d7f5d3SJohn Marino 		bottomline();
415*86d7f5d3SJohn Marino 		break;
416*86d7f5d3SJohn Marino 
417*86d7f5d3SJohn Marino 	case 8:
418*86d7f5d3SJohn Marino 		j = rnd(level + 1);
419*86d7f5d3SJohn Marino 		if (how > 0) {
420*86d7f5d3SJohn Marino 			lprintf("You just gained %d spell", (long)j);
421*86d7f5d3SJohn Marino 			raisemspells((int)j);
422*86d7f5d3SJohn Marino 			if (j > 1)
423*86d7f5d3SJohn Marino 				lprcat("s!");
424*86d7f5d3SJohn Marino 			else
425*86d7f5d3SJohn Marino 				lprc('!');
426*86d7f5d3SJohn Marino 		} else {
427*86d7f5d3SJohn Marino 			lprintf("You just lost %d spell", (long)j);
428*86d7f5d3SJohn Marino 			losemspells((int)j);
429*86d7f5d3SJohn Marino 			if (j > 1)
430*86d7f5d3SJohn Marino 				lprcat("s!");
431*86d7f5d3SJohn Marino 			else
432*86d7f5d3SJohn Marino 				lprc('!');
433*86d7f5d3SJohn Marino 		}
434*86d7f5d3SJohn Marino 		bottomline();
435*86d7f5d3SJohn Marino 		break;
436*86d7f5d3SJohn Marino 
437*86d7f5d3SJohn Marino 	case 9:
438*86d7f5d3SJohn Marino 		j = 5 * rnd((level + 1) * (level + 1));
439*86d7f5d3SJohn Marino 		if (how < 0) {
440*86d7f5d3SJohn Marino 			lprintf("You just lost %d experience point", (long)j);
441*86d7f5d3SJohn Marino 			if (j > 1)
442*86d7f5d3SJohn Marino 				lprcat("s!");
443*86d7f5d3SJohn Marino 			else
444*86d7f5d3SJohn Marino 				lprc('!');
445*86d7f5d3SJohn Marino 			loseexperience((long)j);
446*86d7f5d3SJohn Marino 		} else {
447*86d7f5d3SJohn Marino 			lprintf("You just gained %d experience point", (long)j);
448*86d7f5d3SJohn Marino 			if (j > 1)
449*86d7f5d3SJohn Marino 				lprcat("s!");
450*86d7f5d3SJohn Marino 			else
451*86d7f5d3SJohn Marino 				lprc('!');
452*86d7f5d3SJohn Marino 			raiseexperience((long)j);
453*86d7f5d3SJohn Marino 		}
454*86d7f5d3SJohn Marino 		break;
455*86d7f5d3SJohn Marino 	}
456*86d7f5d3SJohn Marino 	cursors();
457*86d7f5d3SJohn Marino }
458