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