From 77e3814f0c0e3dea4d0032e25666f77e6f83bfff Mon Sep 17 00:00:00 2001 From: cgd Date: Sun, 21 Mar 1993 09:45:37 +0000 Subject: initial import of 386bsd-0.1 sources --- larn/moreobj.c | 372 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 372 insertions(+) create mode 100644 larn/moreobj.c (limited to 'larn/moreobj.c') diff --git a/larn/moreobj.c b/larn/moreobj.c new file mode 100644 index 00000000..f834b1a1 --- /dev/null +++ b/larn/moreobj.c @@ -0,0 +1,372 @@ +/* moreobj.c Larn is copyrighted 1986 by Noah Morgan. + * + * Routines in this file: + * + * oaltar() + * othrone() + * ochest() + * ofountain() + */ +#include "header.h" + +static void ohear(); + +/* + * ****** + * OALTAR + * ****** + * + * subroutine to process an altar object + */ +oaltar() + { + unsigned long k; + + lprcat("\nDo you (p) pray (d) desecrate"); iopts(); + while (1) + { + while (1) switch(getchar()) + { + case 'p': lprcat(" pray\nDo you (m) give money or (j) just pray? "); + while (1) switch(getchar()) + { + case 'j': if (rnd(100)<75) + lprcat("\nnothing happens"); + else if (rnd(13)<4) ohear(); + else if (rnd(43) == 10) + { + if (c[WEAR]) lprcat("\nYou feel your armor vibrate for a moment"); + enchantarmor(); return; + } + else if (rnd(43) == 10) + { + if (c[WIELD]) lprcat("\nYou feel your weapon vibrate for a moment"); + enchweapon(); return; + } + else createmonster(makemonst(level+1)); + return; + + case 'm': lprcat("\n\n"); cursor(1,24); cltoeoln(); + cursor(1,23); cltoeoln(); + lprcat("how much do you donate? "); + k = readnum((long)c[GOLD]); + if (c[GOLD] 50) { ohear(); return; } + else if (rnd(43) == 5) + { + if (c[WEAR]) lprcat("\nYou feel your armor vibrate for a moment"); + enchantarmor(); return; + } + else if (rnd(43) == 8) + { + if (c[WIELD]) lprcat("\nYou feel your weapon vibrate for a moment"); + enchweapon(); return; + } + else lprcat("\nThank You."); + bottomline(); return; + + case '\33': return; + }; + + case 'd': lprcat(" desecrate"); + if (rnd(100)<60) + { createmonster(makemonst(level+2)+8); c[AGGRAVATE] += 2500; } + else + if (rnd(101)<30) + { + lprcat("\nThe altar crumbles into a pile of dust before your eyes"); + forget(); /* remember to destroy the altar */ + } + else + lprcat("\nnothing happens"); + return; + + case 'i': + case '\33': ignore(); + if (rnd(100)<30) { createmonster(makemonst(level+1)); c[AGGRAVATE] += rnd(450); } + else lprcat("\nnothing happens"); + return; + }; + } + } + +/* + function to cast a +3 protection on the player + */ +static void +ohear() + { + lprcat("\nYou have been heard!"); + if (c[ALTPRO]==0) c[MOREDEFENSES]+=3; + c[ALTPRO] += 500; /* protection field */ + bottomline(); + } + +/* + ******* + OTHRONE + ******* + + subroutine to process a throne object + */ +othrone(arg) + int arg; + { + register int i,k; + + lprcat("\nDo you (p) pry off jewels, (s) sit down"); iopts(); + while (1) + { + while (1) switch(getchar()) + { + case 'p': lprcat(" pry off"); k=rnd(101); + if (k<25) + { + for (i=0; i 0 they are raised if x < 0 they are lowered + */ +fntchange(how) + int how; + { + register long j; + lprc('\n'); + switch(rnd(9)) + { + case 1: lprcat("Your strength"); fch(how,&c[0]); break; + case 2: lprcat("Your intelligence"); fch(how,&c[1]); break; + case 3: lprcat("Your wisdom"); fch(how,&c[2]); break; + case 4: lprcat("Your constitution"); fch(how,&c[3]); break; + case 5: lprcat("Your dexterity"); fch(how,&c[4]); break; + case 6: lprcat("Your charm"); fch(how,&c[5]); break; + case 7: j=rnd(level+1); + if (how < 0) + { lprintf("You lose %d hit point",(long)j); if (j>1) lprcat("s!"); else lprc('!'); losemhp((int)j); } + else + { lprintf("You gain %d hit point",(long)j); if (j>1) lprcat("s!"); else lprc('!'); raisemhp((int)j); } + bottomline(); break; + + case 8: j=rnd(level+1); + if (how > 0) + { + lprintf("You just gained %d spell",(long)j); raisemspells((int)j); + if (j>1) lprcat("s!"); else lprc('!'); + } + else + { + lprintf("You just lost %d spell",(long)j); losemspells((int)j); + if (j>1) lprcat("s!"); else lprc('!'); + } + bottomline(); break; + + case 9: j = 5*rnd((level+1)*(level+1)); + if (how < 0) + { + lprintf("You just lost %d experience point",(long)j); + if (j>1) lprcat("s!"); else lprc('!'); loseexperience((long)j); + } + else + { + lprintf("You just gained %d experience point",(long)j); + if (j>1) lprcat("s!"); else lprc('!'); raiseexperience((long)j); + } + break; + } + cursors(); + } -- cgit v1.2.3-56-ge451