diff options
author | christos <christos@NetBSD.org> | 1997-10-18 20:03:05 +0000 |
---|---|---|
committer | christos <christos@NetBSD.org> | 1997-10-18 20:03:05 +0000 |
commit | f73f1009084e75624e3bc00fef9cf4749de80dcc (patch) | |
tree | 10cc39737f667f056c5537c3fba7cf4d2a832c9d /larn/moreobj.c | |
parent | 39d5db4411fe42946cd3d94eb7d275f3f453d6aa (diff) | |
download | bsdgames-darwin-f73f1009084e75624e3bc00fef9cf4749de80dcc.tar.gz bsdgames-darwin-f73f1009084e75624e3bc00fef9cf4749de80dcc.tar.zst bsdgames-darwin-f73f1009084e75624e3bc00fef9cf4749de80dcc.zip |
Tons of changes; re-indent, use termios, fix warnings, add prototypes...
Games is almost clean; only hack is left...
Diffstat (limited to 'larn/moreobj.c')
-rw-r--r-- | larn/moreobj.c | 689 |
1 files changed, 399 insertions, 290 deletions
diff --git a/larn/moreobj.c b/larn/moreobj.c index 737154f2..7c6766f7 100644 --- a/larn/moreobj.c +++ b/larn/moreobj.c @@ -1,19 +1,24 @@ -#ifndef lint -static char rcsid[] = "$NetBSD: moreobj.c,v 1.3 1995/03/23 08:33:54 cgd Exp $"; -#endif /* not lint */ +/* $NetBSD: moreobj.c,v 1.4 1997/10/18 20:03:32 christos Exp $ */ -/* moreobj.c Larn is copyrighted 1986 by Noah Morgan. - * - * Routines in this file: - * - * oaltar() - * othrone() - * ochest() - * ofountain() +/* + * moreobj.c Larn is copyrighted 1986 by Noah Morgan. + * + * Routines in this file: + * + * oaltar() othrone() ochest() ofountain() */ +#include <sys/cdefs.h> +#ifndef lint +__RCSID("$NetBSD: moreobj.c,v 1.4 1997/10/18 20:03:32 christos Exp $"); +#endif /* not lint */ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> #include "header.h" +#include "extern.h" -static void ohear(); +static void ohear __P((void)); +static void fch __P((int, long *)); /* * ****** @@ -22,96 +27,115 @@ static void ohear(); * * subroutine to process an altar object */ +void oaltar() - { - unsigned long k; +{ + 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]<k) - { - lprcat("\nYou don't have that much!"); - return; - } - c[GOLD] -= k; - if (k < c[GOLD]/10 || k<rnd(50)) - { createmonster(makemonst(level+1)); c[AGGRAVATE] += 200; } - else if (rnd(101) > 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 */ + 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] < k) { + lprcat("\nYou don't have that much!"); + return; } - else - lprcat("\nnothing happens"); - return; + c[GOLD] -= k; + if (k < c[GOLD] / 10 || k < rnd(50)) { + createmonster(makemonst(level + 1)); + c[AGGRAVATE] += 200; + } else if (rnd(101) > 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 'i': - case '\33': ignore(); - if (rnd(100)<30) { createmonster(makemonst(level+1)); c[AGGRAVATE] += rnd(450); } - else lprcat("\nnothing happens"); - 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; + if (c[ALTPRO] == 0) + c[MOREDEFENSES] += 3; c[ALTPRO] += 500; /* protection field */ bottomline(); - } +} /* ******* @@ -120,68 +144,85 @@ ohear() subroutine to process a throne object */ +void othrone(arg) - int arg; - { - register int i,k; + int arg; +{ + 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<rnd(4); i++) creategem(); /* gems pop off the throne */ - item[playerx][playery]=ODEADTHRONE; - know[playerx][playery]=0; - } - else if (k<40 && arg==0) - { - createmonster(GNOMEKING); - item[playerx][playery]=OTHRONE2; - know[playerx][playery]=0; - } - else lprcat("\nnothing happens"); - return; - - case 's': lprcat(" sit down"); k=rnd(101); - if (k<30 && arg==0) - { - createmonster(GNOMEKING); - item[playerx][playery]=OTHRONE2; - know[playerx][playery]=0; - } - else if (k<35) { lprcat("\nZaaaappp! You've been teleported!\n"); beep(); oteleport(0); } - else lprcat("\nnothing happens"); - return; + 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 < rnd(4); i++) + creategem(); /* gems pop off the + * throne */ + item[playerx][playery] = ODEADTHRONE; + know[playerx][playery] = 0; + } else if (k < 40 && arg == 0) { + createmonster(GNOMEKING); + item[playerx][playery] = OTHRONE2; + know[playerx][playery] = 0; + } else + lprcat("\nnothing happens"); + return; - case 'i': - case '\33': ignore(); return; - }; - } + case 's': + lprcat(" sit down"); + k = rnd(101); + if (k < 30 && arg == 0) { + createmonster(GNOMEKING); + item[playerx][playery] = OTHRONE2; + know[playerx][playery] = 0; + } else if (k < 35) { + lprcat("\nZaaaappp! You've been teleported!\n"); + beep(); + oteleport(0); + } else + lprcat("\nnothing happens"); + return; + + case 'i': + case '\33': + ignore(); + return; + }; } +} +void odeadthrone() - { - register int k; +{ + int k; - lprcat("\nDo you (s) sit down"); iopts(); - while (1) - { - while (1) switch(getchar()) - { - case 's': lprcat(" sit down"); k=rnd(101); - if (k<35) { lprcat("\nZaaaappp! You've been teleported!\n"); beep(); oteleport(0); } - else lprcat("\nnothing happens"); - return; + lprcat("\nDo you (s) sit down"); + iopts(); + while (1) { + while (1) + switch (getchar()) { + case 's': + lprcat(" sit down"); + k = rnd(101); + if (k < 35) { + lprcat("\nZaaaappp! You've been teleported!\n"); + beep(); + oteleport(0); + } else + lprcat("\nnothing happens"); + return; - case 'i': - case '\33': ignore(); return; - }; - } + case 'i': + case '\33': + ignore(); + return; + }; } +} /* ****** @@ -190,55 +231,68 @@ odeadthrone() subroutine to process a throne object */ +void ochest() - { - register int i,k; - lprcat("\nDo you (t) take it, (o) try to open it"); iopts(); - while (1) - { - while (1) switch(getchar()) - { - case 'o': lprcat(" open it"); k=rnd(101); - if (k<40) - { - lprcat("\nThe chest explodes as you open it"); beep(); - i = rnd(10); lastnum=281; /* in case he dies */ - lprintf("\nYou suffer %d hit points damage!",(long)i); - checkloss(i); - switch(rnd(10)) /* see if he gets a curse */ - { - case 1: c[ITCHING]+= rnd(1000)+100; - lprcat("\nYou feel an irritation spread over your skin!"); - beep(); - break; - - case 2: c[CLUMSINESS]+= rnd(1600)+200; - lprcat("\nYou begin to lose hand to eye coordination!"); - beep(); - break; - - case 3: c[HALFDAM]+= rnd(1600)+200; - beep(); - lprcat("\nA sickness engulfs you!"); break; - }; - item[playerx][playery]=know[playerx][playery]=0; - if (rnd(100)<69) creategem(); /* gems from the chest */ - dropgold(rnd(110*iarg[playerx][playery]+200)); - for (i=0; i<rnd(4); i++) something(iarg[playerx][playery]+2); - } - else lprcat("\nnothing happens"); - return; +{ + int i, k; + lprcat("\nDo you (t) take it, (o) try to open it"); + iopts(); + while (1) { + while (1) + switch (getchar()) { + case 'o': + lprcat(" open it"); + k = rnd(101); + if (k < 40) { + lprcat("\nThe chest explodes as you open it"); + beep(); + i = rnd(10); + lastnum = 281; /* in case he dies */ + lprintf("\nYou suffer %d hit points damage!", (long) i); + checkloss(i); + switch (rnd(10)) { /* see if he gets a + * curse */ + case 1: + c[ITCHING] += rnd(1000) + 100; + lprcat("\nYou feel an irritation spread over your skin!"); + beep(); + break; - case 't': lprcat(" take"); - if (take(OCHEST,iarg[playerx][playery])==0) - item[playerx][playery]=know[playerx][playery]=0; - return; + case 2: + c[CLUMSINESS] += rnd(1600) + 200; + lprcat("\nYou begin to lose hand to eye coordination!"); + beep(); + break; - case 'i': - case '\33': ignore(); return; - }; - } + case 3: + c[HALFDAM] += rnd(1600) + 200; + beep(); + lprcat("\nA sickness engulfs you!"); + break; + }; + item[playerx][playery] = know[playerx][playery] = 0; + if (rnd(100) < 69) + creategem(); /* gems from the chest */ + dropgold(rnd(110 * iarg[playerx][playery] + 200)); + for (i = 0; i < rnd(4); i++) + something(iarg[playerx][playery] + 2); + } else + lprcat("\nnothing happens"); + return; + + case 't': + lprcat(" take"); + if (take(OCHEST, iarg[playerx][playery]) == 0) + item[playerx][playery] = know[playerx][playery] = 0; + return; + + case 'i': + case '\33': + ignore(); + return; + }; } +} /* ********* @@ -246,64 +300,70 @@ ochest() ********* */ +void ofountain() - { - register int x; +{ + int x; cursors(); - lprcat("\nDo you (d) drink, (w) wash yourself"); iopts(); - while (1) switch(getchar()) - { - case 'd': lprcat("drink"); - if (rnd(1501)<2) - { - lprcat("\nOops! You seem to have caught the dreadful sleep!"); - beep(); lflush(); sleep(3); died(280); return; - } - x = rnd(100); - if (x<7) - { - c[HALFDAM] += 200+rnd(200); - lprcat("\nYou feel a sickness coming on"); - } - else if (x<13) quaffpotion(23); /* see invisible */ - else if (x < 45) - lprcat("\nnothing seems to have happened"); - else if (rnd(3) != 2) - fntchange(1); /* change char levels upward */ - else - fntchange(-1); /* change char levels downward */ - if (rnd(12)<3) - { - lprcat("\nThe fountains bubbling slowly quiets"); - item[playerx][playery]=ODEADFOUNTAIN; /* dead fountain */ - know[playerx][playery]=0; - } - return; + lprcat("\nDo you (d) drink, (w) wash yourself"); + iopts(); + while (1) + switch (getchar()) { + case 'd': + lprcat("drink"); + if (rnd(1501) < 2) { + lprcat("\nOops! You seem to have caught the dreadful sleep!"); + beep(); + lflush(); + sleep(3); + died(280); + return; + } + x = rnd(100); + if (x < 7) { + c[HALFDAM] += 200 + rnd(200); + lprcat("\nYou feel a sickness coming on"); + } else if (x < 13) + quaffpotion(23); /* see invisible */ + else if (x < 45) + lprcat("\nnothing seems to have happened"); + else if (rnd(3) != 2) + fntchange(1); /* change char levels upward */ + else + fntchange(-1); /* change char levels + * downward */ + if (rnd(12) < 3) { + lprcat("\nThe fountains bubbling slowly quiets"); + item[playerx][playery] = ODEADFOUNTAIN; /* dead fountain */ + know[playerx][playery] = 0; + } + return; case '\33': - case 'i': ignore(); return; - - case 'w': lprcat("wash yourself"); - if (rnd(100) < 11) - { - x=rnd((level<<2)+2); - lprintf("\nOh no! The water was foul! You suffer %d hit points!",(long)x); - lastnum=273; losehp(x); bottomline(); cursors(); - } - else - if (rnd(100) < 29) - lprcat("\nYou got the dirt off!"); - else - if (rnd(100) < 31) - lprcat("\nThis water seems to be hard water! The dirt didn't come off!"); - else - if (rnd(100) < 34) - createmonster(WATERLORD); /* make water lord */ - else - lprcat("\nnothing seems to have happened"); - return; + case 'i': + ignore(); + return; + + case 'w': + lprcat("wash yourself"); + if (rnd(100) < 11) { + x = rnd((level << 2) + 2); + lprintf("\nOh no! The water was foul! You suffer %d hit points!", (long) x); + lastnum = 273; + losehp(x); + bottomline(); + cursors(); + } else if (rnd(100) < 29) + lprcat("\nYou got the dirt off!"); + else if (rnd(100) < 31) + lprcat("\nThis water seems to be hard water! The dirt didn't come off!"); + else if (rnd(100) < 34) + createmonster(WATERLORD); /* make water lord */ + else + lprcat("\nnothing seems to have happened"); + return; } - } +} /* *** @@ -313,64 +373,113 @@ ofountain() subroutine to process an up/down of a character attribute for ofountain */ static void -fch(how,x) - int how; - long *x; - { - if (how < 0) { lprcat(" went down by one!"); --(*x); } - else { lprcat(" went up by one!"); (*x)++; } - bottomline(); +fch(how, x) + int how; + long *x; +{ + if (how < 0) { + lprcat(" went down by one!"); + --(*x); + } else { + lprcat(" went up by one!"); + (*x)++; } + bottomline(); +} /* a subroutine to raise or lower character levels if x > 0 they are raised if x < 0 they are lowered */ +void fntchange(how) - int how; - { - register long j; + int how; +{ + 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; + 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); } - cursors(); + 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(); +} |