|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 5803 (0x16ab) Types: TextFile Names: »pray.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Nethack/pray.c«
/* SCCS Id: @(#)pray.c 2.1 87/10/07 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" extern char *nomovemsg; extern struct monst *mkmon_at(); extern struct obj *mkobj_at(); dopray() { /* M. Stephenson (1.0.3b) */ #ifdef PRAYERS if (u.ublesscnt > 0) { /* disturbing the gods too much */ u.ublesscnt += 200; u.uluck -= 3; if (u.uluck < LUCKMIN) u.uluck = LUCKMIN; #ifdef HARD u.ugangr++; angrygods(); #else if (u.ugangr++) angrygods(); else { /* exactly one warning */ pline("A voice booms out: You have angered us,"); pline("Disturb us again at your own risk!"); } #endif } else if (u.uluck < 0) angrygods(); /* a bad boy/girl */ else pleased(); /* or a good boy/girl */ #endif nomovemsg = "You finished your prayer."; nomul(-3); return(1); } #ifdef PRAYERS angrygods() { register int tmp; pline ("You get the feeling the gods are angry..."); /* changed from tmp = u.ugangr + abs (u.uluck) -- rph */ tmp = 3*u.ugangr + (u.uluck > 0 ? -u.uluck/3 : -u.uluck); tmp = (tmp > 15 ? 15 : tmp); /* lets be a little reasonable */ switch (tmp ? rn2(tmp): 0) { case 0: case 1: pline("but nothing appears to happen."); break; case 2: case 3: pline("A voice booms out: You are arrogant, mortal."); pline("You must relearn your lessons!"); if (u.ulevel > 1) losexp(); else { u.uexp = 0; flags.botl = 1; } break; case 4: case 5: case 6: pline("A black glow surrounds you."); rndcurse(); break; case 7: case 8: pline("A voice booms out: You dare to call upon us?"); pline("Then, die mortal!"); mkmon_at('&', u.ux, u.uy); break; default: pline("Suddenly, a bolt of lightning strikes you!"); pline("You are fried to a crisp."); killer = "pissed off deity"; done("died"); break; } u.ublesscnt = 250; return(0); } pleased() { char *tmp, *hcolor(); u.ugangr--; if (u.ugangr < 0) u.ugangr = 0; pline("You feel the gods are pleased."); switch(rn2((u.uluck + 6)/2)) { case 0: pline("but nothing seems to happen."); break; case 1: if(!uwep) { if(uleft && uleft->cursed) { pline("your left hand glows amber."); uleft->cursed = 0; } else if(uright && uright->cursed) { pline("your right hand glows amber."); uright->cursed = 0; } else pline("but nothing seems to happen."); break; } #ifdef KAA if(uwep->olet == WEAPON_SYM) { if (uwep->cursed) { uwep->cursed=0; pline("Your %s %s.", aobjnam(uwep,"softly glow"), Hallucination ? hcolor() : "amber"); } else if(uwep->otyp >= ARROW && uwep->otyp <= SPEAR) { uwep->dknown=1; tmp = Hallucination ? hcolor() : "light blue"; pline("Your %s with a%s %s aura.", aobjnam(uwep,"softly glow"), index("aeiou",*tmp) ? "n" : "", tmp); } } else #endif pline("but nothing seems to happen."); break; case 2: case 3: pline("A %s glow surrounds you", Hallucination ? hcolor() : "golden"); u.uhp = u.uhpmax += 5; u.ustr = u.ustrmax; if (u.uhunger < 900) init_uhunger(); if (u.uluck < 0) u.uluck = 0; if (Blinded) Blinded = 1; flags.botl = 1; break; case 4: case 5: pline("A voice booms out: We are pleased with your progress,"); pline("and grant you the gift of"); if (!(HTelepat & INTRINSIC)) { HTelepat |= INTRINSIC; pline ("Telepathy,"); } else if (!(Fast & INTRINSIC)) { Fast |= INTRINSIC; pline ("Speed,"); } else if (!(Stealth & INTRINSIC)) { Stealth |= INTRINSIC; pline ("Stealth,"); } else { if (!(Protection & INTRINSIC)) { Protection |= INTRINSIC; if (!u.ublessed) u.ublessed = rnd(3) + 1; } else u.ublessed++; pline ("our protection,"); } pline ("Use it wisely in our names!"); break; case 6: pline ("An object appears at your feet!"); #ifdef SPELLS mkobj_at('+', u.ux, u.uy); #else mkobj_at('?', u.ux, u.uy); #endif break; case 7: pline("A voice booms out: We crown thee..."); pline("The Hand of Elbereth!"); HInvis |= INTRINSIC; HSee_invisible |= INTRINSIC; HFire_resistance |= INTRINSIC; HCold_resistance |= INTRINSIC; HPoison_resistance |= INTRINSIC; #ifdef RPH if(uwep && (uwep->otyp == LONG_SWORD)) oname(uwep, "Excalibur"); #endif break; default: impossible("Confused deity!"); break; } u.ublesscnt = 300; #ifdef HARD u.ublesscnt += (u.udemigod * 1000); #endif return(0); } #endif /* PRAYERS /**/ #ifdef NEWCLASS doturn() { /* Knights & Priest(esse)s only please */ register struct monst *mtmp; register int xlev = 6; extern char pl_character[]; if((pl_character[0] != 'P') && (pl_character[0] != 'K')) { pline("You don't know how to turn undead!"); return(0); } if (Inhell) { pline("Being in hell, your gods won't help you."); aggravate(); return(0); } pline("Calling upon your gods, you chant an arcane formula."); for(mtmp = fmon; mtmp; mtmp = mtmp->nmon) if(cansee(mtmp->mx,mtmp->my)) { if(index(UNDEAD,mtmp->data->mlet) || ((mtmp->data->mlet == '&') && (u.ulevel > 10))) { if(Confusion) { pline("Unfortunately, your voice falters."); mtmp->mflee = mtmp->mfroz = mtmp->msleep = 0; } else if (! resist(mtmp, '+', 0, TELL)) switch (mtmp->data->mlet) { case 'V': xlev += 2; case 'W': xlev += 4; case 'Z': if(u.ulevel >= xlev) { if(!resist(mtmp, '+', 0, NOTELL)) { pline("You destroy the %s", monnam(mtmp)); mondied(mtmp); } else mtmp->mflee = 1; } else mtmp->mflee = 1; break; default: mtmp->mflee = 1; break; } } } nomul(-5); return(1); } #endif /* NEWCLASS /**/