X-Git-Url: https://git.cameronkatri.com/bsdgames-darwin.git/blobdiff_plain/350aac765d3e94494f9b3db3a16f3b09d454bd5b..ed695539f2c9b4aefd9f42852aa112ade4da7102:/larn/moreobj.c diff --git a/larn/moreobj.c b/larn/moreobj.c index 7854cf7d..d36e6e17 100644 --- a/larn/moreobj.c +++ b/larn/moreobj.c @@ -1,4 +1,4 @@ -/* $NetBSD: moreobj.c,v 1.9 2008/02/03 21:24:58 dholland Exp $ */ +/* $NetBSD: moreobj.c,v 1.12 2012/06/19 05:30:43 dholland Exp $ */ /* * moreobj.c Larn is copyrighted 1986 by Noah Morgan. @@ -9,27 +9,21 @@ */ #include #ifndef lint -__RCSID("$NetBSD: moreobj.c,v 1.9 2008/02/03 21:24:58 dholland Exp $"); +__RCSID("$NetBSD: moreobj.c,v 1.12 2012/06/19 05:30:43 dholland Exp $"); #endif /* not lint */ #include #include #include "header.h" #include "extern.h" -static void ohear(void); static void fch(int, long *); /* - * ****** - * OALTAR - * ****** - * * subroutine to process an altar object */ void -oaltar() +oaltar(void) { - long amt; lprcat("\nDo you (p) pray (d) desecrate"); iopts(); @@ -41,56 +35,11 @@ oaltar() while (1) switch (ttgetch()) { 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)); + act_just_pray(); return; case 'm': - lprcat("\n\n"); - cursor(1, 24); - cltoeoln(); - cursor(1, 23); - cltoeoln(); - lprcat("how much do you donate? "); - amt = readnum((long) c[GOLD]); - if (amt < 0 || c[GOLD] < amt) { - lprcat("\nYou don't have that much!"); - return; - } - c[GOLD] -= amt; - if (amt < c[GOLD] / 10 || amt < 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(); + act_donation_pray(); return; case '\33': @@ -99,55 +48,24 @@ oaltar() 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"); + act_desecrate_altar(); return; case 'i': case '\33': ignore(); - if (rnd(100) < 30) { - createmonster(makemonst(level + 1)); - c[AGGRAVATE] += rnd(450); - } else - lprcat("\nnothing happens"); + act_ignore_altar(); 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 */ void -othrone(arg) - int arg; +othrone(int arg) { - int i, k; lprcat("\nDo you (p) pry off jewels, (s) sit down"); iopts(); @@ -156,34 +74,12 @@ othrone(arg) switch (ttgetch()) { 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"); + act_remove_gems(arg); 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"); + act_sit_throne(arg); return; case 'i': @@ -195,7 +91,7 @@ othrone(arg) } void -odeadthrone() +odeadthrone(void) { int k; @@ -224,16 +120,12 @@ odeadthrone() } /* - ****** - OCHEST - ****** - subroutine to process a throne object */ void -ochest() +ochest(void) { - int i, k; + lprcat("\nDo you (t) take it, (o) try to open it"); iopts(); while (1) { @@ -241,42 +133,7 @@ ochest() switch (ttgetch()) { 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 %ld 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"); + act_open_chest(playerx, playery); return; case 't': @@ -294,15 +151,12 @@ ochest() } /* - ********* - OFOUNTAIN - ********* + process a fountain object */ - void -ofountain() +ofountain(void) { - int x; + cursors(); lprcat("\nDo you (d) drink, (w) wash yourself"); iopts(); @@ -310,32 +164,7 @@ ofountain() switch (ttgetch()) { 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; - } + act_drink_fountain(); return; case '\33': @@ -345,21 +174,7 @@ ofountain() case 'w': lprcat("wash yourself"); - if (rnd(100) < 11) { - x = rnd((level << 2) + 2); - lprintf("\nOh no! The water was foul! You suffer %ld 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"); + act_wash_fountain(); return; } } @@ -372,9 +187,7 @@ ofountain() subroutine to process an up/down of a character attribute for ofountain */ static void -fch(how, x) - int how; - long *x; +fch(int how, long *x) { if (how < 0) { lprcat(" went down by one!"); @@ -391,8 +204,7 @@ fch(how, x) if x > 0 they are raised if x < 0 they are lowered */ void -fntchange(how) - int how; +fntchange(int how) { long j; lprc('\n');