]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - hack/hack.read.c
.Nm does not need a dummy argument ("") before punctuation or
[bsdgames-darwin.git] / hack / hack.read.c
index 7fbbf8a7e3397ff3ef5f020bfb83da96ad73055e..9d37cd4ace12457129acf420b1f616bc4d286e0a 100644 (file)
@@ -1,95 +1,99 @@
+/*     $NetBSD: hack.read.c,v 1.7 2001/03/25 20:44:02 jsm Exp $        */
+
 /*
  * Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985.
  */
 
+#include <sys/cdefs.h>
 #ifndef lint
-static char rcsid[] = "$NetBSD: hack.read.c,v 1.3 1995/03/23 08:31:22 cgd Exp $";
-#endif /* not lint */
+__RCSID("$NetBSD: hack.read.c,v 1.7 2001/03/25 20:44:02 jsm Exp $");
+#endif                         /* not lint */
 
+#include <stdlib.h>
 #include "hack.h"
+#include "extern.h"
 
-extern struct monst *makemon();
-extern struct obj *mkobj_at();
-int identify();
-
-doread() {
-       register struct obj *scroll;
-       register boolean confused = (Confusion != 0);
-       register boolean known = FALSE;
-       extern struct obj *some_armor();
+int
+doread()
+{
+       struct obj     *scroll;
+       boolean         confused = (Confusion != 0);
+       boolean         known = FALSE;
 
        scroll = getobj("?", "read");
-       if(!scroll) return(0);
-       if(!scroll->dknown && Blind) {
-           pline("Being blind, you cannot read the formula on the scroll.");
-           return(0);
+       if (!scroll)
+               return (0);
+       if (!scroll->dknown && Blind) {
+               pline("Being blind, you cannot read the formula on the scroll.");
+               return (0);
        }
-       if(Blind)
-         pline("As you pronounce the formula on it, the scroll disappears.");
+       if (Blind)
+               pline("As you pronounce the formula on it, the scroll disappears.");
        else
-         pline("As you read the scroll, it disappears.");
-       if(confused)
-         pline("Being confused, you mispronounce the magic words ... ");
+               pline("As you read the scroll, it disappears.");
+       if (confused)
+               pline("Being confused, you mispronounce the magic words ... ");
 
-       switch(scroll->otyp) {
+       switch (scroll->otyp) {
 #ifdef MAIL
        case SCR_MAIL:
-               readmail(/* scroll */);
+               readmail( /* scroll */ );
                break;
-#endif MAIL
+#endif /* MAIL */
        case SCR_ENCHANT_ARMOR:
-           {   register struct obj *otmp = some_armor();
-               if(!otmp) {
-                       strange_feeling(scroll,"Your skin glows then fades.");
-                       return(1);
-               }
-               if(confused) {
-                       pline("Your %s glows silver for a moment.",
-                               objects[otmp->otyp].oc_name);
-                       otmp->rustfree = 1;
-                       break;
-               }
-               if(otmp->spe > 3 && rn2(otmp->spe)) {
-       pline("Your %s glows violently green for a while, then evaporates.",
-                       objects[otmp->otyp].oc_name);
-                       useup(otmp);
+               {
+                       struct obj     *otmp = some_armor();
+                       if (!otmp) {
+                               strange_feeling(scroll, "Your skin glows then fades.");
+                               return (1);
+                       }
+                       if (confused) {
+                               pline("Your %s glows silver for a moment.",
+                                     objects[otmp->otyp].oc_name);
+                               otmp->rustfree = 1;
+                               break;
+                       }
+                       if (otmp->spe > 3 && rn2(otmp->spe)) {
+                               pline("Your %s glows violently green for a while, then evaporates.",
+                                     objects[otmp->otyp].oc_name);
+                               useup(otmp);
+                               break;
+                       }
+                       pline("Your %s glows green for a moment.",
+                             objects[otmp->otyp].oc_name);
+                       otmp->cursed = 0;
+                       otmp->spe++;
                        break;
                }
-               pline("Your %s glows green for a moment.",
-                       objects[otmp->otyp].oc_name);
-               otmp->cursed = 0;
-               otmp->spe++;
-               break;
-           }
        case SCR_DESTROY_ARMOR:
-               if(confused) {
-                       register struct obj *otmp = some_armor();
-                       if(!otmp) {
-                               strange_feeling(scroll,"Your bones itch.");
-                               return(1);
+               if (confused) {
+                       struct obj     *otmp = some_armor();
+                       if (!otmp) {
+                               strange_feeling(scroll, "Your bones itch.");
+                               return (1);
                        }
                        pline("Your %s glows purple for a moment.",
-                               objects[otmp->otyp].oc_name);
+                             objects[otmp->otyp].oc_name);
                        otmp->rustfree = 0;
                        break;
                }
-               if(uarm) {
-                   pline("Your armor turns to dust and falls to the floor!");
-                   useup(uarm);
-               } else if(uarmh) {
-                   pline("Your helmet turns to dust and is blown away!");
-                   useup(uarmh);
-               } else if(uarmg) {
+               if (uarm) {
+                       pline("Your armor turns to dust and falls to the floor!");
+                       useup(uarm);
+               } else if (uarmh) {
+                       pline("Your helmet turns to dust and is blown away!");
+                       useup(uarmh);
+               } else if (uarmg) {
                        pline("Your gloves vanish!");
                        useup(uarmg);
                        selftouch("You");
                } else {
-                       strange_feeling(scroll,"Your skin itches.");
-                       return(1);
+                       strange_feeling(scroll, "Your skin itches.");
+                       return (1);
                }
                break;
        case SCR_CONFUSE_MONSTER:
-               if(confused) {
+               if (confused) {
                        pline("Your hands begin to glow purple.");
                        Confusion += rnd(100);
                } else {
@@ -98,324 +102,350 @@ doread() {
                }
                break;
        case SCR_SCARE_MONSTER:
-           {   register int ct = 0;
-               register struct monst *mtmp;
+               {
+                       int             ct = 0;
+                       struct monst   *mtmp;
 
-               for(mtmp = fmon; mtmp; mtmp = mtmp->nmon)
-                       if(cansee(mtmp->mx,mtmp->my)) {
-                               if(confused)
-                                       mtmp->mflee = mtmp->mfroz =
-                                       mtmp->msleep = 0;
+                       for (mtmp = fmon; mtmp; mtmp = mtmp->nmon)
+                               if (cansee(mtmp->mx, mtmp->my)) {
+                                       if (confused)
+                                               mtmp->mflee = mtmp->mfroz =
+                                                       mtmp->msleep = 0;
+                                       else
+                                               mtmp->mflee = 1;
+                                       ct++;
+                               }
+                       if (!ct) {
+                               if (confused)
+                                       pline("You hear sad wailing in the distance.");
                                else
-                                       mtmp->mflee = 1;
-                               ct++;
+                                       pline("You hear maniacal laughter in the distance.");
                        }
-               if(!ct) {
-                   if(confused)
-                       pline("You hear sad wailing in the distance.");
-                   else
-                       pline("You hear maniacal laughter in the distance.");
+                       break;
                }
-               break;
-           }
        case SCR_BLANK_PAPER:
-               if(confused)
-                   pline("You see strange patterns on this scroll.");
+               if (confused)
+                       pline("You see strange patterns on this scroll.");
                else
-                   pline("This scroll seems to be blank.");
+                       pline("This scroll seems to be blank.");
                break;
        case SCR_REMOVE_CURSE:
-           {   register struct obj *obj;
-               if(confused)
-                 pline("You feel like you need some help.");
-               else
-                 pline("You feel like someone is helping you.");
-               for(obj = invent; obj ; obj = obj->nobj)
-                       if(obj->owornmask)
-                               obj->cursed = confused;
-               if(Punished && !confused) {
-                       Punished = 0;
-                       freeobj(uchain);
-                       unpobj(uchain);
-                       free((char *) uchain);
-                       uball->spe = 0;
-                       uball->owornmask &= ~W_BALL;
-                       uchain = uball = (struct obj *) 0;
+               {
+                       struct obj     *obj;
+                       if (confused)
+                               pline("You feel like you need some help.");
+                       else
+                               pline("You feel like someone is helping you.");
+                       for (obj = invent; obj; obj = obj->nobj)
+                               if (obj->owornmask)
+                                       obj->cursed = confused;
+                       if (Punished && !confused) {
+                               Punished = 0;
+                               freeobj(uchain);
+                               unpobj(uchain);
+                               free((char *) uchain);
+                               uball->spe = 0;
+                               uball->owornmask &= ~W_BALL;
+                               uchain = uball = (struct obj *) 0;
+                       }
+                       break;
                }
-               break;
-           }
        case SCR_CREATE_MONSTER:
-           {   register int cnt = 1;
+               {
+                       int             cnt = 1;
 
-               if(!rn2(73)) cnt += rnd(4);
-               if(confused) cnt += 12;
-               while(cnt--)
-                   (void) makemon(confused ? PM_ACID_BLOB :
-                       (struct permonst *) 0, u.ux, u.uy);
-               break;
-           }
+                       if (!rn2(73))
+                               cnt += rnd(4);
+                       if (confused)
+                               cnt += 12;
+                       while (cnt--)
+                               (void) makemon(confused ? PM_ACID_BLOB :
+                                        (struct permonst *) 0, u.ux, u.uy);
+                       break;
+               }
        case SCR_ENCHANT_WEAPON:
-               if(uwep && confused) {
+               if (uwep && confused) {
                        pline("Your %s glows silver for a moment.",
-                               objects[uwep->otyp].oc_name);
+                             objects[uwep->otyp].oc_name);
                        uwep->rustfree = 1;
-               } else
-                       if(!chwepon(scroll, 1))         /* tests for !uwep */
-                               return(1);
+               } else if (!chwepon(scroll, 1)) /* tests for !uwep */
+                       return (1);
                break;
        case SCR_DAMAGE_WEAPON:
-               if(uwep && confused) {
+               if (uwep && confused) {
                        pline("Your %s glows purple for a moment.",
-                               objects[uwep->otyp].oc_name);
+                             objects[uwep->otyp].oc_name);
                        uwep->rustfree = 0;
-               } else
-                       if(!chwepon(scroll, -1))        /* tests for !uwep */
-                               return(1);
+               } else if (!chwepon(scroll, -1))        /* tests for !uwep */
+                       return (1);
                break;
        case SCR_TAMING:
-           {   register int i,j;
-               register int bd = confused ? 5 : 1;
-               register struct monst *mtmp;
+               {
+                       int             i, j;
+                       int             bd = confused ? 5 : 1;
+                       struct monst   *mtmp;
 
-               for(i = -bd; i <= bd; i++) for(j = -bd; j <= bd; j++)
-               if(mtmp = m_at(u.ux+i, u.uy+j))
-                       (void) tamedog(mtmp, (struct obj *) 0);
-               break;
-           }
+                       for (i = -bd; i <= bd; i++)
+                               for (j = -bd; j <= bd; j++)
+                                       if ((mtmp = m_at(u.ux + i, u.uy + j)) != NULL)
+                                               (void) tamedog(mtmp, (struct obj *) 0);
+                       break;
+               }
        case SCR_GENOCIDE:
-           {   extern char genocided[], fut_geno[];
-               char buf[BUFSZ];
-               register struct monst *mtmp, *mtmp2;
+               {
+                       char            buf[BUFSZ];
+                       struct monst   *mtmp, *mtmp2;
 
-               pline("You have found a scroll of genocide!");
-               known = TRUE;
-               if(confused)
-                       *buf = u.usym;
-               else do {
-           pline("What monster do you want to genocide (Type the letter)? ");
-                       getlin(buf);
-               } while(strlen(buf) != 1 || !monstersym(*buf));
-               if(!index(fut_geno, *buf))
-                       charcat(fut_geno, *buf);
-               if(!index(genocided, *buf))
-                       charcat(genocided, *buf);
-               else {
-                       pline("Such monsters do not exist in this world.");
+                       pline("You have found a scroll of genocide!");
+                       known = TRUE;
+                       if (confused)
+                               *buf = u.usym;
+                       else
+                               do {
+                                       pline("What monster do you want to genocide (Type the letter)? ");
+                                       getlin(buf);
+                               } while (strlen(buf) != 1 || !monstersym(*buf));
+                       if (!strchr(fut_geno, *buf))
+                               charcat(fut_geno, *buf);
+                       if (!strchr(genocided, *buf))
+                               charcat(genocided, *buf);
+                       else {
+                               pline("Such monsters do not exist in this world.");
+                               break;
+                       }
+                       for (mtmp = fmon; mtmp; mtmp = mtmp2) {
+                               mtmp2 = mtmp->nmon;
+                               if (mtmp->data->mlet == *buf)
+                                       mondead(mtmp);
+                       }
+                       pline("Wiped out all %c's.", *buf);
+                       if (*buf == u.usym) {
+                               killer = "scroll of genocide";
+                               u.uhp = -1;
+                       }
                        break;
                }
-               for(mtmp = fmon; mtmp; mtmp = mtmp2){
-                       mtmp2 = mtmp->nmon;
-                       if(mtmp->data->mlet == *buf)
-                               mondead(mtmp);
-               }
-               pline("Wiped out all %c's.", *buf);
-               if(*buf == u.usym) {
-                       killer = "scroll of genocide";
-                       u.uhp = -1;
-               }
-               break;
-               }
        case SCR_LIGHT:
-               if(!Blind) known = TRUE;
+               if (!Blind)
+                       known = TRUE;
                litroom(!confused);
                break;
        case SCR_TELEPORTATION:
-               if(confused)
+               if (confused)
                        level_tele();
                else {
 #ifdef QUEST
-                       register int oux = u.ux, ouy = u.uy;
+                       int             oux = u.ux, ouy = u.uy;
                        tele();
-                       if(dist(oux, ouy) > 100) known = TRUE;
-#else QUEST
-                       register int uroom = inroom(u.ux, u.uy);
+                       if (dist(oux, ouy) > 100)
+                               known = TRUE;
+#else  /* QUEST */
+                       int             uroom = inroom(u.ux, u.uy);
                        tele();
-                       if(uroom != inroom(u.ux, u.uy)) known = TRUE;
-#endif QUEST
+                       if (uroom != inroom(u.ux, u.uy))
+                               known = TRUE;
+#endif /* QUEST */
                }
                break;
        case SCR_GOLD_DETECTION:
-           /* Unfortunately this code has become slightly less elegant,
-              now that gold and traps no longer are of the same type. */
-           if(confused) {
-               register struct trap *ttmp;
+               /*
+                * Unfortunately this code has become slightly less elegant,
+                * now that gold and traps no longer are of the same type.
+                */
+               if (confused) {
+                       struct trap    *ttmp;
 
-               if(!ftrap) {
-                       strange_feeling(scroll, "Your toes stop itching.");
-                       return(1);
-               } else {
-                       for(ttmp = ftrap; ttmp; ttmp = ttmp->ntrap)
-                               if(ttmp->tx != u.ux || ttmp->ty != u.uy)
-                                       goto outtrapmap;
-                       /* only under me - no separate display required */
-                       pline("Your toes itch!");
-                       break;
+                       if (!ftrap) {
+                               strange_feeling(scroll, "Your toes stop itching.");
+                               return (1);
+                       } else {
+                               for (ttmp = ftrap; ttmp; ttmp = ttmp->ntrap)
+                                       if (ttmp->tx != u.ux || ttmp->ty != u.uy)
+                                               goto outtrapmap;
+                               /*
+                                * only under me - no separate display
+                                * required
+                                */
+                               pline("Your toes itch!");
+                               break;
                outtrapmap:
-                       cls();
-                       for(ttmp = ftrap; ttmp; ttmp = ttmp->ntrap)
-                               at(ttmp->tx, ttmp->ty, '$');
-                       prme();
-                       pline("You feel very greedy!");
-               }
-           } else {
-               register struct gold *gtmp;
-
-               if(!fgold) {
-                       strange_feeling(scroll, "You feel materially poor.");
-                       return(1);
+                               cls();
+                               for (ttmp = ftrap; ttmp; ttmp = ttmp->ntrap)
+                                       at(ttmp->tx, ttmp->ty, '$');
+                               prme();
+                               pline("You feel very greedy!");
+                       }
                } else {
-                       known = TRUE;
-                       for(gtmp = fgold; gtmp; gtmp = gtmp->ngold)
-                               if(gtmp->gx != u.ux || gtmp->gy != u.uy)
-                                       goto outgoldmap;
-                       /* only under me - no separate display required */
-                       pline("You notice some gold between your feet.");
-                       break;
+                       struct gold    *gtmp;
+
+                       if (!fgold) {
+                               strange_feeling(scroll, "You feel materially poor.");
+                               return (1);
+                       } else {
+                               known = TRUE;
+                               for (gtmp = fgold; gtmp; gtmp = gtmp->ngold)
+                                       if (gtmp->gx != u.ux || gtmp->gy != u.uy)
+                                               goto outgoldmap;
+                               /*
+                                * only under me - no separate display
+                                * required
+                                */
+                               pline("You notice some gold between your feet.");
+                               break;
                outgoldmap:
-                       cls();
-                       for(gtmp = fgold; gtmp; gtmp = gtmp->ngold)
-                               at(gtmp->gx, gtmp->gy, '$');
-                       prme();
-                       pline("You feel very greedy, and sense gold!");
+                               cls();
+                               for (gtmp = fgold; gtmp; gtmp = gtmp->ngold)
+                                       at(gtmp->gx, gtmp->gy, '$');
+                               prme();
+                               pline("You feel very greedy, and sense gold!");
+                       }
                }
-           }
                /* common sequel */
                more();
                docrt();
                break;
        case SCR_FOOD_DETECTION:
-           {   register ct = 0, ctu = 0;
-               register struct obj *obj;
-               register char foodsym = confused ? POTION_SYM : FOOD_SYM;
+               {
+                       int ct = 0, ctu = 0;
+                       struct obj     *obj;
+                       char            foodsym = confused ? POTION_SYM : FOOD_SYM;
+
+                       for (obj = fobj; obj; obj = obj->nobj)
+                               if (obj->olet == FOOD_SYM) {
+                                       if (obj->ox == u.ux && obj->oy == u.uy)
+                                               ctu++;
+                                       else
+                                               ct++;
+                               }
+                       if (!ct && !ctu) {
+                               strange_feeling(scroll, "Your nose twitches.");
+                               return (1);
+                       } else if (!ct) {
+                               known = TRUE;
+                               pline("You smell %s close nearby.",
+                                     confused ? "something" : "food");
 
-               for(obj = fobj; obj; obj = obj->nobj)
-                       if(obj->olet == FOOD_SYM) {
-                               if(obj->ox == u.ux && obj->oy == u.uy) ctu++;
-                               else ct++;
+                       } else {
+                               known = TRUE;
+                               cls();
+                               for (obj = fobj; obj; obj = obj->nobj)
+                                       if (obj->olet == foodsym)
+                                               at(obj->ox, obj->oy, FOOD_SYM);
+                               prme();
+                               pline("Your nose tingles and you smell %s!",
+                                     confused ? "something" : "food");
+                               more();
+                               docrt();
                        }
-               if(!ct && !ctu) {
-                       strange_feeling(scroll,"Your nose twitches.");
-                       return(1);
-               } else if(!ct) {
-                       known = TRUE;
-                       pline("You smell %s close nearby.",
-                               confused ? "something" : "food");
-                       
-               } else {
-                       known = TRUE;
-                       cls();
-                       for(obj = fobj; obj; obj = obj->nobj)
-                           if(obj->olet == foodsym)
-                               at(obj->ox, obj->oy, FOOD_SYM);
-                       prme();
-                       pline("Your nose tingles and you smell %s!",
-                               confused ? "something" : "food");
-                       more();
-                       docrt();
+                       break;
                }
-               break;
-           }
        case SCR_IDENTIFY:
                /* known = TRUE; */
-               if(confused)
+               if (confused)
                        pline("You identify this as an identify scroll.");
                else
                        pline("This is an identify scroll.");
                useup(scroll);
                objects[SCR_IDENTIFY].oc_name_known = 1;
-               if(!confused)
-                   while(
-                       !ggetobj("identify", identify, rn2(5) ? 1 : rn2(5))
-                       && invent
-                   );
-               return(1);
+               if (!confused)
+                       while (
+                        !ggetobj("identify", identify, rn2(5) ? 1 : rn2(5))
+                              && invent
+                               );
+               return (1);
        case SCR_MAGIC_MAPPING:
-           {   register struct rm *lev;
-               register int num, zx, zy;
+               {
+                       struct rm      *lev;
+                       int             num, zx, zy;
 
-               known = TRUE;
-               pline("On this scroll %s a map!",
-                       confused ? "was" : "is");
-               for(zy = 0; zy < ROWNO; zy++)
-                       for(zx = 0; zx < COLNO; zx++) {
-                               if(confused && rn2(7)) continue;
-                               lev = &(levl[zx][zy]);
-                               if((num = lev->typ) == 0)
-                                       continue;
-                               if(num == SCORR) {
-                                       lev->typ = CORR;
-                                       lev->scrsym = CORR_SYM;
-                               } else
-                               if(num == SDOOR) {
-                                       lev->typ = DOOR;
-                                       lev->scrsym = '+';
-                                       /* do sth in doors ? */
-                               } else if(lev->seen) continue;
+                       known = TRUE;
+                       pline("On this scroll %s a map!",
+                             confused ? "was" : "is");
+                       for (zy = 0; zy < ROWNO; zy++)
+                               for (zx = 0; zx < COLNO; zx++) {
+                                       if (confused && rn2(7))
+                                               continue;
+                                       lev = &(levl[zx][zy]);
+                                       if ((num = lev->typ) == 0)
+                                               continue;
+                                       if (num == SCORR) {
+                                               lev->typ = CORR;
+                                               lev->scrsym = CORR_SYM;
+                                       } else if (num == SDOOR) {
+                                               lev->typ = DOOR;
+                                               lev->scrsym = '+';
+                                               /* do sth in doors ? */
+                                       } else if (lev->seen)
+                                               continue;
 #ifndef QUEST
-                               if(num != ROOM)
-#endif QUEST
-                               {
-                                 lev->seen = lev->new = 1;
-                                 if(lev->scrsym == ' ' || !lev->scrsym)
-                                   newsym(zx,zy);
-                                 else
-                                   on_scr(zx,zy);
+                                       if (num != ROOM)
+#endif /* QUEST */
+                                       {
+                                               lev->seen = lev->new = 1;
+                                               if (lev->scrsym == ' ' || !lev->scrsym)
+                                                       newsym(zx, zy);
+                                               else
+                                                       on_scr(zx, zy);
+                                       }
                                }
-                       }
-               break;
-           }
+                       break;
+               }
        case SCR_AMNESIA:
-           {   register int zx, zy;
+               {
+                       int             zx, zy;
 
-               known = TRUE;
-               for(zx = 0; zx < COLNO; zx++) for(zy = 0; zy < ROWNO; zy++)
-                   if(!confused || rn2(7))
-                       if(!cansee(zx,zy))
-                           levl[zx][zy].seen = 0;
-               docrt();
-               pline("Thinking of Maud you forget everything else.");
-               break;
-           }
+                       known = TRUE;
+                       for (zx = 0; zx < COLNO; zx++)
+                               for (zy = 0; zy < ROWNO; zy++)
+                                       if (!confused || rn2(7))
+                                               if (!cansee(zx, zy))
+                                                       levl[zx][zy].seen = 0;
+                       docrt();
+                       pline("Thinking of Maud you forget everything else.");
+                       break;
+               }
        case SCR_FIRE:
-           {   register int num;
-               register struct monst *mtmp;
+               {
+                       int             num = 0;
+                       struct monst   *mtmp;
 
-               known = TRUE;
-               if(confused) {
-                   pline("The scroll catches fire and you burn your hands.");
-                   losehp(1, "scroll of fire");
-               } else {
-                   pline("The scroll erupts in a tower of flame!");
-                   if(Fire_resistance)
-                       pline("You are uninjured.");
-                   else {
-                       num = rnd(6);
-                       u.uhpmax -= num;
-                       losehp(num, "scroll of fire");
-                   }
-               }
-               num = (2*num + 1)/3;
-               for(mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
-                   if(dist(mtmp->mx,mtmp->my) < 3) {
-                       mtmp->mhp -= num;
-                       if(index("FY", mtmp->data->mlet))
-                           mtmp->mhp -= 3*num; /* this might well kill 'F's */
-                       if(mtmp->mhp < 1) {
-                           killed(mtmp);
-                           break;              /* primitive */
+                       known = TRUE;
+                       if (confused) {
+                               pline("The scroll catches fire and you burn your hands.");
+                               losehp(1, "scroll of fire");
+                       } else {
+                               pline("The scroll erupts in a tower of flame!");
+                               if (Fire_resistance)
+                                       pline("You are uninjured.");
+                               else {
+                                       num = rnd(6);
+                                       u.uhpmax -= num;
+                                       losehp(num, "scroll of fire");
+                               }
+                       }
+                       num = (2 * num + 1) / 3;
+                       for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
+                               if (dist(mtmp->mx, mtmp->my) < 3) {
+                                       mtmp->mhp -= num;
+                                       if (strchr("FY", mtmp->data->mlet))
+                                               mtmp->mhp -= 3 * num;   /* this might well kill
+                                                                        * 'F's */
+                                       if (mtmp->mhp < 1) {
+                                               killed(mtmp);
+                                               break;  /* primitive */
+                                       }
+                               }
                        }
-                   }
+                       break;
                }
-               break;
-           }
        case SCR_PUNISHMENT:
                known = TRUE;
-               if(confused) {
+               if (confused) {
                        pline("You feel guilty.");
                        break;
                }
                pline("You are being punished for your misbehaviour!");
-               if(Punished){
+               if (Punished) {
                        pline("Your iron ball gets heavier.");
                        uball->owt += 15;
                        break;
@@ -423,121 +453,137 @@ doread() {
                Punished = INTRINSIC;
                setworn(mkobj_at(CHAIN_SYM, u.ux, u.uy), W_CHAIN);
                setworn(mkobj_at(BALL_SYM, u.ux, u.uy), W_BALL);
-               uball->spe = 1;         /* special ball (see save) */
+               uball->spe = 1; /* special ball (see save) */
                break;
        default:
                impossible("What weird language is this written in? (%u)",
-                       scroll->otyp);
+                          scroll->otyp);
        }
-       if(!objects[scroll->otyp].oc_name_known) {
-               if(known && !confused) {
+       if (!objects[scroll->otyp].oc_name_known) {
+               if (known && !confused) {
                        objects[scroll->otyp].oc_name_known = 1;
-                       more_experienced(0,10);
-               } else if(!objects[scroll->otyp].oc_uname)
+                       more_experienced(0, 10);
+               } else if (!objects[scroll->otyp].oc_uname)
                        docall(scroll);
        }
        useup(scroll);
-       return(1);
+       return (1);
 }
 
-identify(otmp)         /* also called by newmail() */
-register struct obj *otmp;
+int
+identify(otmp)                 /* also called by newmail() */
+       struct obj     *otmp;
 {
        objects[otmp->otyp].oc_name_known = 1;
        otmp->known = otmp->dknown = 1;
        prinv(otmp);
-       return(1);
+       return (1);
 }
 
+void
 litroom(on)
-register boolean on;
+       boolean         on;
 {
-       register num,zx,zy;
+#ifndef QUEST
+       int num, zx, zy;
+#endif
 
        /* first produce the text (provided he is not blind) */
-       if(Blind) goto do_it;
-       if(!on) {
-               if(u.uswallow || !xdnstair || levl[u.ux][u.uy].typ == CORR ||
+       if (Blind)
+               goto do_it;
+       if (!on) {
+               if (u.uswallow || !xdnstair || levl[u.ux][u.uy].typ == CORR ||
                    !levl[u.ux][u.uy].lit) {
                        pline("It seems even darker in here than before.");
                        return;
                } else
                        pline("It suddenly becomes dark in here.");
        } else {
-               if(u.uswallow){
+               if (u.uswallow) {
                        pline("%s's stomach is lit.", Monnam(u.ustuck));
                        return;
                }
-               if(!xdnstair){
+               if (!xdnstair) {
                        pline("Nothing Happens.");
                        return;
                }
 #ifdef QUEST
                pline("The cave lights up around you, then fades.");
                return;
-#else QUEST
-               if(levl[u.ux][u.uy].typ == CORR) {
-                   pline("The corridor lights up around you, then fades.");
-                   return;
-               } else if(levl[u.ux][u.uy].lit) {
-                   pline("The light here seems better now.");
-                   return;
+#else  /* QUEST */
+               if (levl[u.ux][u.uy].typ == CORR) {
+                       pline("The corridor lights up around you, then fades.");
+                       return;
+               } else if (levl[u.ux][u.uy].lit) {
+                       pline("The light here seems better now.");
+                       return;
                } else
-                   pline("The room is lit.");
-#endif QUEST
+                       pline("The room is lit.");
+#endif /* QUEST */
        }
 
 do_it:
 #ifdef QUEST
        return;
-#else QUEST
-       if(levl[u.ux][u.uy].lit == on)
+#else  /* QUEST */
+       if (levl[u.ux][u.uy].lit == on)
                return;
-       if(levl[u.ux][u.uy].typ == DOOR) {
-               if(IS_ROOM(levl[u.ux][u.uy+1].typ)) zy = u.uy+1;
-               else if(IS_ROOM(levl[u.ux][u.uy-1].typ)) zy = u.uy-1;
-               else zy = u.uy;
-               if(IS_ROOM(levl[u.ux+1][u.uy].typ)) zx = u.ux+1;
-               else if(IS_ROOM(levl[u.ux-1][u.uy].typ)) zx = u.ux-1;
-               else zx = u.ux;
+       if (levl[u.ux][u.uy].typ == DOOR) {
+               if (IS_ROOM(levl[u.ux][u.uy + 1].typ))
+                       zy = u.uy + 1;
+               else if (IS_ROOM(levl[u.ux][u.uy - 1].typ))
+                       zy = u.uy - 1;
+               else
+                       zy = u.uy;
+               if (IS_ROOM(levl[u.ux + 1][u.uy].typ))
+                       zx = u.ux + 1;
+               else if (IS_ROOM(levl[u.ux - 1][u.uy].typ))
+                       zx = u.ux - 1;
+               else
+                       zx = u.ux;
        } else {
                zx = u.ux;
                zy = u.uy;
        }
-       for(seelx = u.ux; (num = levl[seelx-1][zy].typ) != CORR && num != 0;
-               seelx--);
-       for(seehx = u.ux; (num = levl[seehx+1][zy].typ) != CORR && num != 0;
-               seehx++);
-       for(seely = u.uy; (num = levl[zx][seely-1].typ) != CORR && num != 0;
-               seely--);
-       for(seehy = u.uy; (num = levl[zx][seehy+1].typ) != CORR && num != 0;
-               seehy++);
-       for(zy = seely; zy <= seehy; zy++)
-               for(zx = seelx; zx <= seehx; zx++) {
+       for (seelx = u.ux; (num = levl[seelx - 1][zy].typ) != CORR && num != 0;
+            seelx--);
+       for (seehx = u.ux; (num = levl[seehx + 1][zy].typ) != CORR && num != 0;
+            seehx++);
+       for (seely = u.uy; (num = levl[zx][seely - 1].typ) != CORR && num != 0;
+            seely--);
+       for (seehy = u.uy; (num = levl[zx][seehy + 1].typ) != CORR && num != 0;
+            seehy++);
+       for (zy = seely; zy <= seehy; zy++)
+               for (zx = seelx; zx <= seehx; zx++) {
                        levl[zx][zy].lit = on;
-                       if(!Blind && dist(zx,zy) > 2)
-                               if(on) prl(zx,zy); else nosee(zx,zy);
+                       if (!Blind && dist(zx, zy) > 2) {
+                               if (on)
+                                       prl(zx, zy);
+                               else
+                                       nosee(zx, zy);
+                       }
                }
-       if(!on) seehx = 0;
-#endif QUEST
+       if (!on)
+               seehx = 0;
+#endif /* QUEST */
 }
 
 /* Test whether we may genocide all monsters with symbol  ch  */
-monstersym(ch)                         /* arnold@ucsfcgl */
-register char ch;
+int
+monstersym(ch)                 /* arnold@ucsfcgl */
+       char            ch;
 {
-       register struct permonst *mp;
-       extern struct permonst pm_eel;
+       const struct permonst *mp;
 
        /*
         * can't genocide certain monsters
         */
-       if (index("12 &:", ch))
+       if (strchr("12 &:", ch))
                return FALSE;
 
        if (ch == pm_eel.mlet)
                return TRUE;
-       for (mp = mons; mp < &mons[CMNUM+2]; mp++)
+       for (mp = mons; mp < &mons[CMNUM + 2]; mp++)
                if (mp->mlet == ch)
                        return TRUE;
        return FALSE;