-WARNS6 cleanup (4670 warnings)
authorPeter Avalos <pavalos@dragonflybsd.org>
Sat, 26 Aug 2006 17:05:05 +0000 (17:05 +0000)
committerPeter Avalos <pavalos@dragonflybsd.org>
Sat, 26 Aug 2006 17:05:05 +0000 (17:05 +0000)
-ANSI function declarations
-Staticize functions
-Rename local variables that shadowed global declarations
-Remove an extra semicolon after an if statement in makemaze()
-Remove code that was previously commented out, or that was unused
-Use NULL for string pointers == 0 and don't redefine NULL
-Add function protoypes for all functions
-Add macros for stty and gtty that use ioctl which removes the dependency
on libcompat.
-Add DragonFly keyword where needed
-Add new arrays (potionhide/scrollhide) to prevent modifying string
constants, then fix problems associated with this hiding
mechanism.  (taken from NetBSD)

25 files changed:
games/larn/Makefile
games/larn/bill.c
games/larn/config.c
games/larn/create.c
games/larn/data.c
games/larn/diag.c
games/larn/display.c
games/larn/fortune.c
games/larn/global.c
games/larn/header.h
games/larn/help.c
games/larn/io.c
games/larn/main.c
games/larn/monster.c
games/larn/moreobj.c
games/larn/movem.c
games/larn/nap.c
games/larn/object.c
games/larn/pathnames.h
games/larn/regen.c
games/larn/savelev.c
games/larn/scores.c
games/larn/signal.c
games/larn/store.c
games/larn/tok.c

index b4000c4..54abc6b 100644 (file)
@@ -1,6 +1,6 @@
 #      @(#)Makefile    5.12 (Berkeley) 5/30/93
 # $FreeBSD: src/games/larn/Makefile,v 1.6.2.5 2002/08/07 16:31:42 ru Exp $
-# $DragonFly: src/games/larn/Makefile,v 1.3 2005/05/07 18:33:25 corecode Exp $
+# $DragonFly: src/games/larn/Makefile,v 1.4 2006/08/26 17:05:05 pavalos Exp $
 
 # EXTRA
 #      Incorporates code to gather additional performance statistics
@@ -59,11 +59,12 @@ CFLAGS+=-DBSD -DVER=12 -DSUBVER=0 -DNONAP -DUIDSCORE
 SRCS=  main.c object.c create.c tok.c display.c global.c data.c io.c \
        monster.c store.c diag.c help.c config.c nap.c bill.c scores.c \
        signal.c moreobj.c movem.c regen.c fortune.c savelev.c
-DPADD= ${LIBTERMCAP} ${LIBCOMPAT}
-LDADD= -ltermcap -lcompat
+DPADD= ${LIBTERMCAP}
+LDADD= -ltermcap
 FILES= larnmaze larnopts larn.help
 FILESDIR=      ${SHAREDIR}/games/larn
 HIDEGAME=hidegame
+WARNS?=        6
 
 .PATH: ${.CURDIR}/datfiles
 
index a24fdbe..745b257 100644 (file)
@@ -32,7 +32,7 @@
  *
  * @(#)bill.c  5.2 (Berkeley) 5/28/91
  * $FreeBSD: src/games/larn/bill.c,v 1.6 1999/11/30 03:48:58 billf Exp $
- * $DragonFly: src/games/larn/bill.c,v 1.2 2003/06/17 04:25:24 dillon Exp $
+ * $DragonFly: src/games/larn/bill.c,v 1.3 2006/08/26 17:05:05 pavalos Exp $
  */
 
 #include <sys/file.h>
@@ -42,7 +42,7 @@
 
 /* bill.c               Larn is copyrighted 1986 by Noah Morgan. */
 
-char *mail[] = {
+const char *mail[] = {
        "From: dev-null (the LRS - Larn Revenue Service)\n",
        "Subject: undeclared income\n",
        "\n   We have heard you survived the caverns of Larn.  Let me be the",
@@ -111,13 +111,13 @@ char *mail[] = {
  */
 
 void
-mailbill()
+mailbill(void)
 {
        int i;
        char fname[32];
        char buf[128];
-       char **cp;
-       int fd;
+       const char **cp;
+       int d;
 
        wait(0);
        if (fork() == 0) {
@@ -125,24 +125,24 @@ mailbill()
                cp = mail;
                sprintf(fname, "/tmp/#%dlarnmail", getpid());
                for (i = 0; i < 6; i++) {
-                       if ((fd = open(fname, O_WRONLY | O_TRUNC | O_CREAT),
+                       if ((d = open(fname, O_WRONLY | O_TRUNC | O_CREAT),
                            0660) == -1)
                                exit(0);
                        while (*cp != NULL) {
                                if (*cp[0] == '1') {
                                        sprintf(buf, "\n%ld gold pieces back with you from your journey.  As the",
                                            (long)c[GOLD]);
-                                       write(fd, buf, strlen(buf));
+                                       write(d, buf, strlen(buf));
                                } else if (*cp[0] == '2') {
                                        sprintf(buf, "\nin preparing your tax bill.  You owe %ld gold pieces as", (long)c[GOLD]*TAXRATE);
-                                       write(fd, buf, strlen(buf));
+                                       write(d, buf, strlen(buf));
                                } else
-                                       write(fd, *cp, strlen(*cp));
+                                       write(d, *cp, strlen(*cp));
                                cp++;
                        }
                        cp++;
 
-                       close(fd);
+                       close(d);
                        sprintf(buf, "/usr/sbin/sendmail %s < %s > /dev/null",
                            loginname, fname);
                        system(buf);
index ccdd6d5..327d04b 100644 (file)
@@ -5,6 +5,7 @@
  *                  do runtime concatenation, in main.
  *
  *             Larn is copyrighted 1986 by Noah Morgan.
+ * $DragonFly: src/games/larn/config.c,v 1.2 2006/08/26 17:05:05 pavalos Exp $
  */
 #include "header.h"
 #include "pathnames.h"
@@ -28,9 +29,6 @@ char scorefile[] = _PATH_SCORE;
 /* the maze data file */
 char larnlevels[] = _PATH_LEVELS;
 
-/* the fortune data file */
-char fortfile[] = _PATH_FORTS;
-
 /* the .larnopts filename */
 char optsfile[1024] ="/.larnopts";
 
@@ -39,7 +37,7 @@ char playerids[] = _PATH_PLAYERIDS;
 
 char diagfile[] ="Diagfile";           /* the diagnostic filename */
 char ckpfile[] ="Larn12.0.ckp";                /* the checkpoint filename */
-char *password ="pvnert(x)";           /* the wizards password <=32 */
+char password[] ="pvnert(x)";          /* the wizards password <=32 */
 char psname[PSNAMESIZE]="larn";                /* the process name */
 
 #define        WIZID   1
index a8974a5..6a1c851 100644 (file)
@@ -1,17 +1,27 @@
 /*     create.c                Larn is copyrighted 1986 by Noah Morgan. */
 /* $FreeBSD: src/games/larn/create.c,v 1.4 1999/11/16 02:57:20 billf Exp $ */
-/* $DragonFly: src/games/larn/create.c,v 1.2 2003/06/17 04:25:24 dillon Exp $ */
+/* $DragonFly: src/games/larn/create.c,v 1.3 2006/08/26 17:05:05 pavalos Exp $ */
 #include "header.h"
-extern char spelknow[],larnlevels[];
-extern char beenhere[],wizard,level;
-extern short oldx,oldy;
+
+static void    makemaze(int);
+static int     cannedlevel(int);
+static void    treasureroom(int);
+static void    troom(int, int, int, int, int, int);
+static void    makeobject(int);
+static void    fillmroom(int, char, int);
+static void    froom(int, char, int);
+static void    fillroom(char, int);
+static void    sethp(int);
+static void    checkgen(void);
+
 /*
        makeplayer()
 
        subroutine to create the player and the players attributes
        this is called at the beginning of a game and at no other time
  */
-makeplayer()
+void
+makeplayer(void)
        {
        int i;
        scbr();  clear();
@@ -45,11 +55,11 @@ makeplayer()
        levels will get a few more monsters.
        Note that it is here we remove genocided monsters from the present level.
  */
-newcavelevel(x)
-       int x;
+void
+newcavelevel(int x)
        {
        int i,j;
-       if (beenhere[level]) savelevel();       /* put the level back into storage      */
+       if (beenhere[(int)level]) savelevel();  /* put the level back into storage      */
        level = x;                              /* get the new level and put in working storage */
        if (beenhere[x]==0) for (i=0; i<MAXY; i++) for (j=0; j<MAXX; j++) know[j][i]=mitem[j][i]=0;
                else { getlevel(); sethp(0);  goto chgn; }
@@ -74,14 +84,15 @@ chgn: checkgen();   /* wipe out any genocided monsters */
        subroutine to make the caverns for a given level.  only walls are made.
  */
 static int mx,mxl,mxh,my,myl,myh,tmp2;
- makemaze(k)
-       int k;
+
+static void
+makemaze(int k)
        {
        int i,j,tmp;
        int z;
        if (k > 1 && (rnd(17)<=4 || k==MAXLEVEL-1 || k==MAXLEVEL+MAXVLEVEL-1))
                {
-               if (cannedlevel(k));    return;         /* read maze from data file */
+               if (cannedlevel(k))     return;         /* read maze from data file */
                }
        if (k==0)  tmp=0;  else tmp=OWALL;
        for (i=0; i<MAXY; i++)  for (j=0; j<MAXX; j++)  item[j][i]=tmp;
@@ -118,8 +129,8 @@ static int mx,mxl,mxh,my,myl,myh,tmp2;
 /*
        function to eat away a filled in maze
  */
-eat(xx,yy)
-       int xx,yy;
+void
+eat(int xx, int yy)
        {
        int dir,try;
        dir = rnd(4);   try=2;
@@ -163,10 +174,10 @@ eat(xx,yy)
  *             ~       eye of larn             !       cure dianthroritis
  *             -       random object
  */
-cannedlevel(k)
-       int k;
+static int
+cannedlevel(int k)
        {
-       char *row,*lgetl();
+       char *row;
        int i,j;
        int it,arg,mit,marg;
        if (lopen(larnlevels)<0)
@@ -217,8 +228,8 @@ cannedlevel(k)
        level 10's treasure room has the eye in it and demon lords
        level V3 has potion of cure dianthroritis and demon prince
  */
-treasureroom(lv)
-       int lv;
+static void
+treasureroom(int lv)
        {
        int tx,ty,xsize,ysize;
 
@@ -238,8 +249,8 @@ treasureroom(lv)
  *     room is filled with objects and monsters
  *     the coordinate given is that of the upper left corner of the room
  */
-troom(lv,xsize,ysize,tx,ty,glyph)
-       int lv,xsize,ysize,tx,ty,glyph;
+static void
+troom(int lv, int xsize, int ysize, int tx, int ty, int glyph)
        {
        int i,j;
        int tp1,tp2;
@@ -278,16 +289,14 @@ troom(lv,xsize,ysize,tx,ty,glyph)
        playerx=tp1;  playery=tp2;
        }
 \f
-static void fillroom();
-
 /*
        ***********
        MAKE_OBJECT
        ***********
        subroutine to create the objects in the maze for the given level
  */
-makeobject(j)
-       int j;
+static void
+makeobject(int j)
        {
        int i;
        if (j==0)
@@ -373,17 +382,15 @@ makeobject(j)
 /*
        subroutine to fill in a number of objects of the same kind
  */
-
-fillmroom(n,what,arg)
-       int n,arg;
-       char what;
+static void
+fillmroom(int n, char what, int arg)
        {
        int i;
        for (i=0; i<n; i++)             fillroom(what,arg);
        }
-froom(n,itm,arg)
-       int n,arg;
-       char itm;
+
+static void
+froom(int n, char itm, int arg)
        {       if (rnd(151) < n) fillroom(itm,arg);    }
 
 /*
@@ -391,9 +398,7 @@ froom(n,itm,arg)
  *     uses a random walk
  */
 static void
-fillroom(what,arg)
-       int arg;
-       char what;
+fillroom(char what, int arg)
        {
        int x,y;
 
@@ -420,8 +425,8 @@ fillroom(what,arg)
        subroutine to put monsters into an empty room without walls or other
        monsters
  */
-fillmonst(what)
-       char what;
+int
+fillmonst(char what)
        {
        int x,y,trys;
        for (trys=5; trys>0; --trys) /* max # of creation attempts */
@@ -430,7 +435,7 @@ fillmonst(what)
          if ((item[x][y]==0) && (mitem[x][y]==0) && ((playerx!=x) || (playery!=y)))
                {
                mitem[x][y] = what;  know[x][y]=0;
-               hitp[x][y] = monster[what].hitpoints;  return(0);
+               hitp[x][y] = monster[(int)what].hitpoints;  return(0);
                }
          }
        return(-1); /* creation failure */
@@ -441,8 +446,8 @@ fillmonst(what)
        must be done when entering a new level
        if sethp(1) then wipe out old monsters else leave them there
  */
-sethp(flg)
-       int flg;
+static void
+sethp(int flg)
        {
        int i,j;
        if (flg) for (i=0; i<MAXY; i++) for (j=0; j<MAXX; j++) stealth[j][i]=0;
@@ -455,11 +460,12 @@ sethp(flg)
 /*
  *     Function to destroy all genocided monsters on the present level
  */
-checkgen()
+static void
+checkgen(void)
        {
        int x,y;
        for (y=0; y<MAXY; y++)
                for (x=0; x<MAXX; x++)
-                       if (monster[mitem[x][y]].genocided)
+                       if (monster[(int)mitem[x][y]].genocided)
                                mitem[x][y]=0; /* no more monster */
        }
index 5a4288f..be1e073 100644 (file)
@@ -32,7 +32,7 @@
  *
  * @(#)data.c  5.3 (Berkeley) 5/13/91
  * $FreeBSD: src/games/larn/data.c,v 1.5 1999/11/30 03:48:59 billf Exp $
- * $DragonFly: src/games/larn/data.c,v 1.3 2006/06/13 22:12:16 dillon Exp $
+ * $DragonFly: src/games/larn/data.c,v 1.4 2006/08/26 17:05:05 pavalos Exp $
  */
 
 /*     data.c          Larn is copyrighted 1986 by Noah Morgan. */
@@ -51,7 +51,7 @@ static char aa6[] =   "    major deity    ";
 static char aa7[] =    "  novice guardian  ";
 static char aa8[] =    "apprentice guardian";
 static char aa9[] =    "    The Creator    ";
-char *class[]=
+const char *class[]=
 {      "  novice explorer  ", "apprentice explorer", " practiced explorer",/*  -3*/
        "   expert explorer ", "  novice adventurer", "     adventurer    ",/*  -6*/
        "apprentice conjurer", "     conjurer      ", "  master conjurer  ",/*  -9*/
@@ -147,7 +147,9 @@ short lastpx,lastpy;        /*      0 --- MAXX-1  or  0 --- MAXY-1                                  */
 short oldx,oldy;
 short lasthx=0,lasthy=0;       /* location of monster last hit by player               */
 short nobeep=0;                        /* true if program is not to beep                                       */
-/* unsigned long randx=33601;      /*      the random number seed                                          */
+#ifdef MACRORND
+unsigned long randx=33601;      /*      the random number seed                                          */
+#endif
 time_t initialtime=0;                  /* time playing began                                                   */
 long gtime=0;                          /*      the clock for the game                                          */
 long outstanding_taxes=0;      /* present tax bill from score file                     */
@@ -155,12 +157,12 @@ long c[100],cbak[100];            /*      the character description arrays                        */
 int enable_scroll=0;           /* constant for enabled/disabled scrolling regn */
 char aborted[] = " aborted";
 struct sphere *spheres=0; /*pointer to linked list for spheres of annihilation*/
-char *levelname[]=
+const char *levelname[]=
 { " H"," 1"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9","10","V1","V2","V3" };
 
 char objnamelist[]=" ATOP%^F&^+M=%^$$f*OD#~][[)))(((||||||||{?!BC}o:@.<<<<EVV))([[]]](^ [H*** ^^ S tsTLc............................................";
 char monstnamelist[]=" BGHJKOScjtAELNQRZabhiCTYdegmvzFWflorXV pqsyUkMwDDPxnDDuD        ...............................................................";
-char *objectname[]=
+const char *objectname[]=
 { 0,"a holy altar","a handsome jewel encrusted throne","the orb","a pit",
   "a staircase leading upwards","an elevator going up","a bubbling fountain",
   "a great marble statue","a teleport trap","the college of Larn",
@@ -295,74 +297,78 @@ struct monst monster[] = {
 
 /*     name array for scrolls          */
 
-char scrollname[][32] = {
-"\0enchant armor",
-"\0enchant weapon",
-"\0enlightenment",
-"\0blank paper",
-"\0create monster",
-"\0create artifact",
-"\0aggravate monsters",
-"\0time warp",
-"\0teleportation",
-"\0expanded awareness",
-"\0haste monsters",
-"\0monster healing",
-"\0spirit protection",
-"\0undead protection",
-"\0stealth",
-"\0magic mapping",
-"\0hold monsters",
-"\0gem perfection",
-"\0spell extension",
-"\0identify",
-"\0remove curse",
-"\0annihilation",
-"\0pulverization",
-"\0life protection",
-"\0 ",
-"\0 ",
-"\0 ",
-"\0 "
+const char *scrollname[] = { "","","","","","","","","","","","","","",
+                            "","","","","","","","","","","","","","" };
+const char *scrollhide[] = {
+" enchant armor",
+" enchant weapon",
+" enlightenment",
+" blank paper",
+" create monster",
+" create artifact",
+" aggravate monsters",
+" time warp",
+" teleportation",
+" expanded awareness",
+" haste monsters",
+" monster healing",
+" spirit protection",
+" undead protection",
+" stealth",
+" magic mapping",
+" hold monsters",
+" gem perfection",
+" spell extension",
+" identify",
+" remove curse",
+" annihilation",
+" pulverization",
+" life protection",
+"  ",
+"  ",
+"  ",
+"  "
  };
 
 /*     name array for magic potions    */
-char potionname[][32] = {
-"\0sleep",
-"\0healing",
-"\0raise level",
-"\0increase ability",
-"\0wisdom",
-"\0strength",
-"\0raise charisma",
-"\0dizziness",
-"\0learning",
-"\0gold detection",
-"\0monster detection",
-"\0forgetfulness",
-"\0water",
-"\0blindness",
-"\0confusion",
-"\0heroism",
-"\0sturdiness",
-"\0giant strength",
-"\0fire resistance",
-"\0treasure finding",
-"\0instant healing",
+const char *potionname[] = { "","","","","","","","","","","","","","","","","",
+                       "","","","","","","","","","","","","","","","","","" };
+const char *potionhide[] = {
+" sleep",
+" healing",
+" raise level",
+" increase ability",
+" wisdom",
+" strength",
+" raise charisma",
+" dizziness",
+" learning",
+" gold detection",
+" monster detection",
+" forgetfulness",
+" water",
+" blindness",
+" confusion",
+" heroism",
+" sturdiness",
+" giant strength",
+" fire resistance",
+" treasure finding",
+" instant healing",
 " cure dianthroritis",
-"\0poison",
-"\0see invisible",
-"\0 ",
-"\0 ",
-"\0 ",
-"\0 ",
-"\0 ",
-"\0 ",
-"\0 ",
-"\0 ",
-"\0 ",
-"\0 ",
-"\0 "
+" poison",
+" see invisible",
+"  ",
+"  ",
+"  ",
+"  ",
+"  ",
+"  ",
+"  ",
+"  ",
+"  ",
+"  ",
+"  "
  };
 
 \f
@@ -372,7 +378,7 @@ char potionname[][32] = {
 char spelknow[SPNUM]={0};
 char splev[] = { 1, 4, 9, 14, 18, 22, 26, 29, 32, 35, 37, 37, 37, 37, 37 };
 
-char *spelcode[]={
+const char *spelcode[]={
        "pro",  "mle",  "dex",  "sle",  "chm",  "ssp",
        "web",  "str",  "enl",  "hel",  "cbl",  "cre",  "pha",  "inv",
        "bal",  "cld",  "ply",  "can",  "has",  "ckl",  "vpr",
@@ -381,7 +387,7 @@ char *spelcode[]={
        "sph",  "gen",  "sum",  "wtw",  "alt",  "per"
  };
 
-char *spelname[]={
+const char *spelname[]={
        "protection",                           "magic missile",                "dexterity",
        "sleep",                                        "charm monster",                "sonic spear",
 
@@ -404,7 +410,7 @@ char *spelname[]={
        ""
  };
 
-char *speldescript[]={
+const char *speldescript[]={
 /* 1 */
        "generates a +2 protection field",
        "creates and hurls a magic missile equivalent to a + 1 magic arrow",
@@ -540,7 +546,7 @@ char spelweird[MAXMONST+8][SPNUM] = {
 
  };
 
-char *spelmes[] = { "",
+const char *spelmes[] = { "",
 /*  1 */       "the web had no effect on the %s",
 /*  2 */       "the %s changed shape to avoid the web",
 /*  3 */       "the %s isn't afraid of you",
index 1e33be6..63b1a47 100644 (file)
@@ -1,12 +1,11 @@
 /*     diag.c          Larn is copyrighted 1986 by Noah Morgan. */
 /* $FreeBSD: src/games/larn/diag.c,v 1.5 1999/11/16 02:57:21 billf Exp $ */
-/* $DragonFly: src/games/larn/diag.c,v 1.4 2006/01/22 03:43:37 swildner Exp $ */
+/* $DragonFly: src/games/larn/diag.c,v 1.5 2006/08/26 17:05:05 pavalos Exp $ */
 #include <sys/types.h>
 #include <sys/times.h>
 #include <sys/stat.h>
 #include "header.h"
 extern int rmst,maxitm,lasttime;
-extern char nosignal;
 static struct tms cputime;
 /*
        ***************************
@@ -15,9 +14,18 @@ static struct tms cputime;
 
        subroutine to print out data for debugging
  */
+
+static void    greedy(void);
+static void    fsorry(void);
+static void    fcheat(void);
 #ifdef EXTRA
+static int     dcount(int);
+static void    drawdiagscreen(void);
+
 static int rndcount[16];
-diag()
+
+int
+diag(void)
        {
        int i,j;
        int hit,dam;
@@ -79,9 +87,9 @@ diag()
                }
 
        lprcat("\n\nHere's the list of available potions:\n\n");
-       for (i=0; i<MAXPOTION; i++)     lprintf("%20s\n",&potionname[i][1]);
+       for (i=0; i<MAXPOTION; i++)     lprintf("%20s\n",&potionhide[i][1]);
        lprcat("\n\nHere's the list of available scrolls:\n\n");
-       for (i=0; i<MAXSCROLL; i++)     lprintf("%20s\n",&scrollname[i][1]);
+       for (i=0; i<MAXSCROLL; i++)     lprintf("%20s\n",&scrollhide[i][1]);
        lprcat("\n\nHere's the spell list:\n\n");
        lprcat("spell          name           description\n");
        lprcat("-------------------------------------------------------------------------------------------\n\n");
@@ -111,8 +119,8 @@ diag()
 /*
        subroutine to count the number of occurrences of an object
  */
-dcount(l)
-       int l;
+static int
+dcount(int l)
        {
        int i,j,p;
        int k;
@@ -127,7 +135,8 @@ dcount(l)
 /*
        subroutine to draw the whole screen as the player knows it
  */
-diagdrawscreen()
+static void
+diagdrawscreen(void)
        {
        int i,j,k;
 
@@ -146,8 +155,9 @@ diagdrawscreen()
        to save the game in a file
  */
 static time_t zzz=0;
-savegame(fname)
-       char *fname;
+
+int
+savegame(char *fname)
        {
        int i,k;
        struct sphere *sp;
@@ -175,7 +185,7 @@ savegame(fname)
        for (k=0; k<MAXPOTION; k++)  lprc(potionname[k][0]);
        lwrite((char*)spelknow,SPNUM);           lprc(wizard);
        lprc(rmst);             /*      random monster generation counter */
-       for (i=0; i<90; i++)    lprc(itm[i].qty);
+       for (i=0; i<90; i++)    lprc(itm_[i].qty);
        lwrite((char*)course,25);                       lprc(cheat);            lprc(VERSION);
        for (i=0; i<MAXMONST; i++) lprc(monster[i].genocided); /* genocide info */
        for (sp=spheres; sp; sp=sp->p)
@@ -192,8 +202,8 @@ savegame(fname)
        return(0);
        }
 
-restoregame(fname)
-       char *fname;
+void
+restoregame(char *fname)
        {
        int i,k;
        struct sphere *sp,*sp2;
@@ -214,12 +224,12 @@ restoregame(fname)
        level = c[CAVELEVEL] = lgetc();
        playerx = lgetc();              playery = lgetc();
        lrfill((char*)iven,26);         lrfill((char*)ivenarg,26*sizeof(short));
-       for (k=0; k<MAXSCROLL; k++)  scrollname[k][0] = lgetc();
-       for (k=0; k<MAXPOTION; k++)  potionname[k][0] = lgetc();
+       for (k=0; k<MAXSCROLL; k++)  scrollname[k] = lgetc() ? scrollhide[k] : "";
+       for (k=0; k<MAXPOTION; k++)  potionname[k] = lgetc() ? potionhide[k] : "";
        lrfill((char*)spelknow,SPNUM);          wizard = lgetc();
        rmst = lgetc();                 /*      random monster creation flag */
 
-       for (i=0; i<90; i++)    itm[i].qty = lgetc();
+       for (i=0; i<90; i++)    itm_[i].qty = lgetc();
        lrfill((char*)course,25);                       cheat = lgetc();
        if (VERSION != lgetc())         /*  version number  */
                {
@@ -250,7 +260,7 @@ restoregame(fname)
 
        oldx = oldy = 0;
        i = lrint_x();  /* inode # */
-       if (i && (filetimes.st_ino!=i)) fsorry();
+       if (i && (filetimes.st_ino!=(unsigned)i)) fsorry();
        lrclose();
        if (strcmp(fname,ckpfile) == 0)
                {
@@ -274,7 +284,8 @@ restoregame(fname)
 /*
        subroutine to not allow greedy cheaters
  */
-greedy()
+static void
+greedy(void)
        {
 #if WIZID
        if (wizard) return;
@@ -290,7 +301,8 @@ greedy()
        subroutine to not allow altered save files and terminate the attempted
        restart
  */
-fsorry()
+static void
+fsorry(void)
        {
        lprcat("\nSorry, but your savefile has been altered.\n");
        lprcat("However, seeing as I am a good sport, I will let you play.\n");
@@ -301,7 +313,8 @@ fsorry()
 /*
        subroutine to not allow game if save file can't be deleted
  */
-fcheat()
+static void
+fcheat(void)
        {
 #if WIZID
        if (wizard) return;
index 736aa9a..23f0a07 100644 (file)
@@ -1,33 +1,43 @@
 /*     display.c               Larn is copyrighted 1986 by Noah Morgan. */
 /* $FreeBSD: src/games/larn/display.c,v 1.4 1999/11/16 02:57:21 billf Exp $ */
-/* $DragonFly: src/games/larn/display.c,v 1.2 2003/06/17 04:25:24 dillon Exp $ */
+/* $DragonFly: src/games/larn/display.c,v 1.3 2006/08/26 17:05:05 pavalos Exp $ */
 #include "header.h"
 #define makecode(_a,_b,_c) (((_a)<<16) + ((_b)<<8) + (_c))
 
 static int minx,maxx,miny,maxy,k,m;
 static char bot1f=0,bot2f=0,bot3f=0;
 char always=0;
+
+static void    bot_hpx(void);
+static void    bot_spellx(void);
+static void    botside(void);
+static void    botsub(int, const char *);
+static void    seepage(void);
+
 /*
        bottomline()
 
        now for the bottom line of the display
  */
-bottomline()
+void
+bottomline(void)
        {       recalc();       bot1f=1;        }
-bottomhp()
+void
+bottomhp(void)
        {       bot2f=1;        }
-bottomspell()
+void
+bottomspell(void)
        {       bot3f=1;        }
-bottomdo()
+void
+bottomdo(void)
        {
        if (bot1f) { bot3f=bot1f=bot2f=0; bot_linex(); return; }
        if (bot2f) { bot2f=0; bot_hpx(); }
        if (bot3f) { bot3f=0; bot_spellx(); }
        }
 
-static void botsub();
-
-bot_linex()
+void
+bot_linex(void)
        {
        int i;
        if (cbak[SPELLS] <= -50 || (always))
@@ -45,7 +55,7 @@ bot_linex()
                        (long)c[WISDOM],(long)c[CONSTITUTION],(long)c[DEXTERITY],(long)c[CHARISMA]);
 
                if ((level==0) || (wizard))  c[TELEFLAG]=0;
-               if (c[TELEFLAG])  lprcat(" ?");  else  lprcat(levelname[level]);
+               if (c[TELEFLAG])  lprcat(" ?");  else  lprcat(levelname[(int)level]);
                lprintf("  Gold: %-6d",(long)c[GOLD]);
                always=1;  botside();
                c[TMP] = c[STRENGTH]+c[STREXTRA];
@@ -76,7 +86,7 @@ bot_linex()
                if ((level==0) || (wizard))  c[TELEFLAG]=0;
                cbak[TELEFLAG] = c[TELEFLAG];
                cbak[CAVELEVEL] = level;        cursor(59,19);
-               if (c[TELEFLAG])  lprcat(" ?");  else  lprcat(levelname[level]);
+               if (c[TELEFLAG])  lprcat(" ?");  else  lprcat(levelname[(int)level]);
                }
        botsub(makecode(GOLD,69,19),"%-6d");
        botside();
@@ -86,17 +96,18 @@ bot_linex()
        special subroutine to update only the gold number on the bottomlines
        called from ogold()
  */
-bottomgold()
+void
+bottomgold(void)
        {
        botsub(makecode(GOLD,69,19),"%-6d");
-/*     botsub(GOLD,"%-6d",69,19); */
        }
 
 /*
        special routine to update hp and level fields on bottom lines
        called in monster.c hitplayer() and spattack()
  */
-bot_hpx()
+static void
+bot_hpx(void)
        {
        if (c[EXPERIENCE] != cbak[EXPERIENCE])
                {
@@ -108,7 +119,8 @@ bot_hpx()
 /*
        special routine to update number of spells called from regen()
  */
-bot_spellx()
+static void
+bot_spellx(void)
        {
        botsub(makecode(SPELLS,9,18),"%2d");
        }
@@ -119,19 +131,20 @@ bot_spellx()
 static struct bot_side_def
        {
        int typ;
-       char *string;
+       const char *string;
        }
        bot_data[] =
        {
-       STEALTH,"stealth",              UNDEADPRO,"undead pro",         SPIRITPRO,"spirit pro",
-       CHARMCOUNT,"Charm",             TIMESTOP,"Time Stop",           HOLDMONST,"Hold Monst",
-       GIANTSTR,"Giant Str",   FIRERESISTANCE,"Fire Resit", DEXCOUNT,"Dexterity",
-       STRCOUNT,"Strength",    SCAREMONST,"Scare",                     HASTESELF,"Haste Self",
-       CANCELLATION,"Cancel",  INVISIBILITY,"Invisible",       ALTPRO,"Protect 3",
-       PROTECTIONTIME,"Protect 2", WTW,"Wall-Walk"
+       { STEALTH, "stealth" },         { UNDEADPRO, "undead pro" },            { SPIRITPRO, "spirit pro" },
+       { CHARMCOUNT, "Charm" },        { TIMESTOP, "Time Stop" },              { HOLDMONST, "Hold Monst" },
+       { GIANTSTR, "Giant Str" },      { FIRERESISTANCE, "Fire Resit" },       { DEXCOUNT, "Dexterity" },
+       { STRCOUNT, "Strength" },       { SCAREMONST, "Scare" },                { HASTESELF, "Haste Self" },
+       { CANCELLATION, "Cancel" },     { INVISIBILITY, "Invisible" },          { ALTPRO, "Protect 3" },
+       { PROTECTIONTIME, "Protect 2" },                                        { WTW, "Wall-Walk"}
        };
 
-botside()
+static void
+botside(void)
        {
        int i,idx;
        for (i=0; i<17; i++)
@@ -149,9 +162,7 @@ botside()
        }
 
 static void
-botsub(idx,str)
-       int idx;
-       char *str;
+botsub(int idx, const char *str)
        {
        int x,y;
        y = idx & 0xff;         x = (idx>>8) & 0xff;      idx >>= 16;
@@ -165,8 +176,9 @@ botsub(idx,str)
  *     drawn, then they will be cleared first.
  */
 int d_xmin=0,d_xmax=MAXX,d_ymin=0,d_ymax=MAXY; /* for limited screen drawing */
-draws(xmin,xmax,ymin,ymax)
-       int xmin,xmax,ymin,ymax;
+
+void
+draws(int xmin, int xmax, int ymin, int ymax)
        {
        int i,idx;
        if (xmin==0 && xmax==MAXX) /* clear section of screen as needed */
@@ -197,9 +209,11 @@ draws(xmin,xmax,ymin,ymax)
        subroutine to redraw the whole screen as the player knows it
  */
 char screen[MAXX][MAXY],d_flag;        /* template for the screen */
-drawscreen()
+
+void
+drawscreen(void)
        {
-       int i,j,k;
+       int i,j,l;
        int lastx,lasty;  /* variables used to optimize the object printing */
        if (d_xmin==0 && d_xmax==MAXX && d_ymin==0 && d_ymax==MAXY)
                {
@@ -215,8 +229,8 @@ drawscreen()
        for (i=d_ymin; i<d_ymax; i++)
          for (j=d_xmin; j<d_xmax; j++)
                if (know[j][i]==0)  screen[j][i] = ' ';  else
-               if (k=mitem[j][i])  screen[j][i] = monstnamelist[k];  else
-               if ((k=item[j][i])==OWALL) screen[j][i] = '#';
+               if ((l=mitem[j][i]))  screen[j][i] = monstnamelist[l];  else
+               if ((l=item[j][i])==OWALL) screen[j][i] = '#';
                else screen[j][i] = ' ';
 
        for (i=d_ymin; i<d_ymax; i++)
@@ -233,8 +247,8 @@ drawscreen()
                        {
                        if (j <= m-3)
                                {
-                               for (k=j; k<=j+3; k++) if (screen[k][i] != ' ') k=1000;
-                               if (k < 1000)
+                               for (l=j; l<=j+3; l++) if (screen[l][i] != ' ') l=1000;
+                               if (l < 1000)
                                        { while(screen[j][i]==' ' && j<=m) j++;  cursor(j+1,i+1); }
                                }
                        lprc(screen[j++][i]);
@@ -245,14 +259,14 @@ drawscreen()
        for (lastx=lasty=127, i=d_ymin; i<d_ymax; i++)
                for (j=d_xmin; j<d_xmax; j++)
                        {
-                       if (k=item[j][i])
-                               if (k != OWALL)
+                       if ((l=item[j][i]))
+                               if (l != OWALL)
                                        if ((know[j][i]) && (mitem[j][i]==0))
-                                               if (objnamelist[k]!=' ')
+                                               if (objnamelist[l]!=' ')
                                                        {
                                                        if (lasty!=i+1 || lastx!=j)
                                                                cursor(lastx=j+1,lasty=i+1); else lastx++;
-                                                       lprc(objnamelist[k]);
+                                                       lprc(objnamelist[l]);
                                                        }
                        }
 
@@ -266,10 +280,10 @@ drawscreen()
 
        subroutine to display a cell location on the screen
  */
-showcell(x,y)
-       int x,y;
+void
+showcell(int x, int y)
        {
-       int i,j,k,m;
+       int i,j,l,n;
        if (c[BLINDCOUNT])  return;     /* see nothing if blind         */
        if (c[AWARENESS]) { minx = x-3; maxx = x+3;     miny = y-3;     maxy = y+3; }
                        else      { minx = x-1; maxx = x+1;     miny = y-1;     maxy = y+1; }
@@ -278,25 +292,25 @@ showcell(x,y)
        if (miny < 0) miny=0;           if (maxy > MAXY-1) maxy = MAXY-1;
 
        for (j=miny; j<=maxy; j++)
-         for (m=minx; m<=maxx; m++)
-               if (know[m][j]==0)
+         for (n=minx; n<=maxx; n++)
+               if (know[n][j]==0)
                        {
-                       cursor(m+1,j+1);
+                       cursor(n+1,j+1);
                        x=maxx;  while (know[x][j]) --x;
-                       for (i=m; i<=x; i++)
+                       for (i=n; i<=x; i++)
                                {
-                               if ((k=mitem[i][j]) != 0)  lprc(monstnamelist[k]);
-                               else switch(k=item[i][j])
+                               if ((l=mitem[i][j]) != 0)  lprc(monstnamelist[l]);
+                               else switch(l=item[i][j])
                                        {
                                        case OWALL:  case 0: case OIVTELETRAP:  case OTRAPARROWIV:
                                        case OIVDARTRAP: case OIVTRAPDOOR:
-                                               lprc(objnamelist[k]);   break;
+                                               lprc(objnamelist[l]);   break;
 
-                                       default: setbold(); lprc(objnamelist[k]); resetbold();
+                                       default: setbold(); lprc(objnamelist[l]); resetbold();
                                        };
                                know[i][j]=1;
                                }
-                       m = maxx;
+                       n = maxx;
                        }
        }
 
@@ -305,8 +319,8 @@ showcell(x,y)
        these coordinated are not shown
        used in godirect() in monster.c for missile weapons display
  */
-show1cell(x,y)
-       int x,y;
+void
+show1cell(int x, int y)
        {
        if (c[BLINDCOUNT])  return;     /* see nothing if blind         */
        cursor(x+1,y+1);
@@ -328,7 +342,8 @@ show1cell(x,y)
        subroutine to show where the player is on the screen
        cursor values start from 1 up
  */
-showplayer()
+void
+showplayer(void)
        {
        cursor(playerx+1,playery+1);
        oldx=playerx;  oldy=playery;
@@ -345,27 +360,29 @@ showplayer()
  */
 short diroffx[] = { 0,  0, 1,  0, -1,  1, -1, 1, -1 };
 short diroffy[] = { 0,  1, 0, -1,  0, -1, -1, 1,  1 };
-moveplayer(dir)
-       int dir;                        /*      from = present room #  direction = [1-north]
+
+int
+moveplayer(int dir)
+                                       /*      from = present room #  direction = [1-north]
                                                        [2-east] [3-south] [4-west] [5-northeast]
                                                        [6-northwest] [7-southeast] [8-southwest]
                                                if direction=0, don't move--just show where he is */
        {
-       int k,m,i,j;
+       int l,n,i,j;
        if (c[CONFUSE]) if (c[LEVEL]<rnd(30)) dir=rund(9); /*if confused any dir*/
-       k = playerx + diroffx[dir];             m = playery + diroffy[dir];
-       if (k<0 || k>=MAXX || m<0 || m>=MAXY) { nomove=1; return(yrepcount = 0); }
-       i = item[k][m];                 j = mitem[k][m];
+       l = playerx + diroffx[dir];             n = playery + diroffy[dir];
+       if (l<0 || l>=MAXX || n<0 || n>=MAXY) { nomove=1; return(yrepcount = 0); }
+       i = item[l][n];                 j = mitem[l][n];
        if (i==OWALL && c[WTW]==0) { nomove=1;  return(yrepcount = 0); }                /*      hit a wall      */
-       if (k==33 && m==MAXY-1 && level==1)
+       if (l==33 && n==MAXY-1 && level==1)
                {
-               newcavelevel(0); for (k=0; k<MAXX; k++) for (m=0; m<MAXY; m++)
-               if (item[k][m]==OENTRANCE)
-                 { playerx=k; playery=m; positionplayer();  drawscreen(); return(0); }
+               newcavelevel(0); for (l=0; l<MAXX; l++) for (n=0; n<MAXY; n++)
+               if (item[l][n]==OENTRANCE)
+                 { playerx=l; playery=n; positionplayer();  drawscreen(); return(0); }
                }
-       if (j>0)     { hitmonster(k,m); return(yrepcount = 0); } /* hit a monster*/
+       if (j>0)     { hitmonster(l,n); return(yrepcount = 0); } /* hit a monster*/
        lastpx = playerx;                       lastpy = playery;
-       playerx = k;            playery = m;
+       playerx = l;            playery = n;
        if (i && i!=OTRAPARROWIV && i!=OIVTELETRAP && i!=OIVDARTRAP && i!=OIVTRAPDOOR) return(yrepcount = 0);  else return(1);
        }
 \f
@@ -374,10 +391,11 @@ moveplayer(dir)
  *     enter with -1 for just spells, anything else will give scrolls & potions
  */
 static int lincount,count;
-seemagic(arg)
-       int arg;
+
+void
+seemagic(int arg)
        {
-       int i,number;
+       int i,number = 0;
        count = lincount = 0;  nosignal=1;
 
        if (arg== -1) /* if display spells while casting one */
@@ -426,7 +444,8 @@ seemagic(arg)
 /*
  *     subroutine to paginate the seemagic function
  */
-seepage()
+static void
+seepage(void)
        {
        if (++count==3)
                {
index 098cb63..bb7cb80 100644 (file)
  *
  * @(#)fortune.c       5.5 (Berkeley) 6/10/91
  * $FreeBSD: src/games/larn/fortune.c,v 1.2 1999/11/30 03:48:59 billf Exp $
- * $DragonFly: src/games/larn/fortune.c,v 1.2 2003/06/17 04:25:24 dillon Exp $
+ * $DragonFly: src/games/larn/fortune.c,v 1.3 2006/08/26 17:05:05 pavalos Exp $
  */
 
 /* fortune.c            Larn is copyrighted 1986 by Noah Morgan. */
+#include "header.h"
 
 /*
  * function to return a random fortune from the fortune file
  */
 
-char *flines[] = {
+const char *flines[] = {
        "gem value = gem * 2 ^ perfection",
        "sitting down can have unexpected results",
        "don't pry into the affairs of others",
@@ -80,8 +81,8 @@ char *flines[] = {
 
 #define NFORTUNES      34
 
-char *
-fortune()
+const char *
+fortune(void)
 {
        return (flines[random() % NFORTUNES]);
 }
index 91e199f..ffbd0a2 100644 (file)
@@ -1,6 +1,6 @@
 /*     global.c                Larn is copyrighted 1986 by Noah Morgan.
  * $FreeBSD: src/games/larn/global.c,v 1.5 1999/11/16 02:57:21 billf Exp $
- * $DragonFly: src/games/larn/global.c,v 1.4 2006/06/13 22:12:16 dillon Exp $
+ * $DragonFly: src/games/larn/global.c,v 1.5 2006/08/26 17:05:05 pavalos Exp $
  *
  *     raiselevel()            subroutine to raise the player one level
  *     loselevel()             subroutine to lower the player by one level
@@ -10,9 +10,7 @@
  *     losemhp(x)                      subroutine to remove max # hit points from the player
  *     raisehp(x)                      subroutine to gain hit points
  *     raisemhp(x)                     subroutine to gain maximum hit points
- *     losespells(x)           subroutine to lose spells
  *     losemspells(x)          subroutine to lose maximum spells
- *     raisespells(x)          subroutine to gain spells
  *     raisemspells(x)         subroutine to gain maximum spells
  *     recalc()                        function to recalculate the armor class of the player
  *     makemonst(lev)          function to return monster number for a randomly selected monster
  */
 
 #include "header.h"
-extern int score[],srcount,dropflag;
-extern short playerx,playery,lastnum;
-extern char cheat,level,monstnamelist[];
-extern char lastmonst[],*what[],*who[];
-extern char winner[];
-extern char logname[],monstlevel[];
-extern char sciv[SCORESIZE+1][26][2],potionname[][32],scrollname[][32];
+extern int score[],dropflag;
+extern char *what[],*who[];
+extern char password[],winner[];
+extern char sciv[SCORESIZE+1][26][2];
+
 /*
        ***********
        RAISE LEVEL
@@ -39,7 +35,8 @@ extern char sciv[SCORESIZE+1][26][2],potionname[][32],scrollname[][32];
        uses the skill[] array to find level boundarys
        uses c[EXPERIENCE]  c[LEVEL]
  */
-raiselevel()
+void
+raiselevel(void)
        {
        if (c[LEVEL] < MAXPLEVEL) raiseexperience((long)(skill[c[LEVEL]]-c[EXPERIENCE]));
        }
@@ -52,7 +49,8 @@ raiselevel()
 
        subroutine to lower the players character level by one
  */
-loselevel()
+void
+loselevel(void)
        {
        if (c[LEVEL] > 1) loseexperience((long)(c[EXPERIENCE] - skill[c[LEVEL]-1] + 1));
        }
@@ -65,8 +63,8 @@ loselevel()
 
        subroutine to increase experience points
  */
-raiseexperience(x)
-       long x;
+void
+raiseexperience(long x)
        {
        int i,tmp;
        i=c[LEVEL];     c[EXPERIENCE]+=x;
@@ -93,8 +91,8 @@ raiseexperience(x)
 
        subroutine to lose experience points
  */
-loseexperience(x)
-       long x;
+void
+loseexperience(long x)
        {
        int i,tmp;
        i=c[LEVEL];             c[EXPERIENCE]-=x;
@@ -125,8 +123,8 @@ loseexperience(x)
        subroutine to remove hit points from the player
        warning -- will kill player if hp goes to zero
  */
-losehp(x)
-       int x;
+void
+losehp(int x)
        {
        if ((c[HP] -= x) <= 0)
                {
@@ -134,8 +132,8 @@ losehp(x)
                }
        }
 
-losemhp(x)
-       int x;
+void
+losemhp(int x)
        {
        c[HP] -= x;             if (c[HP] < 1)          c[HP]=1;
        c[HPMAX] -= x;  if (c[HPMAX] < 1)       c[HPMAX]=1;
@@ -150,14 +148,14 @@ losemhp(x)
 
        subroutine to gain maximum hit points
  */
-raisehp(x)
-       int x;
+void
+raisehp(int x)
        {
        if ((c[HP] += x) > c[HPMAX]) c[HP] = c[HPMAX];
        }
 
-raisemhp(x)
-       int x;
+void
+raisemhp(int x)
        {
        c[HPMAX] += x;  c[HP] += x;
        }
@@ -166,19 +164,12 @@ raisemhp(x)
        ************
        RAISE SPELLS
        ************
-       raisespells(x)
        raisemspells(x)
 
        subroutine to gain maximum spells
  */
-raisespells(x)
-       int x;
-       {
-       if ((c[SPELLS] += x) > c[SPELLMAX])     c[SPELLS] = c[SPELLMAX];
-       }
-
-raisemspells(x)
-       int x;
+void
+raisemspells(int x)
        {
        c[SPELLMAX]+=x; c[SPELLS]+=x;
        }
@@ -187,19 +178,12 @@ raisemspells(x)
        ************
        LOOSE SPELLS
        ************
-       losespells(x)
        losemspells(x)
 
        subroutine to lose maximum spells
  */
-losespells(x)
-       int x;
-       {
-       if ((c[SPELLS] -= x) < 0) c[SPELLS]=0;
-       }
-
-losemspells(x)
-       int x;
+void
+losemspells(int x)
        {
        if ((c[SPELLMAX] -= x) < 0) c[SPELLMAX]=0;
        if ((c[SPELLS] -= x) < 0) c[SPELLS]=0;
@@ -212,8 +196,8 @@ losemspells(x)
        function to return monster number for a randomly selected monster
                for the given cave level
  */
-makemonst(lev)
-       int lev;
+int
+makemonst(int lev)
        {
        int tmp,x;
        if (lev < 1)    lev = 1;                        if (lev > 12)   lev = 12;
@@ -232,7 +216,8 @@ makemonst(lev)
 
        function to be sure player is not in a wall
  */
-positionplayer()
+void
+positionplayer(void)
        {
        int try;
        try = 2;
@@ -249,7 +234,8 @@ positionplayer()
 /*
        recalc()        function to recalculate the armor class of the player
  */
-recalc()
+void
+recalc(void)
        {
        int i,j,k;
        c[AC] = c[MOREDEFENSES];
@@ -314,14 +300,15 @@ recalc()
 
        subroutine to ask if the player really wants to quit
  */
-quit()
+void
+quit(void)
        {
        int i;
        cursors();      strcpy(lastmonst,"");
        lprcat("\n\nDo you really want to quit?");
        while (1)
                {
-               i=getchar();
+               i=getchr();
                if (i == 'y')   { died(300); return; }
                if ((i == 'n') || (i == '\33')) { lprcat(" no"); lflush(); return; }
                lprcat("\n");  setbold();  lprcat("Yes");  resetbold();  lprcat(" or ");
@@ -332,21 +319,21 @@ quit()
 /*
        function to ask --more-- then the user must enter a space
  */
-more()
+void
+more(void)
        {
        lprcat("\n  --- press ");  standout("space");  lprcat(" to continue --- ");
-       while (getchar() != ' ');
+       while (getchr() != ' ');
        }
 
 /*
        function to put something in the players inventory
        returns 0 if success, 1 if a failure
  */
-take(itm,arg)
-       int itm,arg;
+int
+take(int itm, int arg)
        {
        int i,limit;
-/*     cursors(); */
        if ((limit = 15+(c[LEVEL]>>1)) > 26)  limit=26;
        for (i=0; i<limit; i++)
                if (iven[i]==0)
@@ -376,8 +363,8 @@ take(itm,arg)
 /*
        subroutine to drop an object  returns 1 if something there already else 0
  */
-drop_object(k)
-       int k;
+int
+drop_object(int k)
        {
        int itm;
        if ((k<0) || (k>25)) return(0);
@@ -400,7 +387,8 @@ drop_object(k)
 /*
        function to enchant armor player is currently wearing
  */
-enchantarmor()
+void
+enchantarmor(void)
        {
        int tmp;
        if (c[WEAR]<0) { if (c[SHIELD] < 0)
@@ -413,7 +401,8 @@ enchantarmor()
 /*
        function to enchant a weapon presently being wielded
  */
-enchweapon()
+void
+enchweapon(void)
        {
        int tmp;
        if (c[WIELD]<0)
@@ -430,7 +419,8 @@ enchweapon()
        routine to tell if player can carry one more thing
        returns 1 if pockets are full, else 0
  */
-pocketfull()
+int
+pocketfull(void)
        {
        int i,limit;
        if ((limit = 15+(c[LEVEL]>>1)) > 26)  limit=26;
@@ -441,7 +431,8 @@ pocketfull()
 /*
        function to return 1 if a monster is next to the player else returns 0
  */
-nearbymonst()
+int
+nearbymonst(void)
        {
        int tmp,tmp2;
        for (tmp=playerx-1; tmp<playerx+2; tmp++)
@@ -454,7 +445,8 @@ nearbymonst()
        function to steal an item from the players pockets
        returns 1 if steals something else returns 0
  */
-stealsomething()
+int
+stealsomething(void)
        {
        int i,j;
        j=100;
@@ -473,7 +465,8 @@ stealsomething()
 /*
        function to return 1 is player carrys nothing else return 0
  */
-emptyhanded()
+int
+emptyhanded(void)
        {
        int i;
        for (i=0; i<26; i++)
@@ -484,7 +477,8 @@ emptyhanded()
 /*
        function to create a gem on a square near the player
  */
-creategem()
+void
+creategem(void)
        {
        int i,j;
        switch(rnd(4))
@@ -501,8 +495,8 @@ creategem()
        function to change character levels as needed when dropping an object
        that affects these characteristics
  */
-adjustcvalues(itm,arg)
-       int itm,arg;
+void
+adjustcvalues(int itm, int arg)
        {
        int flag;
        flag=0;
@@ -526,41 +520,22 @@ adjustcvalues(itm,arg)
        if (flag) bottomline();
        }
 
-/*
-       function to read a string from token input "string"
-       returns a pointer to the string
- */
-gettokstr(str)
-       char *str;
-       {
-       int i,j;
-       i=50;
-       while ((getchar() != '"') && (--i > 0));
-       i=36;
-       while (--i > 0)
-               {
-               if ((j=getchar()) != '"') *str++ = j;  else i=0;
-               }
-       *str = 0;
-       i=50;
-       if (j != '"') while ((getchar() != '"') && (--i > 0)); /* if end due to too long, then find closing quote */
-       }
-
 /*
        function to ask user for a password (no echo)
        returns 1 if entered correctly, 0 if not
  */
 static char gpwbuf[33];
-getpassword()
+
+int
+getpassword(void)
        {
        int i,j;
        char *gpwp;
-       extern char *password;
-       scbr(); /*      system("stty -echo cbreak"); */
+       scbr();
        gpwp = gpwbuf;  lprcat("\nEnter Password: "); lflush();
        i = strlen(password);
        for (j=0; j<i; j++) read(0,gpwp++,1);     gpwbuf[i]=0;
-       sncbr(); /* system("stty echo -cbreak"); */
+       sncbr();
        if (strcmp(gpwbuf,password) != 0)
                {       lprcat("\nSorry\n");  lflush(); return(0);      }
        else  return(1);
@@ -570,10 +545,11 @@ getpassword()
        subroutine to get a yes or no response from the user
        returns y or n
  */
-getyn()
+int
+getyn(void)
        {
        int i;
-       i=0; while (i!='y' && i!='n' && i!='\33') i=getchar();
+       i=0; while (i!='y' && i!='n' && i!='\33') i=getchr();
        return(i);
        }
 
@@ -581,7 +557,8 @@ getyn()
        function to calculate the pack weight of the player
        returns the number of pounds the player is carrying
  */
-packweight()
+int
+packweight(void)
        {
        int i,j,k;
        k=c[GOLD]/1000; j=25;  while ((iven[j]==0) && (j>0)) --j;
@@ -609,14 +586,14 @@ packweight()
 
 #ifndef MACRORND
        /* macros to generate random numbers   1<=rnd(N)<=N   0<=rund(N)<=N-1 */
-rnd(x)
-       int x;
+int
+rnd(int x)
        {
        return((random()%x)+1);
        }
 
-rund(x)
-       int x;
+int
+rund(int x)
        {
        return(random()%x);
        }
index cee609f..a94ae47 100644 (file)
@@ -1,6 +1,8 @@
 /*     header.h                Larn is copyrighted 1986 by Noah Morgan. */
-/* $DragonFly: src/games/larn/header.h,v 1.4 2006/06/13 22:12:16 dillon Exp $ */
+/* $DragonFly: src/games/larn/header.h,v 1.5 2006/08/26 17:05:05 pavalos Exp $ */
 
+#include <fcntl.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <termcap.h>
@@ -36,7 +38,7 @@
 /*     this is the structure definition of the monster data    */
 struct monst
        {
-       char    *name;
+       const char      *name;
        char    level;
        short   armorclass;
        char    damage;
@@ -53,10 +55,9 @@ struct monst
 struct _itm
        {
        short   price;
-       char    **mem;
-       char    obj;
-       char    arg;
-       char    qty;
+       short   obj;
+       short   arg;
+       short   qty;
        };
 
 /*     this is the structure that holds the entire dungeon specifications      */
@@ -326,7 +327,6 @@ struct sphere
 #define DEMONLORD 57
 #define DEMONPRINCE 64
 
-#define NULL 0
 #define BUFBIG 4096                    /* size of the output buffer */
 #define MAXIBUF        4096                    /* size of the input buffer */
 #define LOGNAMESIZE 40                 /* max size of the players name */
@@ -342,9 +342,9 @@ extern char level,*levelname[],logfile[],loginname[],logname[],*lpbuf,*lpend;
 extern char *lpnt,moved[MAXX][MAXY],mitem[MAXX][MAXY],monstlevel[];
 extern char monstnamelist[],nch[],ndgg[],nlpts[],nomove,nosignal,nowelcome;
 extern char nplt[],nsw[],*objectname[];
-extern char objnamelist[],optsfile[],potionname[][32],playerids[],potprob[];
+extern char objnamelist[],optsfile[],playerids[],potprob[];
 extern char predostuff,psname[],restorflag,savefilename[],scorefile[],scprob[];
-extern char screen[MAXX][MAXY],scrollname[][32],sex,*spelcode[],*speldescript[];
+extern char screen[MAXX][MAXY],sex,*spelcode[],*speldescript[];
 extern char spelknow[],*spelname[],*spelmes[],spelweird[MAXMONST+8][SPNUM];
 extern char splev[],stealth[MAXX][MAXY],to_lower[],to_upper[],wizard;
 extern short diroffx[],diroffy[],hitflag,hit2flag,hit3flag,hitp[MAXX][MAXY];
@@ -356,12 +356,200 @@ extern long outstanding_taxes,skill[],gtime,c[],cbak[];
 extern struct cel *cell;
 extern struct monst monster[];
 extern struct sphere *spheres;
-extern struct _itm itm[];
+extern struct _itm itm_[];
+extern const char *potionhide[],*potionname[],*scrollhide[],*scrollname[];
 
-char *fortune(),*lgetw(),*lgetl();
-char *tmcapcnv();
-long paytaxes(),lgetc(),lrint_x();
-unsigned long readnum();
+/* bill.c */
+void   mailbill(void);
+
+/* create.c */
+void   makeplayer(void);
+void   newcavelevel(int);
+void   eat(int, int);
+int    fillmonst(char);
+
+/* diag.c */
+#ifdef EXTRA
+int    diag(void);
+#endif
+int    savegame(char *);
+void   restoregame(char *);
+
+/* display.c */
+void   bottomline(void);
+void   bottomhp(void);
+void   bottomspell(void);
+void   bottomdo(void);
+void   bot_linex(void);
+void   bottomgold(void);
+void   draws(int, int, int, int);
+void   drawscreen(void);
+void   showcell(int, int);
+void   show1cell(int, int);
+void   showplayer(void);
+int    moveplayer(int);
+void   seemagic(int);
+
+/* fortune.c */
+const char     *fortune(void);
+
+/* global.c */
+void   raiselevel(void);
+void   loselevel(void);
+void   raiseexperience(long);
+void   loseexperience(long);
+void   losehp(int);
+void   losemhp(int);
+void   raisehp(int);
+void   raisemhp(int);
+void   raisemspells(int);
+void   losemspells(int);
+int    makemonst(int);
+void   positionplayer(void);
+void   recalc(void);
+void   quit(void);
+void   more(void);
+int    take(int, int);
+int    drop_object(int);
+void   enchantarmor(void);
+void   enchweapon(void);
+int    pocketfull(void);
+int    nearbymonst(void);
+int    stealsomething(void);
+int    emptyhanded(void);
+void   creategem(void);
+void   adjustcvalues(int, int);
+int    getpassword(void);
+int    getyn(void);
+int    packweight(void);
+#ifndef MACRORND
+int    rnd(int);
+int    rund(int);
+#endif
+
+/* help.c */
+void   help(void);
+void   welcome(void);
+
+/* io.c */
+void   setupvt100(void);
+void   clearvt100(void);
+char   getchr(void);
+void   scbr(void);
+void   sncbr(void);
+void   newgame(void);
+void   lprintf(const char *, ...);
+void   lprint(long);
+void   lwrite(char *, int);
+long   lgetc(void);
+long   lrint_x(void);
+void   lrfill(char *, int);
+char   *lgetw(void);
+char   *lgetl(void);
+int    lcreat(char *);
+int    lopen(char *);
+int    lappend(char *);
+void   lrclose(void);
+void   lwclose(void);
+void   lprcat(const char *);
+void   cursor(int, int);
+void   cursors(void);
+#ifndef VT100
+void   init_term(void);
+#endif
+void   cl_line(int, int);
+void   cl_up(int, int);
+void   cl_dn(int, int);
+void   standout(const char *);
+void   set_score_output(void);
+void   lflush(void);
+#ifndef VT100
+char   *tmcapcnv(char *, char *);
+#endif
+void   beep(void);
+
+/* main.c */
+void   qshowstr(void);
+void   show3(int);
+void   parse2(void);
+unsigned long  readnum(long);
+
+/* monster.c */
+void   createmonster(int);
+void   createitem(int, int);
+void   cast(void);
+void   godirect(int, int, const char *, int, char);
+int    vxy(int *, int *);
+void   hitmonster(int, int);
+int    hitm(int, int, int);
+void   hitplayer(int, int);
+void   dropgold(int);
+void   something(int);
+int    newobject(int, int *);
+void   checkloss(int);
+long   annihilate(void);
+long   newsphere(int, int, int, int);
+long   rmsphere(int, int);
+
+/* moreobj.c */
+void   oaltar(void);
+void   othrone(int);
+void   odeadthrone(void);
+void   ochest(void);
+void   ofountain(void);
+
+/* movem.c */
+void   movemonst(void);
+
+/* nap.c */
+void   nap(int);
+
+/* object.c */
+void   lookforobject(void);
+void   oteleport(int);
+void   quaffpotion(int);
+void   larn_adjtime(long);
+void   read_scroll(int);
+void   readbook(int);
+void   iopts(void);
+void   ignore(void);
+
+/* regen.c */
+void   regen(void);
+
+/* savelev.c */
+void   savelevel(void);
+void   getlevel(void);
+
+/* scores.c */
+int    makeboard(void);
+int    hashewon(void);
+long   paytaxes(long);
+void   showscores(void);
+void   showallscores(void);
+void   died(int);
+void   diedlog(void);
+#ifndef UIDSCORE
+int    getplid(char *);
+#endif
+
+/* signal.c */
+void   sigsetup(void);
+
+/* store.c */
+void   dndstore(void);
+void   oschool(void);
+void   obank(void);
+void   obank2(void);
+void   ointerest(void);
+void   otradepost(void);
+void   olrs(void);
+
+/* tok.c */
+int    yylex(void);
+void   flushall(void);
+void   sethard(int);
+void   readopts(void);
 
        /* macro to create scroll #'s with probability of occurrence */
 #define newscroll() (scprob[rund(81)])
index 1227ff7..2ab5353 100644 (file)
@@ -1,7 +1,10 @@
 /*     help.c          Larn is copyrighted 1986 by Noah Morgan. */
 /* $FreeBSD: src/games/larn/help.c,v 1.4 1999/11/16 02:57:21 billf Exp $ */
-/* $DragonFly: src/games/larn/help.c,v 1.3 2006/01/22 03:43:37 swildner Exp $ */
+/* $DragonFly: src/games/larn/help.c,v 1.4 2006/08/26 17:05:05 pavalos Exp $ */
 #include "header.h"
+
+static void    retcont(void);
+static int     openhelp(void);
 /*
  *     help function to display the help info
  *
@@ -11,8 +14,8 @@
  *     page (23 lines) for the introductory message (not counted in above)
  *     pages of help text (23 lines per page)
  */
-extern char helpfile[];
-help()
+void
+help(void)
        {
        int i,j;
 #ifndef VT100
@@ -34,7 +37,7 @@ help()
                        lprcat("    ---- Press ");  standout("return");
                        lprcat(" to exit, ");  standout("space");
                        lprcat(" for more help ---- ");
-                       i=0; while ((i!=' ') && (i!='\n') && (i!='\33')) i=getchar();
+                       i=0; while ((i!=' ') && (i!='\n') && (i!='\33')) i=getchr();
                        if ((i=='\n') || (i=='\33'))
                                {
                                lrclose();  setscroll();  drawscreen();  return;
@@ -47,7 +50,8 @@ help()
 /*
  *     function to display the welcome message and background
  */
-welcome()
+void
+welcome(void)
        {
        int i;
 #ifndef VT100
@@ -67,17 +71,19 @@ welcome()
 /*
  *     function to say press return to continue and reset scroll when done
  */
-retcont()
+static void
+retcont(void)
        {
        cursor(1,24); lprcat("Press "); standout("return");
-       lprcat(" to continue: ");   while (getchar() != '\n');
+       lprcat(" to continue: ");   while (getchr() != '\n');
        setscroll();
        }
 
 /*
  *     routine to open the help file and return the first character - '0'
  */
-openhelp()
+static int
+openhelp(void)
        {
        if (lopen(helpfile)<0)
                {
index c4b7fa6..18cfcc5 100644 (file)
@@ -1,12 +1,12 @@
 /* io.c                         Larn is copyrighted 1986 by Noah Morgan.
  * $FreeBSD: src/games/larn/io.c,v 1.7 1999/11/16 02:57:22 billf Exp $
- * $DragonFly: src/games/larn/io.c,v 1.5 2006/01/22 03:43:37 swildner Exp $
+ * $DragonFly: src/games/larn/io.c,v 1.6 2006/08/26 17:05:05 pavalos Exp $
  *
  *     Below are the functions in this file:
  *
  *     setupvt100()    Subroutine to set up terminal in correct mode for game
  *     clearvt100()    Subroutine to clean up terminal when the game is over
- *     getchar()               Routine to read in one character from the terminal
+ *     getchr()                Routine to read in one character from the terminal
  *     scbr()                  Function to set cbreak -echo for the terminal
  *     sncbr()                 Function to set -cbreak echo for the terminal
  *     newgame()               Subroutine to save the initial time and seed rnd()
@@ -48,7 +48,7 @@
  *  cl_dn(x,y)                                         Clear screen from [1,y] to end of display.
  *  standout(str)                              Print the string in standout mode.
  *  set_score_output()                         Called when output should be literally printed.
- ** putchar(ch)                                        Print one character in decoded output buffer.
+ ** putchr(ch)                                 Print one character in decoded output buffer.
  ** flush_buf()                                        Flush buffer with decoded output.
  ** init_term()                                        Terminal initialization -- setup termcap info
  **    char *tmcapcnv(sd,ss)           Routine to convert VT100 \33's to termcap format
@@ -79,6 +79,8 @@ static char saveeof,saveeol;
 #define doraw(_a) (_a.sg_flags |= CBREAK,_a.sg_flags &= ~ECHO)
 #define unraw(_a) (_a.sg_flags &= ~CBREAK,_a.sg_flags |= ECHO)
 #include <sgtty.h>
+#define stty(_a,_b) ioctl(_a,TIOCSETP,_b)
+#define gtty(_a,_b) ioctl(_a,TIOCGETP,_b)
 #endif /* not SYSV */
 
 #ifndef NOVARARGS      /* if we have varargs */
@@ -98,14 +100,20 @@ static struct sgttyb ttx;  /* storage for the tty modes                                    */
 static int ipoint=MAXIBUF,iepoint=MAXIBUF;     /*  input buffering pointers    */
 static char lgetwbuf[LINBUFSIZE];      /* get line (word) buffer                               */
 
+#ifndef VT100
+static int     putchr(int);
+static void    flush_buf(void);
+#endif
+
 /*
  *     setupvt100()            Subroutine to set up terminal in correct mode for game
  *
  *     Attributes off, clear screen, set scrolling region, set tty mode
  */
-setupvt100()
+void
+setupvt100(void)
        {
-       clear();  setscroll();  scbr(); /* system("stty cbreak -echo"); */
+       clear();  setscroll();  scbr();
        }
 
 /*
@@ -113,15 +121,16 @@ setupvt100()
  *
  *     Attributes off, clear screen, unset scrolling region, restore tty mode
  */
-clearvt100()
+void
+clearvt100(void)
        {
-       resetscroll();  clear();  sncbr(); /* system("stty -cbreak echo"); */
+       resetscroll();  clear();  sncbr();
        }
-
 /*
- *     getchar()               Routine to read in one character from the terminal
+ *     getchr()                Routine to read in one character from the terminal
  */
-getchar()
+char
+getchr(void)
        {
        char byt;
 #ifdef EXTRA
@@ -131,13 +140,13 @@ getchar()
        read(0,&byt,1);         /* get byte from terminal */
        return(byt);
        }
-
 /*
  *     scbr()          Function to set cbreak -echo for the terminal
  *
  *     like: system("stty cbreak -echo")
  */
-scbr()
+void
+scbr(void)
        {
        gtty(0,&ttx);           doraw(ttx);             stty(0,&ttx);
        }
@@ -147,7 +156,8 @@ scbr()
  *
  *     like: system("stty -cbreak echo")
  */
-sncbr()
+void
+sncbr(void)
        {
        gtty(0,&ttx);           unraw(ttx);             stty(0,&ttx);
        }
@@ -155,7 +165,8 @@ sncbr()
 /*
  *     newgame()               Subroutine to save the initial time and seed rnd()
  */
-newgame()
+void
+newgame(void)
        {
        long *p,*pe;
        for (p=c,pe=c+100; p<pe; *p++ =0);
@@ -176,25 +187,8 @@ newgame()
  *             are done beforehand if needed.
  *     Returns nothing of value.
  */
-#ifdef lint
-/*VARARGS*/
-lprintf(str)
-       char *str;
-       {
-       char *str2;
-       str2 = str;
-       str = str2; /* to make lint happy */
-       }
-/*VARARGS*/
-sprintf(str)
-       char *str;
-       {
-       char *str2;
-       str2 = str;
-       str = str2; /* to make lint happy */
-       }
-#else
 /*VARARGS*/
+void
 lprintf(const char *fmt, ...)
     {
        va_list ap;     /* pointer for variable argument list */
@@ -228,12 +222,12 @@ lprintf(const char *fmt, ...)
                                                cont=0; break;
 
                        case 's':       tmpb = va_arg(ap, char *);
-                                               if (wide==0)  { while (*outb++ = *tmpb++);  --outb; }
+                                               if (wide==0)  { while ((*outb++ = *tmpb++));  --outb; }
                                                else
                                                        {
                                                        n = wide - strlen(tmpb);
                                                        if (left)  while (n-- > 0) *outb++ = ' ';
-                                                       while (*outb++ = *tmpb++);  --outb;
+                                                       while ((*outb++ = *tmpb++));  --outb;
                                                        if (left==0)  while (n-- > 0) *outb++ = ' ';
                                                        }
                                                cont=0; break;
@@ -259,7 +253,6 @@ lprintf(const char *fmt, ...)
                }
        va_end(ap);
        }
-#endif /* lint */
 
 /*
  *     lprint(long-integer)                            send binary integer to output buffer
@@ -277,8 +270,8 @@ lprintf(const char *fmt, ...)
  *     No checking for output buffer overflow is done, but flushes if needed!
  *     Returns nothing of value.
  */
-lprint(x)
-       long x;
+void
+lprint(long x)
        {
        if (lpnt >= lpend) lflush();
        *lpnt++ =  255 & x;                     *lpnt++ =  255 & (x>>8);
@@ -293,9 +286,8 @@ lprint(x)
  *     Enter with the address and number of bytes to write out
  *     Returns nothing of value
  */
-lwrite(buf,len)
-    char *buf;
-    int len;
+void
+lwrite(char *buf, int len)
     {
        char *str;
        int num2;
@@ -329,7 +321,8 @@ lwrite(buf,len)
  *
  *  Returns 0 if EOF, otherwise the character
  */
-long lgetc()
+long
+lgetc(void)
     {
     int i;
     if (ipoint != iepoint)  return(inbuffer[ipoint++]);
@@ -355,7 +348,8 @@ long lgetc()
  *     The save order is low order first, to high order (4 bytes total)
  *     Returns the int read
  */
-long lrint_x()
+long
+lrint_x(void)
        {
        unsigned long i;
        i  = 255 & lgetc();                             i |= (255 & lgetc()) << 8;
@@ -371,9 +365,8 @@ long lrint_x()
  *     Reads "number" bytes into the buffer pointed to by "address".
  *     Returns nothing of value
  */
-lrfill(adr,num)
-       char *adr;
-       int num;
+void
+lrfill(char *adr, int num)
        {
        char *pnt;
        int num2;
@@ -404,7 +397,8 @@ lrfill(adr,num)
  *
  *     Returns pointer to a buffer that contains word.  If EOF, returns a NULL
  */
-char *lgetw()
+char *
+lgetw(void)
        {
        char *lgp,cc;
        int n=LINBUFSIZE,quote=0;
@@ -423,7 +417,8 @@ char *lgetw()
  *
  *     Returns pointer to a buffer that contains the line.  If EOF, returns NULL
  */
-char *lgetl()
+char *
+lgetl(void)
        {
        int i=LINBUFSIZE,ch;
        char *str=lgetwbuf;
@@ -445,8 +440,8 @@ char *lgetl()
  *     lcreat((char*)0); means to the terminal
  *     Returns -1 if error, otherwise the file descriptor opened.
  */
-lcreat(str)
-       char *str;
+int
+lcreat(char *str)
        {
        lpnt = lpbuf;   lpend = lpbuf+BUFBIG;
        if (str==NULL) return(lfd=1);
@@ -464,8 +459,8 @@ lcreat(str)
  *     lopen(0) means from the terminal
  *     Returns -1 if error, otherwise the file descriptor opened.
  */
-lopen(str)
-       char *str;
+int
+lopen(char *str)
        {
        ipoint = iepoint = MAXIBUF;
        if (str==NULL) return(fd=0);
@@ -483,8 +478,8 @@ lopen(str)
  *     lappend(0) means to the terminal
  *     Returns -1 if error, otherwise the file descriptor opened.
  */
-lappend(str)
-       char *str;
+int
+lappend(char *str)
        {
        lpnt = lpbuf;   lpend = lpbuf+BUFBIG;
        if (str==NULL) return(lfd=1);
@@ -501,7 +496,8 @@ lappend(str)
  *
  *     Returns nothing of value.
  */
-lrclose()
+void
+lrclose(void)
        {
        if (fd > 0) close(fd);
        }
@@ -511,7 +507,8 @@ lrclose()
  *
  *     Returns nothing of value.
  */
-lwclose()
+void
+lwclose(void)
        {
        lflush();       if (lfd > 2) close(lfd);
        }
@@ -520,13 +517,13 @@ lwclose()
  *     lprcat(string)                                  append a string to the output buffer
  *                                                                 avoids calls to lprintf (time consuming)
  */
-lprcat(str)
-    char *str;
+void
+lprcat(const char *str)
     {
        char *str2;
        if (lpnt >= lpend) lflush();
        str2 = lpnt;
-       while (*str2++ = *str++);
+       while ((*str2++ = *str++));
        lpnt = str2 - 1;
     }
 
@@ -537,12 +534,12 @@ lprcat(str)
  *     x and y are the cursor coordinates, and lpbuff is the output buffer where
  *     escape sequence will be placed.
  */
-static char *y_num[]= { "\33[","\33[","\33[2","\33[3","\33[4","\33[5","\33[6",
+static const char *y_num[]= { "\33[","\33[","\33[2","\33[3","\33[4","\33[5","\33[6",
        "\33[7","\33[8","\33[9","\33[10","\33[11","\33[12","\33[13","\33[14",
        "\33[15","\33[16","\33[17","\33[18","\33[19","\33[20","\33[21","\33[22",
        "\33[23","\33[24" };
 
-static char *x_num[]= { "H","H",";2H",";3H",";4H",";5H",";6H",";7H",";8H",";9H",
+static const char *x_num[]= { "H","H",";2H",";3H",";4H",";5H",";6H",";7H",";8H",";9H",
        ";10H",";11H",";12H",";13H",";14H",";15H",";16H",";17H",";18H",";19H",
        ";20H",";21H",";22H",";23H",";24H",";25H",";26H",";27H",";28H",";29H",
        ";30H",";31H",";32H",";33H",";34H",";35H",";36H",";37H",";38H",";39H",
@@ -552,8 +549,8 @@ static char *x_num[]= { "H","H",";2H",";3H",";4H",";5H",";6H",";7H",";8H",";9H",
        ";70H",";71H",";72H",";73H",";74H",";75H",";76H",";77H",";78H",";79H",
        ";80H" };
 
-cursor(x,y)
-       int x,y;
+void
+cursor(int x, int y)
        {
        char *p;
        if (lpnt >= lpend) lflush();
@@ -568,8 +565,8 @@ cursor(x,y)
 /*
  * cursor(x,y)   Put cursor at specified coordinates staring at [1,1] (termcap)
  */
-cursor (x,y)
-       int x,y;
+void
+cursor(int x, int y)
        {
        if (lpnt >= lpend) lflush ();
 
@@ -580,7 +577,8 @@ cursor (x,y)
 /*
  *     Routine to position cursor at beginning of 24th line
  */
-cursors()
+void
+cursors(void)
        {
        cursor(1,24);
        }
@@ -597,17 +595,15 @@ static char cap[256];
 char *CM, *CE, *CD, *CL, *SO, *SE, *AL, *DL;/* Termcap capabilities */
 static char *outbuf=0; /* translated output buffer */
 
-int putchar ();
-
 /*
  * init_term()         Terminal initialization -- setup termcap info
  */
-init_term()
+void
+init_term(void)
        {
        char termbuf[1024];
        char *capptr = cap+10;
        char *term;
-       struct sgttyb tt;
 
        switch (tgetent(termbuf, term = getenv("TERM")))
                {
@@ -620,9 +616,6 @@ init_term()
                        exit(1);
                };
 
-       if (gtty(0, &tt) == 0)
-               /* ospeed = tt.sg_ospeed */ ;
-
        CM = tgetstr("cm", &capptr);  /* Cursor motion */
        CE = tgetstr("ce", &capptr);  /* Clear to eoln */
        CL = tgetstr("cl", &capptr);  /* Clear screen */
@@ -663,8 +656,8 @@ init_term()
 /*
  * cl_line(x,y)  Clear the whole line indicated by 'y' and leave cursor at [x,y]
  */
-cl_line(x,y)
-       int x,y;
+void
+cl_line(int x, int y)
        {
 #ifdef VT100
        cursor(x,y);            lprcat("\33[2K");
@@ -676,8 +669,8 @@ cl_line(x,y)
 /*
  * cl_up(x,y) Clear screen from [x,1] to current position. Leave cursor at [x,y]
  */
-cl_up(x,y)
-       int x,y;
+void
+cl_up(int x, int y)
        {
 #ifdef VT100
        cursor(x,y);  lprcat("\33[1J\33[2K");
@@ -692,8 +685,8 @@ cl_up(x,y)
 /*
  * cl_dn(x,y)  Clear screen from [1,y] to end of display. Leave cursor at [x,y]
  */
-cl_dn(x,y)
-       int x,y;
+void
+cl_dn(int x, int y)
        {
 #ifdef VT100
        cursor(x,y); lprcat("\33[J\33[2K");
@@ -715,8 +708,8 @@ cl_dn(x,y)
 /*
  * standout(str)       Print the argument string in inverse video (standout mode).
  */
-standout(str)
-       char *str;
+void
+standout(const char *str)
        {
 #ifdef VT100
        setbold();
@@ -734,7 +727,8 @@ standout(str)
 /*
  * set_score_output()  Called when output should be literally printed.
  */
-set_score_output()
+void
+set_score_output(void)
        {
        enable_scroll = -1;
        }
@@ -748,7 +742,9 @@ set_score_output()
  */
 #ifndef VT100
 static int scrline=18; /* line # for wraparound instead of scrolling if no DL */
-lflush ()
+
+void
+lflush(void)
        {
        int lpoint;
        char *str;
@@ -770,26 +766,26 @@ lflush ()
                        }
                for (str = lpbuf; str < lpnt; str++)
                        {
-                       if (*str>=32)   { putchar (*str); curx++; }
+                       if (*str>=32)   { putchr (*str); curx++; }
                        else switch (*str)
                                {
-                               case CLEAR:             tputs (CL, 0, putchar);         curx = cury = 0;
+                               case CLEAR:             tputs (CL, 0, putchr);          curx = cury = 0;
                                                                break;
 
-                               case CL_LINE:   tputs (CE, 0, putchar);
+                               case CL_LINE:   tputs (CE, 0, putchr);
                                                                break;
 
-                               case CL_DOWN:   tputs (CD, 0, putchar);
+                               case CL_DOWN:   tputs (CD, 0, putchr);
                                                                break;
 
-                               case ST_START:  tputs (SO, 0, putchar);
+                               case ST_START:  tputs (SO, 0, putchr);
                                                                break;
 
-                               case ST_END:    tputs (SE, 0, putchar);
+                               case ST_END:    tputs (SE, 0, putchr);
                                                                break;
 
                                case CURSOR:    curx = *++str - 1;              cury = *++str - 1;
-                                                               tputs (tgoto (CM, curx, cury), 0, putchar);
+                                                               tputs (tgoto (CM, curx, cury), 0, putchr);
                                                                break;
 
                                case '\n':              if ((cury == 23) && enable_scroll)
@@ -799,29 +795,28 @@ lflush ()
                                                                        if (++scrline > 23) scrline=19;
 
                                                                        if (++scrline > 23) scrline=19;
-                                                                       tputs (tgoto (CM, 0, scrline), 0, putchar);
-                                                                       tputs (CE, 0, putchar);
+                                                                       tputs (tgoto (CM, 0, scrline), 0, putchr);
+                                                                       tputs (CE, 0, putchr);
 
                                                                        if (--scrline < 19) scrline=23;
-                                                                       tputs (tgoto (CM, 0, scrline), 0, putchar);
-                                                                       tputs (CE, 0, putchar);
+                                                                       tputs (tgoto (CM, 0, scrline), 0, putchr);
+                                                                       tputs (CE, 0, putchr);
                                                                        }
                                                                  else
                                                                        {
-                                                                       tputs (tgoto (CM, 0, 19), 0, putchar);
-                                                                       tputs (DL, 0, putchar);
-                                                                       tputs (tgoto (CM, 0, 23), 0, putchar);
-                                                               /*      tputs (AL, 0, putchar); */
+                                                                       tputs (tgoto (CM, 0, 19), 0, putchr);
+                                                                       tputs (DL, 0, putchr);
+                                                                       tputs (tgoto (CM, 0, 23), 0, putchr);
                                                                        }
                                                                  }
                                                                else
                                                                  {
-                                                                 putchar ('\n');               cury++;
+                                                                 putchr('\n');         cury++;
                                                                  }
                                                                curx = 0;
                                                                break;
 
-                               default:                putchar (*str); curx++;
+                               default:                putchr(*str); curx++;
                                };
                        }
                }
@@ -834,7 +829,8 @@ lflush ()
  *
  *     Returns nothing of value.
  */
-lflush()
+void
+lflush(void)
     {
        int lpoint;
        if ((lpoint = lpnt - lpbuf) > 0)
@@ -852,19 +848,21 @@ lflush()
 #ifndef VT100
 static int pindex=0;
 /*
- * putchar(ch)         Print one character in decoded output buffer.
+ * putchr(ch)          Print one character in decoded output buffer.
  */
-int putchar(c)
-int c;
+static int
+putchr(int ch)
        {
-       outbuf[pindex++] = c;
+       outbuf[pindex++] = ch;
        if (pindex >= BUFBIG)  flush_buf();
+       return(0);
        }
 
 /*
  * flush_buf()                 Flush buffer with decoded output.
  */
-flush_buf()
+static void
+flush_buf(void)
        {
        if (pindex) write(lfd, outbuf, pindex);
        pindex = 0;
@@ -875,8 +873,8 @@ flush_buf()
  *
  *     Processes only the \33[#m sequence (converts . files for termcap use
  */
-char *tmcapcnv(sd,ss)
-       char *sd,*ss;
+char *
+tmcapcnv(char *sd, char *ss)
        {
        int tmstate=0;  /* 0=normal, 1=\33 2=[ 3=# */
        char tmdigit=0; /* the # in \33[#m */
@@ -891,7 +889,7 @@ char *tmcapcnv(sd,ss)
                        case 1: if (*ss!='[') goto ign;
                                        tmstate++;
                                        break;
-                       case 2: if (isdigit(*ss)) { tmdigit= *ss-'0'; tmstate++; break; }
+                       case 2: if (isdigit((int)*ss)) { tmdigit= *ss-'0'; tmstate++; break; }
                                        if (*ss == 'm') { *sd++ = ST_END; goto ign2; }
                                        goto ign;
                        case 3: if (*ss == 'm')
@@ -912,7 +910,8 @@ char *tmcapcnv(sd,ss)
 /*
  *     beep()          Routine to emit a beep if enabled (see no-beep in .larnopts)
  */
-beep()
+void
+beep(void)
        {
        if (!nobeep) *lpnt++ = '\7';
        }
index 1e5d77c..0e2df15 100644 (file)
@@ -1,6 +1,6 @@
 /*     main.c          */
 /* $FreeBSD: src/games/larn/main.c,v 1.9 1999/11/30 03:48:59 billf Exp $ */
-/* $DragonFly: src/games/larn/main.c,v 1.3 2006/01/22 03:43:37 swildner Exp $ */
+/* $DragonFly: src/games/larn/main.c,v 1.4 2006/08/26 17:05:05 pavalos Exp $ */
 #include <sys/types.h>
 #include <sys/stat.h>
 #include "header.h"
@@ -27,22 +27,51 @@ Cmd line format: larn [-slicnh] [-o<optsifle>] [-##] [++]\n\
   -o<optsfile>   specify .larnopts filename to be used instead of \"~/.larnopts\"\n\
 ";
 #ifdef VT100
-static char *termtypes[] = { "vt100", "vt101", "vt102", "vt103", "vt125",
+static const char *termtypes[] = { "vt100", "vt101", "vt102", "vt103", "vt125",
        "vt131", "vt140", "vt180", "vt220", "vt240", "vt241", "vt320", "vt340",
        "vt341"  };
 #endif /* VT100 */
+
+static void    showstr(void);
+static void    t_setup(int);
+static void    t_endup(int);
+static void    showwear(void);
+static void    showwield(void);
+static void    showread(void);
+static void    showeat(void);
+static void    showquaff(void);
+static void    show1(int, const char **);
+static void    randmonst(void);
+static void    parse(void);
+static void    run(int);
+static void    wield(void);
+static void    ydhi(int);
+static void    ycwi(int);
+static void    wear(void);
+static void    dropobj(void);
+static void    readscr(void);
+static void    eatcookie(void);
+static void    quaff(void);
+static int     whatitem(const char *);
+#ifdef HIDEBYLINK
+static void    szero(char *);
+#endif
+
 /*
        ************
        MAIN PROGRAM
        ************
  */
-main(argc,argv)
-       int argc;
-       char **argv;
+int
+main(int argc, char **argv)
        {
-       int i,j;
+       int i;
        int hard;
-       char *ptr=0,*ttype;
+       const char *ptr;
+#ifdef VT100
+       char *ttype;
+       int j;
+#endif
        struct passwd *pwe;
        struct stat sb;
 
@@ -53,7 +82,7 @@ main(argc,argv)
        init_term();    /* setup the terminal (find out what type) for termcap */
 #endif /* VT100 */
        if (((ptr = getlogin()) == 0) || (*ptr==0)) {   /* try to get login name */
-         if (pwe=getpwuid(getuid())) /* can we get it from /etc/passwd? */
+         if ((pwe=getpwuid(getuid()))) /* can we get it from /etc/passwd? */
                ptr = pwe->pw_name;
          else
          if ((ptr = getenv("USER")) == 0)
@@ -235,7 +264,8 @@ main(argc,argv)
 
        show character's inventory
  */
-showstr()
+static void
+showstr(void)
        {
        int i,number;
        for (number=3, i=0; i<26; i++)
@@ -243,7 +273,8 @@ showstr()
        t_setup(number);        qshowstr();       t_endup(number);
        }
 
-qshowstr()
+void
+qshowstr(void)
        {
        int i,j,k,sigsav;
        srcount=0;  sigsav=nosignal;  nosignal=1; /* don't allow ^c etc */
@@ -260,8 +291,8 @@ qshowstr()
 /*
  *     subroutine to clear screen depending on # lines to display
  */
-t_setup(count)
-       int count;
+static void
+t_setup(int count)
        {
        if (count<20)  /* how do we clear the screen? */
                {
@@ -276,8 +307,8 @@ t_setup(count)
 /*
  *     subroutine to restore normal display screen depending on t_setup()
  */
-t_endup(count)
-       int count;
+static void
+t_endup(int count)
        {
        if (count<18)  /* how did we clear the screen? */
                draws(0,MAXX,0,(count>MAXY) ? MAXY : count);
@@ -290,14 +321,15 @@ t_endup(count)
 /*
        function to show the things player is wearing only
  */
-showwear()
+static void
+showwear(void)
        {
        int i,j,sigsav,count;
        sigsav=nosignal;  nosignal=1; /* don't allow ^c etc */
        srcount=0;
 
         for (count=2,j=0; j<=26; j++)   /* count number of items we will display */
-          if (i=iven[j])
+          if ((i=iven[j]))
                switch(i)
                        {
                        case OLEATHER:  case OPLATE:    case OCHAIN:
@@ -324,14 +356,15 @@ showwear()
 /*
        function to show the things player can wield only
  */
-showwield()
+static void
+showwield(void)
        {
        int i,j,sigsav,count;
        sigsav=nosignal;  nosignal=1; /* don't allow ^c etc */
        srcount=0;
 
         for (count=2,j=0; j<=26; j++)  /* count how many items */
-          if (i=iven[j])
+          if ((i=iven[j]))
                switch(i)
                        {
                        case ODIAMOND:  case ORUBY:  case OEMERALD:  case OSAPPHIRE:
@@ -360,7 +393,8 @@ showwield()
 /*
  *     function to show the things player can read only
  */
-showread()
+static void
+showread(void)
        {
        int i,j,sigsav,count;
        sigsav=nosignal;  nosignal=1; /* don't allow ^c etc */
@@ -386,7 +420,8 @@ showread()
 /*
  *     function to show the things player can eat only
  */
-showeat()
+static void
+showeat(void)
        {
        int i,j,sigsav,count;
        sigsav=nosignal;  nosignal=1; /* don't allow ^c etc */
@@ -412,7 +447,8 @@ showeat()
 /*
        function to show the things player can quaff only
  */
-showquaff()
+static void
+showquaff(void)
        {
        int i,j,sigsav,count;
        sigsav=nosignal;  nosignal=1; /* don't allow ^c etc */
@@ -435,42 +471,42 @@ showquaff()
        more();         nosignal=sigsav;                t_endup(count);
        }
 
-show1(idx,str2)
-       int idx;
-       char *str2[];
+static void
+show1(int idx, const char *str2[])
        {
-       if (str2==0)  lprintf("\n%c)   %s",idx+'a',objectname[iven[idx]]);
-       else if (*str2[ivenarg[idx]]==0)  lprintf("\n%c)   %s",idx+'a',objectname[iven[idx]]);
-       else lprintf("\n%c)   %s of%s",idx+'a',objectname[iven[idx]],str2[ivenarg[idx]]);
+       lprintf("\n%c)   %s",idx+'a',objectname[(int)iven[idx]]);
+       if(str2 != NULL && str2[ivenarg[idx]][0] != NULL)
+               lprintf(" of%s", str2[ivenarg[idx]]);
        }
 
-show3(index)
-       int index;
+void
+show3(int idx)
        {
-       switch(iven[index])
+       switch(iven[idx])
                {
-               case OPOTION:   show1(index,potionname);  break;
-               case OSCROLL:   show1(index,scrollname);  break;
+               case OPOTION:   show1(idx,potionname);  break;
+               case OSCROLL:   show1(idx,scrollname);  break;
 
                case OLARNEYE:          case OBOOK:                     case OSPIRITSCARAB:
                case ODIAMOND:          case ORUBY:                     case OCUBEofUNDEAD:
                case OEMERALD:          case OCHEST:            case OCOOKIE:
-               case OSAPPHIRE:         case ONOTHEFT:          show1(index,(char **)0);  break;
+               case OSAPPHIRE:         case ONOTHEFT:          show1(idx,NULL);  break;
 
-               default:                lprintf("\n%c)   %s",index+'a',objectname[iven[index]]);
-                                               if (ivenarg[index]>0) lprintf(" + %d",(long)ivenarg[index]);
-                                               else if (ivenarg[index]<0) lprintf(" %d",(long)ivenarg[index]);
+               default:                lprintf("\n%c)   %s",idx+'a',objectname[(int)iven[idx]]);
+                                               if (ivenarg[idx]>0) lprintf(" + %d",(long)ivenarg[idx]);
+                                               else if (ivenarg[idx]<0) lprintf(" %d",(long)ivenarg[idx]);
                                                break;
                }
-       if (c[WIELD]==index) lprcat(" (weapon in hand)");
-       if ((c[WEAR]==index) || (c[SHIELD]==index))  lprcat(" (being worn)");
+       if (c[WIELD]==idx) lprcat(" (weapon in hand)");
+       if ((c[WEAR]==idx) || (c[SHIELD]==idx))  lprcat(" (being worn)");
        if (++srcount>=22) { srcount=0; more(); clear(); }
        }
 
 /*
        subroutine to randomly create monsters if needed
  */
-randmonst()
+static void
+randmonst(void)
        {
        if (c[TIMESTOP]) return;        /*      don't make monsters if time is stopped  */
        if (--rmst <= 0)
@@ -485,7 +521,8 @@ randmonst()
 
        get and execute a command
  */
-parse()
+static void
+parse(void)
        {
        int i,j,k,flag;
        while   (1)
@@ -553,7 +590,7 @@ parse()
                                                                        {
                                                                        case OTRAPDOOR:         case ODARTRAP:
                                                                        case OTRAPARROW:        case OTELEPORTER:
-                                                                               lprcat("\nIts "); lprcat(objectname[item[i][j]]);  flag++;
+                                                                               lprcat("\nIts "); lprcat(objectname[(int)item[i][j]]);  flag++;
                                                                        };
                                                                }
                                                        }
@@ -583,8 +620,8 @@ parse()
                                                for (i=0; i<MAXY; i++)
                                                        for (j=0; j<MAXX; j++)  know[j][i]=1;
                                                for (i=0; i<SPNUM; i++) spelknow[i]=1;
-                                               for (i=0; i<MAXSCROLL; i++)  scrollname[i][0]=' ';
-                                               for (i=0; i<MAXPOTION; i++)  potionname[i][0]=' ';
+                                               for (i=0; i<MAXSCROLL; i++)  scrollname[i] = scrollhide[i];
+                                               for (i=0; i<MAXPOTION; i++)  potionname[i] = potionhide[i];
                                                }
                                                for (i=0; i<MAXSCROLL; i++)
                                                  if (strlen(scrollname[i])>2) /* no null items */
@@ -637,14 +674,15 @@ parse()
                }
        }
 
-parse2()
+void
+parse2(void)
        {
        if (c[HASTEMONST]) movemonst(); movemonst(); /* move the monsters               */
        randmonst();    regen();
        }
 
-run(dir)
-       int dir;
+static void
+run(int dir)
        {
        int i;
        i=1; while (i)
@@ -659,7 +697,8 @@ run(dir)
 /*
        function to wield a weapon
  */
-wield()
+static void
+wield(void)
        {
        int i;
        while (1)
@@ -680,17 +719,19 @@ wield()
 /*
        common routine to say you don't have an item
  */
-ydhi(x)
-       int x;
+static void
+ydhi(int x)
        { cursors();  lprintf("\nYou don't have item %c!",x); }
-ycwi(x)
-       int x;
+
+static void
+ycwi(int x)
        { cursors();  lprintf("\nYou can't wield item %c!",x); }
 
 /*
        function to wear armor
  */
-wear()
+static void
+wear(void)
        {
        int i;
        while (1)
@@ -718,7 +759,8 @@ wear()
 /*
        function to drop an object
  */
-dropobj()
+static void
+dropobj(void)
        {
        int i;
        char *p;
@@ -762,7 +804,8 @@ dropobj()
 /*
  *     readscr()               Subroutine to read a scroll one is carrying
  */
-readscr()
+static void
+readscr(void)
        {
        int i;
        while (1)
@@ -784,10 +827,11 @@ readscr()
 /*
  *     subroutine to eat a cookie one is carrying
  */
-eatcookie()
+static void
+eatcookie(void)
 {
 int i;
-char *p;
+const char *p;
 while (1)
        {
        if ((i = whatitem("eat"))=='\33')  return;
@@ -800,7 +844,7 @@ while (1)
                                iven[i-'a']=0;
                                if (!c[BLINDCOUNT])
                                        {
-                                       if (p=fortune(fortfile))
+                                       if ((p=fortune()))
                                                {
                                                lprcat("  Inside you find a scrap of paper that says:\n");
                                                lprcat(p);
@@ -818,7 +862,8 @@ while (1)
 /*
  *     subroutine to quaff a potion one is carrying
  */
-quaff()
+static void
+quaff(void)
        {
        int i;
        while (1)
@@ -839,12 +884,12 @@ quaff()
 /*
        function to ask what player wants to do
  */
-whatitem(str)
-       char *str;
+static int
+whatitem(const char *str)
        {
        int i;
        cursors();  lprintf("\nWhat do you want to %s [* for all] ? ",str);
-       i=0; while (i>'z' || (i<'a' && i!='*' && i!='\33' && i!='.')) i=getchar();
+       i=0; while (i>'z' || (i<'a' && i!='*' && i!='\33' && i!='.')) i=getchr();
        if (i=='\33')  lprcat(" aborted");
        return(i);
        }
@@ -853,20 +898,20 @@ whatitem(str)
        subroutine to get a number from the player
        and allow * to mean return amt, else return the number entered
  */
-unsigned long readnum(mx)
-       long mx;
+unsigned long
+readnum(long mx)
        {
        int i;
        unsigned long amt=0;
        sncbr();
-       if ((i=getchar()) == '*')  amt = mx;   /* allow him to say * for all gold */
+       if ((i=getchr()) == '*')  amt = mx;   /* allow him to say * for all gold */
        else
                while (i != '\n')
                        {
                        if (i=='\033') { scbr(); lprcat(" aborted"); return(0); }
                        if ((i <= '9') && (i >= '0') && (amt<99999999))
                                amt = amt*10+i-'0';
-                       i = getchar();
+                       i = getchr();
                        }
        scbr();  return(amt);
        }
@@ -875,8 +920,8 @@ unsigned long readnum(mx)
 /*
  *     routine to zero every byte in a string
  */
-szero(str)
-       char *str;
+static void
+szero(char *str)
        {
        while (*str)
                *str++ = 0;
index cb89a40..6c4859f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *     monster.c               Larn is copyrighted 1986 by Noah Morgan.
  * $FreeBSD: src/games/larn/monster.c,v 1.6 1999/11/16 11:47:40 marcel Exp $
- * $DragonFly: src/games/larn/monster.c,v 1.3 2006/06/10 17:37:08 dillon Exp $
+ * $DragonFly: src/games/larn/monster.c,v 1.4 2006/08/26 17:05:05 pavalos Exp $
  *
  *     This file contains the following functions:
  *     ----------------------------------------------------------------------------
@@ -107,6 +107,23 @@ struct isave       /* used for altar reality */
        short arg;      /* the type of item or hitpoints of monster */
        };
 
+static int     cgood(int, int, int, int);
+static void    speldamage(int);
+static void    loseint(void);
+static long    isconfuse(void);
+static int     nospell(int, int);
+static int     fullhit(int);
+static void    direct(int, int, const char *, int);
+static void    ifblind(int, int);
+static void    tdirect(int);
+static void    omnidirect(int, int, const char *);
+static int     dirsub(int *, int *);
+static void    dirpoly(int);
+static void    dropsomething(int);
+static int     spattack(int, int, int);
+static void    sphboom(int, int);
+static void    genmonst(void);
+
 /*
  *     createmonster(monstno)          Function to create a monster next to the player
  *             int monstno;
@@ -114,8 +131,8 @@ struct isave        /* used for altar reality */
  *     Enter with the monster number (1 to MAXMONST+8)
  *     Returns no value.
  */
-createmonster(mon)
-       int mon;
+void
+createmonster(int mon)
        {
        int x,y,k,i;
        if (mon<1 || mon>MAXMONST+8)    /* check for monster number out of bounds */
@@ -152,9 +169,8 @@ createmonster(mon)
  *                       if monst==TRUE check for no monster at this location
  *     This routine will return FALSE if at a wall or the dungeon exit on level 1
  */
-int cgood(x,y,itm,monst)
-       int x,y;
-       int itm,monst;
+static int
+cgood(int x, int y, int itm, int monst)
        {
        if ((y>=0) && (y<=MAXY-1) && (x>=0) && (x<=MAXX-1)) /* within bounds? */
          if (item[x][y]!=OWALL)        /* can't make anything on walls */
@@ -172,8 +188,8 @@ int cgood(x,y,itm,monst)
  *     Enter with the item number and its argument (iven[], ivenarg[])
  *     Returns no value, thus we don't know about createitem() failures.
  */
-createitem(it,arg)
-       int it,arg;
+void
+createitem(int it, int arg)
        {
        int x,y,k,i;
        if (it >= MAXOBJ) return;       /* no such object */
@@ -193,18 +209,20 @@ createitem(it,arg)
  *
  *     No arguments and no return value.
  */
-static char eys[] = "\nEnter your spell: ";
-cast()
+static const char eys[] = "\nEnter your spell: ";
+
+void
+cast(void)
        {
        int i,j,a,b,d;
        cursors();
        if (c[SPELLS]<=0) {     lprcat("\nYou don't have any spells!"); return; }
        lprcat(eys);            --c[SPELLS];
-       while ((a=getchar())=='D')
+       while ((a=getchr())=='D')
                { seemagic(-1); cursors();  lprcat(eys); }
        if (a=='\33') goto over; /*     to escape casting a spell       */
-       if ((b=getchar())=='\33') goto over; /* to escape casting a spell       */
-       if ((d=getchar())=='\33')
+       if ((b=getchr())=='\33') goto over; /*  to escape casting a spell       */
+       if ((d=getchr())=='\33')
                { over: lprcat(aborted); c[SPELLS]++; return; } /*      to escape casting a spell       */
 #ifdef EXTRA
        c[SPELLSCAST]++;
@@ -218,8 +236,6 @@ cast()
        bottomline();
        }
 
-static int dirsub();
-
 /*
  *     speldamage(x)           Function to perform spell functions cast by the player
  *             int x;
@@ -227,12 +243,13 @@ static int dirsub();
  *     Enter with the spell number, returns no value.
  *     Please insure that there are 2 spaces before all messages here
  */
-speldamage(x)
-       int x;
+static void
+speldamage(int x)
        {
        int i,j,clev;
        int xl,xh,yl,yh;
        char *p,*kn,*pm;
+       const char *cp;
        if (x>=SPNUM) return;   /* no such spell */
        if (c[TIMESTOP])  { lprcat("  It didn't seem to work"); return; }  /* not if time stopped */
        clev = c[LEVEL];
@@ -256,8 +273,8 @@ speldamage(x)
                                c[DEXCOUNT] += 400;     return;
 
                case 3: i=rnd(3)+1;
-                               p="  While the %s slept, you smashed it %d times";
-                       ws:     direct(x,fullhit(i),p,i); /*    sleep   */      return;
+                               cp="  While the %s slept, you smashed it %d times";
+                       ws:     direct(x,fullhit(i),cp,i); /*   sleep   */      return;
 
                case 4: /*      charm monster   */      c[CHARMCOUNT] += c[CHARISMA]<<1;        return;
 
@@ -266,7 +283,7 @@ speldamage(x)
 
 /* ----- LEVEL 2 SPELLS ----- */
 
-               case 6: i=rnd(3)+2;     p="  While the %s is entangled, you hit %d times";
+               case 6: i=rnd(3)+2;     cp="  While the %s is entangled, you hit %d times";
                                goto ws; /* web */
 
                case 7: if (c[STRCOUNT]==0) c[STREXTRA]+=3;     /*      strength        */
@@ -460,7 +477,8 @@ speldamage(x)
  *
  *     No arguments and no return value
  */
-loseint()
+static void
+loseint(void)
        {
        if (--c[INTELLIGENCE]<3)  c[INTELLIGENCE]=3;
        }
@@ -471,7 +489,8 @@ loseint()
  *     This routine prints out a message saying "You can't aim your magic!"
  *     returns 0 if not confused, non-zero (time remaining confused) if confused
  */
-isconfuse()
+static long
+isconfuse(void)
        {
        if (c[CONFUSE]) { lprcat(" You can't aim your magic!"); beep(); }
        return(c[CONFUSE]);
@@ -485,8 +504,8 @@ isconfuse()
  *       otherwise returns 0
  *     Enter with the spell number in x, and the monster number in monst.
  */
-nospell(x,monst)
-       int x,monst;
+static int
+nospell(int x, int monst)
        {
        int tmp;
        if (x>=SPNUM || monst>=MAXMONST+8 || monst<0 || x<0) return(0); /* bad spell or monst */
@@ -501,8 +520,8 @@ nospell(x,monst)
  *     Function to return hp damage to monster due to a number of full hits
  *     Enter with the number of full hits being done
  */
-fullhit(xx)
-       int xx;
+static int
+fullhit(int xx)
        {
        int i;
        if (xx<0 || xx>20) return(0);   /* fullhits are out of range */
@@ -521,9 +540,8 @@ fullhit(xx)
  *       lprintf format string in str, and lprintf's argument in arg.
  *     Returns no value.
  */
-direct(spnum,dam,str,arg)
-       int spnum,dam,arg;
-       char *str;
+static void
+direct(int spnum, int dam, const char *str, int arg)
        {
        int x,y;
        int m;
@@ -572,9 +590,8 @@ direct(spnum,dam,str,arg)
  *       locations in delay, and the character to represent the weapon in cshow.
  *     Returns no value.
  */
-godirect(spnum,dam,str,delay,cshow)
-       int spnum,dam,delay;
-       char *str,cshow;
+void
+godirect(int spnum, int dam, const char *str, int delay, char cshow)
        {
        char *p;
        int x,y,m;
@@ -662,10 +679,10 @@ godirect(spnum,dam,str,delay,cshow)
  *     Enter with the coordinates (x,y) of the monster
  *     Returns no value.
  */
-ifblind(x,y)
-       int x,y;
+static void
+ifblind(int x, int y)
        {
-       char *p;
+       const char *p;
        vxy(&x,&y);     /* verify correct x,y coordinates */
        if (c[BLINDCOUNT]) { lastnum=279;  p="monster"; }
                else { lastnum=mitem[x][y];  p=monster[lastnum].name; }
@@ -680,8 +697,8 @@ ifblind(x,y)
  *     Enter with the spell number that wants to teleport away
  *     Returns no value.
  */
-tdirect(spnum)
-       int spnum;
+static void
+tdirect(int spnum)
        {
        int x,y;
        int m;
@@ -705,16 +722,15 @@ tdirect(spnum)
  *       and the lprintf string to identify the spell in str.
  *     Returns no value.
  */
-omnidirect(spnum,dam,str)
-       int spnum,dam;
-       char *str;
+static void
+omnidirect(int spnum, int dam, const char *str)
        {
        int x,y,m;
        if (spnum<0 || spnum>=SPNUM || str==0) return; /* bad args */
        for (x=playerx-1; x<playerx+2; x++)
                for (y=playery-1; y<playery+2; y++)
                        {
-                       if (m=mitem[x][y])
+                       if ((m=mitem[x][y]))
                                {
                                if (nospell(spnum,m) == 0)
                                        {
@@ -736,13 +752,12 @@ omnidirect(spnum,dam,str)
  *     Returns index into diroffx[] (0-8).
  */
 static int
-dirsub(x,y)
-       int *x,*y;
+dirsub(int *x, int *y)
        {
        int i;
        lprcat("\nIn What Direction? ");
        for (i=0; ; )
-               switch(getchar())
+               switch(getchr())
                        {
                        case 'b':       i++;
                        case 'n':       i++;
@@ -768,8 +783,8 @@ out:
  *     Returns TRUE if it was out of bounds, and the *x & *y in the calling
  *     routine are affected.
  */
-vxy(x,y)
-       int *x,*y;
+int
+vxy(int *x, int *y)
        {
        int flag=0;
        if (*x<0) { *x=0; flag++; }
@@ -787,8 +802,8 @@ vxy(x,y)
  *     Enter with the spell number in spmun.
  *     Returns no value.
  */
-dirpoly(spnum)
-       int spnum;
+static void
+dirpoly(int spnum)
        {
        int x,y,m;
        if (spnum<0 || spnum>=SPNUM) return; /* bad args */
@@ -811,10 +826,10 @@ dirpoly(spnum)
  *     Enter with the coordinates of the monster in (x,y).
  *     Returns no value.
  */
-hitmonster(x,y)
-       int x,y;
+void
+hitmonster(int x, int y)
        {
-       int tmp,monst,damag,flag;
+       int tmp,monst,damag=0,flag;
        if (c[TIMESTOP])  return;  /* not if time stopped */
        vxy(&x,&y);     /* verify coordinates are within range */
        if ((monst = mitem[x][y]) == 0) return;
@@ -852,9 +867,8 @@ hitmonster(x,y)
  *     This routine is used to specifically damage a monster at a location (x,y)
  *     Called by hitmonster(x,y)
  */
-hitm(x,y,amt)
-       int x,y;
-       int amt;
+int
+hitm(int x, int y, int amt)
        {
        int monst;
        int hpoints,amt2;
@@ -896,8 +910,8 @@ hitm(x,y,amt)
  *     Function for the monster to hit the player with monster at location x,y
  *     Returns nothing of value.
  */
-hitplayer(x,y)
-       int x,y;
+void
+hitplayer(int x, int y)
        {
        int dam,tmp,mster,bias;
        vxy(&x,&y);     /* verify coordinates are within range */
@@ -951,8 +965,8 @@ hitplayer(x,y)
  *     Enter with the monster number
  *     Returns nothing of value.
  */
-dropsomething(monst)
-       int monst;
+static void
+dropsomething(int monst)
        {
        switch(monst)
                {
@@ -973,28 +987,28 @@ dropsomething(monst)
  *     Enter with the number of gold pieces to drop
  *     Returns nothing of value.
  */
-dropgold(amount)
-       int amount;
+void
+dropgold(int amount)
        {
        if (amount > 250) createitem(OMAXGOLD,amount/100);  else  createitem(OGOLDPILE,amount);
        }
 
 /*
- *     something(level)        Function to create a random item around player
- *             int level;
+ *     something(lvl)  Function to create a random item around player
+ *             int lvl;
  *
  *     Function to create an item from a designed probability around player
  *     Enter with the cave level on which something is to be dropped
  *     Returns nothing of value.
  */
-something(level)
-       int level;
+void
+something(int lvl)
        {
        int j;
        int i;
-       if (level<0 || level>MAXLEVEL+MAXVLEVEL) return;        /* correct level? */
-       if (rnd(101)<8) something(level); /* possibly more than one item */
-       j = newobject(level,&i);                createitem(j,i);
+       if (lvl<0 || lvl>MAXLEVEL+MAXVLEVEL) return;    /* correct level? */
+       if (rnd(101)<8) something(lvl); /* possibly more than one item */
+       j = newobject(lvl,&i);          createitem(j,i);
        }
 
 /*
@@ -1012,8 +1026,8 @@ static char nobjtab[] = { 0, OSCROLL,  OSCROLL,  OSCROLL,  OSCROLL, OPOTION,
        OBELT, ORING, OSTUDLEATHER, OSHIELD, OFLAIL, OCHAIN, O2SWORD, OPLATE,
        OLONGSWORD };
 
-newobject(lev,i)
-       int lev,*i;
+int
+newobject(int lev, int *i)
        {
        int tmp=32,j;
        if (level<0 || level>MAXLEVEL+MAXVLEVEL) return(0);     /* correct level? */
@@ -1074,14 +1088,17 @@ newobject(lev,i)
  *     format is: { armor type , minimum attribute
  */
 #define ARMORTYPES 6
-static char rustarm[ARMORTYPES][2] = { OSTUDLEATHER,-2,        ORING,-4, OCHAIN,-5,
-       OSPLINT,-6,             OPLATE,-8,              OPLATEARMOR,-9  };
+static char rustarm[ARMORTYPES][2] = {
+       { OSTUDLEATHER, -2 },   { ORING, -4 },  { OCHAIN, -5 },
+       { OSPLINT, -6},         { OPLATE, -8},  { OPLATEARMOR, -9 }
+};
 static char spsel[] = { 1, 2, 3, 5, 6, 8, 9, 11, 13, 14 };
-spattack(x,xx,yy)
-       int x,xx,yy;
+
+static int
+spattack(int x, int xx, int yy)
        {
        int i,j=0,k,m;
-       char *p=0;
+       const char *p=NULL;
        if (c[CANCELLATION]) return(0);
        vxy(&xx,&yy);   /* verify x & y coordinates */
        switch(x)
@@ -1212,8 +1229,8 @@ spattack(x,xx,yy)
  *     Enter with the number of hit points to lose
  *     Note: if x > c[HP] this routine could kill the player!
  */
-checkloss(x)
-       int x;
+void
+checkloss(int x)
        {
        if (x>0) { losehp(x);  bottomhp(); }
        }
@@ -1224,7 +1241,8 @@ checkloss(x)
  *     Gives player experience, but no dropped objects
  *     Returns the experience gained from all monsters killed
  */
-annihilate()
+long
+annihilate(void)
        {
        int i,j;
        long k;
@@ -1232,18 +1250,20 @@ annihilate()
        for (k=0, i=playerx-1; i<=playerx+1; i++)
          for (j=playery-1; j<=playery+1; j++)
                if (!vxy(&i,&j)) /* if not out of bounds */
-                       {
+               {
                        if (*(p= &mitem[i][j])) /* if a monster there */
+                       {
                                if (*p<DEMONLORD+2)
                                        {
-                                       k += monster[*p].experience;    *p=know[i][j]=0;
+                                       k += monster[(int)*p].experience;       *p=know[i][j]=0;
                                        }
                                else
                                        {
-                                       lprintf("\nThe %s barely escapes being annihilated!",monster[*p].name);
+                                       lprintf("\nThe %s barely escapes being annihilated!",monster[(int)*p].name);
                                        hitp[i][j] = (hitp[i][j]>>1) + 1; /* lose half hit points*/
                                        }
                        }
+               }
        if (k>0)
                {
                lprcat("\nYou hear loud screams of agony!");    raiseexperience((long)k);
@@ -1260,8 +1280,8 @@ annihilate()
  *       sphere in lifetime (in turns)
  *     Returns the number of spheres currently in existence
  */
-newsphere(x,y,dir,life)
-       int x,y,dir,life;
+long
+newsphere(int x, int y, int dir, int life)
        {
        int m;
        struct sphere *sp;
@@ -1324,8 +1344,8 @@ boom:     sphboom(x,y);   /* blow up stuff around sphere */
  *     Enter with the coordinates of the sphere (on current level)
  *     Returns the number of spheres currently in existence
  */
-rmsphere(x,y)
-       int x,y;
+long
+rmsphere(int x, int y)
        {
        struct sphere *sp,*sp2=0;
        for (sp=spheres; sp; sp2=sp,sp=sp->p)
@@ -1349,8 +1369,8 @@ rmsphere(x,y)
  *
  *     Enter with the coordinates of the blast, Returns no value
  */
-sphboom(x,y)
-       int x,y;
+static void
+sphboom(int x, int y)
        {
        int i,j;
        if (c[HOLDMONST]) c[HOLDMONST]=1;
@@ -1375,11 +1395,12 @@ sphboom(x,y)
  *
  *     This is done by setting a flag in the monster[] structure
  */
-genmonst()
+static void
+genmonst(void)
        {
        int i,j;
        cursors();  lprcat("\nGenocide what monster? ");
-       for (i=0; (!isalpha(i)) && (i!=' '); i=getchar());
+       for (i=0; (!isalpha(i)) && (i!=' '); i=getchr());
        lprc(i);
        for (j=0; j<MAXMONST; j++)      /* search for the monster type */
                if (monstnamelist[j]==i)        /* have we found it? */
index b3a84e9..69f79cc 100644 (file)
@@ -1,6 +1,6 @@
 /* moreobj.c           Larn is copyrighted 1986 by Noah Morgan.
  * $FreeBSD: src/games/larn/moreobj.c,v 1.4 1999/11/16 02:57:22 billf Exp $
- * $DragonFly: src/games/larn/moreobj.c,v 1.2 2003/06/17 04:25:24 dillon Exp $
+ * $DragonFly: src/games/larn/moreobj.c,v 1.3 2006/08/26 17:05:05 pavalos Exp $
  *
  *     Routines in this file:
  *
@@ -11,7 +11,9 @@
  */
 #include "header.h"
 
-static void ohear();
+static void    ohear(void);
+static void    fch(int, long *);
+static void    fntchange(int);
 
 /*
  *     ******
@@ -20,17 +22,18 @@ static void ohear();
  *
  *     subroutine to process an altar object
  */
-oaltar()
+void
+oaltar(void)
        {
        unsigned long k;
 
        lprcat("\nDo you (p) pray  (d) desecrate"); iopts();
        while (1)
          {
-         while (1) switch(getchar())
+         while (1) switch(getchr())
                {
                case 'p':       lprcat(" pray\nDo you (m) give money or (j) just pray? ");
-                                       while (1) switch(getchar())
+                                       while (1) switch(getchr())
                                          {
                                          case 'j':     if (rnd(100)<75)
                                                                        lprcat("\nnothing happens");
@@ -52,13 +55,13 @@ oaltar()
                                                                cursor(1,23);  cltoeoln();
                                                                lprcat("how much do you donate? ");
                                                                k = readnum((long)c[GOLD]);
-                                                               if (c[GOLD]<k)
+                                                               if (c[GOLD]<(long)k)
                                                                        {
                                                                        lprcat("\nYou don't have that much!");
                                                                        return;
                                                                        }
                                                                c[GOLD] -= k;
-                                                               if (k < c[GOLD]/10 || k<rnd(50))
+                                                               if ((long)k < c[GOLD]/10 || (long)k<rnd(50))
                                                                        { createmonster(makemonst(level+1)); c[AGGRAVATE] += 200; }
                                                                else if (rnd(101) > 50) { ohear(); return; }
                                                                else if (rnd(43) == 5)
@@ -103,7 +106,7 @@ oaltar()
        function to cast a +3 protection on the player
  */
 static void
-ohear()
+ohear(void)
        {
        lprcat("\nYou have been heard!");
        if (c[ALTPRO]==0) c[MOREDEFENSES]+=3;
@@ -118,15 +121,15 @@ ohear()
 
        subroutine to process a throne object
  */
-othrone(arg)
-       int arg;
+void
+othrone(int arg)
        {
        int i,k;
 
        lprcat("\nDo you (p) pry off jewels, (s) sit down"); iopts();
        while (1)
          {
-         while (1) switch(getchar())
+         while (1) switch(getchr())
                {
                case 'p':       lprcat(" pry off");  k=rnd(101);
                                        if (k<25)
@@ -161,14 +164,15 @@ othrone(arg)
          }
        }
 
-odeadthrone()
+void
+odeadthrone(void)
        {
        int k;
 
        lprcat("\nDo you (s) sit down"); iopts();
        while (1)
          {
-         while (1) switch(getchar())
+         while (1) switch(getchr())
                {
                case 's':       lprcat(" sit down");  k=rnd(101);
                                        if (k<35) { lprcat("\nZaaaappp!  You've been teleported!\n"); beep(); oteleport(0); }
@@ -188,13 +192,14 @@ odeadthrone()
 
        subroutine to process a throne object
  */
-ochest()
+void
+ochest(void)
        {
        int i,k;
        lprcat("\nDo you (t) take it, (o) try to open it"); iopts();
        while (1)
          {
-         while (1) switch(getchar())
+         while (1) switch(getchr())
                {
                case 'o':       lprcat(" open it");  k=rnd(101);
                                        if (k<40)
@@ -243,13 +248,13 @@ ochest()
        OFOUNTAIN
        *********
  */
-
-ofountain()
+void
+ofountain(void)
        {
        int x;
        cursors();
        lprcat("\nDo you (d) drink, (w) wash yourself"); iopts();
-       while (1) switch(getchar())
+       while (1) switch(getchr())
                {
                case 'd':       lprcat("drink");
                                        if (rnd(1501)<2)
@@ -311,9 +316,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!");        --(*x); }
                else             { lprcat(" went up by one!");  (*x)++; }
@@ -324,8 +327,8 @@ fch(how,x)
        a subroutine to raise or lower character levels
        if x > 0 they are raised   if x < 0 they are lowered
  */
-fntchange(how)
-       int how;
+static void
+fntchange(int how)
        {
        long j;
        lprc('\n');
index 1f6767b..c4b1615 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *     movem.c (move monster)          Larn is copyrighted 1986 by Noah Morgan.
  * $FreeBSD: src/games/larn/movem.c,v 1.4 1999/11/16 02:57:23 billf Exp $
- * $DragonFly: src/games/larn/movem.c,v 1.2 2003/06/17 04:25:24 dillon Exp $
+ * $DragonFly: src/games/larn/movem.c,v 1.3 2006/08/26 17:05:05 pavalos Exp $
  *
  *     Here are the functions in this file:
  *
  */
 #include "header.h"
 
+static void    movemt(int, int);
+static void    mmove(int, int, int, int);
+static void    movsphere(void);
+
 /*
  *     movemonst()             Routine to move the monsters toward the player
  *
@@ -21,7 +25,9 @@
  */
 static short w1[9],w1x[9],w1y[9];
 static int tmp1,tmp2,tmp3,tmp4,distance;
-movemonst()
+
+void
+movemonst(void)
        {
        int i,j;
        if (c[TIMESTOP]) return;        /* no action if time is stopped */
@@ -93,8 +99,9 @@ movemonst()
  *     Returns no value.
  */
 static int tmpitem,xl,xh,yl,yh;
-movemt(i,j)
-       int i,j;
+
+static void
+movemt(int i, int j)
        {
        int k,m,z,tmp,xtmp,ytmp,monst;
        switch(monst=mitem[i][j])  /* for half speed monsters */
@@ -190,11 +197,11 @@ out:  if (tmp<distance) /* did find connectivity */
  *     Enter with the from coordinates in (x,y) and the destination coordinates
  *     in (xd,yd).
  */
-mmove(aa,bb,cc,dd)
-       int aa,bb,cc,dd;
+static void
+mmove(int aa, int bb, int cc, int dd)
        {
        int tmp,i,flag;
-       char *who,*p;
+       const char *who = NULL, *p;
        flag=0; /* set to 1 if monster hit by arrow trap */
        if ((cc==playerx) && (dd==playery))
                {
@@ -259,7 +266,6 @@ mmove(aa,bb,cc,dd)
                  };
                if (p) { lprintf(p,who,monster[tmp].name); beep(); }
                }
-/*     if (yrepcount>1) { know[aa][bb] &= 2;  know[cc][dd] &= 2; return; } */
        if (know[aa][bb] & 1)   show1cell(aa,bb);
        if (know[cc][dd] & 1)   show1cell(cc,dd);
        }
@@ -275,7 +281,8 @@ mmove(aa,bb,cc,dd)
  *     No value is returned.
  */
 #define SPHMAX 20      /* maximum number of spheres movsphere can handle */
-movsphere()
+static void
+movsphere(void)
        {
        int x,y,dir,len;
        struct sphere *sp,*sp2;
index 58e351b..c86b6f3 100644 (file)
 /* nap.c                Larn is copyrighted 1986 by Noah Morgan. */
 /* $FreeBSD: src/games/larn/nap.c,v 1.4 1999/11/16 02:57:23 billf Exp $ */
-/* $DragonFly: src/games/larn/nap.c,v 1.3 2006/01/22 03:43:37 swildner Exp $ */
-#include <signal.h>
-#include <sys/types.h>
-#ifdef SYSV
-#include <sys/times.h>
-#else
-#ifdef BSD
-#include <sys/timeb.h>
-#endif /* BSD */
-#endif /* SYSV */
-
+/* $DragonFly: src/games/larn/nap.c,v 1.4 2006/08/26 17:05:05 pavalos Exp $ */
+#include "header.h"
 /*
  *     routine to take a nap for n milliseconds
  */
-nap(x)
-       int x;
+void
+nap(int x)
        {
        if (x<=0) return; /* eliminate chance for infinite loop */
        lflush();
-#if 0
-       if (x > 999) sleep(x/1000); else napms(x);
-#else
        usleep(x*1000);
-#endif
        }
-
-#ifdef NONAP
-napms(x)       /* do nothing */
-       int x;
-       {
-       }
-#else /* NONAP */
-#ifdef SYSV
-/*     napms - sleep for time milliseconds - uses times() */
-/* this assumes that times returns a relative time in 60ths of a second */
-/* this will do horrible things if your times() returns seconds! */
-napms(time)
-       int time;
-       {
-       long matchclock, times();
-       struct tms stats;
-
-       if (time<=0) time=1; /* eliminate chance for infinite loop */
-       if ((matchclock = times(&stats)) == -1 || matchclock == 0)
-               return; /* error, or BSD style times() */
-       matchclock += (time / 17);              /*17 ms/tic is 1000 ms/sec / 60 tics/sec */
-
-       while(matchclock < times(&stats))
-               ;
-       }
-
-#else /* not SYSV */
-#ifdef BSD
-#ifdef SIGVTALRM
-/* This must be BSD 4.2!  */
-#include <sys/time.h>
-#define bit(_a) (1<<((_a)-1))
-
-static  nullf()
-    {
-    }
-
-/*     napms - sleep for time milliseconds - uses setitimer() */
-napms(time)
-       int time;
-    {
-    struct itimerval    timeout;
-    int     (*oldhandler) ();
-    int     oldsig;
-
-       if (time <= 0) return;
-
-    timerclear(&timeout.it_interval);
-    timeout.it_value.tv_sec = time / 1000;
-    timeout.it_value.tv_usec = (time % 1000) * 1000;
-
-    oldsig = sigblock(bit(SIGALRM));
-    setitimer(ITIMER_REAL, &timeout, (struct itimerval *)0);
-    oldhandler = signal(SIGALRM, nullf);
-    sigpause(oldsig);
-    signal(SIGALRM, oldhandler);
-    sigsetmask(oldsig);
-    }
-
-#else
-/*     napms - sleep for time milliseconds - uses ftime() */
-
-static napms(time)
-       int time;
-       {
-       /* assumed to be BSD UNIX */
-       struct timeb _gtime;
-       time_t matchtime;
-       unsigned short matchmilli;
-       struct timeb *tp = & _gtime;
-
-       if (time <= 0) return;
-       ftime(tp);
-       matchmilli = tp->millitm + time;
-       matchtime  = tp->time;
-       while (matchmilli >= 1000)
-               {
-               ++matchtime;
-               matchmilli -= 1000;
-               }
-
-       while(1)
-               {
-               ftime(tp);
-               if ((tp->time > matchtime) ||
-                       ((tp->time == matchtime) && (tp->millitm >= matchmilli)))
-                       break;
-               }
-       }
-#endif
-#else /* not BSD */
-static napms(time) int time; {}        /* do nothing, forget it */
-#endif /* BSD */
-#endif /* SYSV */
-#endif /* NONAP */
index fd4871d..bfd294e 100644 (file)
@@ -1,8 +1,23 @@
 /*     object.c                Larn is copyrighted 1986 by Noah Morgan. */
 /* $FreeBSD: src/games/larn/object.c,v 1.4 1999/11/16 02:57:23 billf Exp $ */
-/* $DragonFly: src/games/larn/object.c,v 1.4 2006/06/10 17:37:08 dillon Exp $ */
+/* $DragonFly: src/games/larn/object.c,v 1.5 2006/08/26 17:05:05 pavalos Exp $ */
 #include "header.h"
 
+static void    finditem(int);
+static void    ostairs(int);
+static void    opotion(int);
+static void    oscroll(int);
+static void    oorb(void);
+static void    opit(void);
+static void    obottomless(void);
+static void    oelevator(int);
+static void    ostatue(void);
+static void    omirror(void);
+static void    obook(void);
+static void    ocookie(void);
+static void    ogold(int);
+static void    ohome(void);
+
 /*
        ***************
        LOOK_FOR_OBJECT
@@ -11,7 +26,8 @@
        subroutine to look for an object and give the player his options
        if an object was found.
  */
-lookforobject()
+void
+lookforobject(void)
 {
 int i,j;
 if (c[TIMESTOP])  return;      /* can't find objects is time is stopped        */
@@ -24,11 +40,11 @@ switch(i)
 
        case OPOTION:   lprcat("\n\nYou have found a magic potion");
                                i = iarg[playerx][playery];
-                               if (potionname[i][0]) lprintf(" of %s",&potionname[i][1]);  opotion(i);  break;
+                               if (potionname[i][0]) lprintf(" of %s",potionname[i]);  opotion(i);  break;
 
        case OSCROLL:   lprcat("\n\nYou have found a magic scroll");
                                i = iarg[playerx][playery];
-                               if (scrollname[i][0])   lprintf(" of %s",&scrollname[i][1]);
+                               if (scrollname[i][0])   lprintf(" of %s",scrollname[i]);
                                oscroll(i);  break;
 
        case OALTAR:    if (nearbymonst()) return;
@@ -74,7 +90,7 @@ switch(i)
        case OSCHOOL:   if (nearbymonst()) return;
                                lprcat("\n\nYou have found the College of Larn.");
                                lprcat("\nDo you (g) go inside, or (i) stay here? ");
-                               i=0; while ((i!='g') && (i!='i') && (i!='\33')) i=getchar();
+                               i=0; while ((i!='g') && (i!='i') && (i!='\33')) i=getchr();
                                if (i == 'g') { oschool();  /*  the college of larn     */ }
                                else    lprcat(" stay here");
                                break;
@@ -87,7 +103,7 @@ switch(i)
                                if (i==OBANK) lprcat("\n\nYou have found the bank of Larn.");
                                else lprcat("\n\nYou have found a branch office of the bank of Larn.");
                                lprcat("\nDo you (g) go inside, or (i) stay here? ");
-                               j=0; while ((j!='g') && (j!='i') && (j!='\33')) j=getchar();
+                               j=0; while ((j!='g') && (j!='i') && (j!='\33')) j=getchr();
                                if (j == 'g') {  if (i==OBANK) obank(); else obank2(); /*  the bank of larn  */  }
                                else   lprcat(" stay here");
                                break;
@@ -98,7 +114,7 @@ switch(i)
        case ODNDSTORE: if (nearbymonst()) return;
                                        lprcat("\n\nThere is a DND store here.");
                                        lprcat("\nDo you (g) go inside, or (i) stay here? ");
-                                       i=0; while ((i!='g') && (i!='i') && (i!='\33')) i=getchar();
+                                       i=0; while ((i!='g') && (i!='i') && (i!='\33')) i=getchr();
                                        if (i == 'g')
                                                dndstore();  /*  the dnd adventurers store  */
                                        else  lprcat(" stay here");
@@ -112,7 +128,7 @@ switch(i)
 
        case OOPENDOOR:         lprintf("\n\nYou have found %s",objectname[i]);
                                                lprcat("\nDo you (c) close it"); iopts();
-                                               i=0; while ((i!='c') && (i!='i') && (i!='\33')) i=getchar();
+                                               i=0; while ((i!='c') && (i!='i') && (i!='\33')) i=getchr();
                                                if ((i=='\33') || (i=='i')) { ignore();  break; }
                                                lprcat("close");  forget();
                                                item[playerx][playery]=OCLOSEDDOOR;
@@ -122,7 +138,7 @@ switch(i)
 
        case OCLOSEDDOOR:       lprintf("\n\nYou have found %s",objectname[i]);
                                                lprcat("\nDo you (o) try to open it"); iopts();
-                                               i=0; while ((i!='o') && (i!='i') && (i!='\33')) i=getchar();
+                                               i=0; while ((i!='o') && (i!='i') && (i!='\33')) i=getchr();
                                                if ((i=='\33') || (i=='i'))
                                                        { ignore();  playerx = lastpx;
                                                        playery = lastpy; break; }
@@ -157,7 +173,7 @@ switch(i)
 
        case OENTRANCE: lprcat("\nYou have found "); lprcat(objectname[OENTRANCE]);
                                        lprcat("\nDo you (g) go inside"); iopts();
-                                       i=0; while ((i!='g') && (i!='i') && (i!='\33')) i=getchar();
+                                       i=0; while ((i!='g') && (i!='i') && (i!='\33')) i=getchr();
                                        if (i == 'g')
                                                {
                                                newcavelevel(1); playerx=33; playery=MAXY-2;
@@ -169,7 +185,7 @@ switch(i)
 
        case OVOLDOWN:  lprcat("\nYou have found "); lprcat(objectname[OVOLDOWN]);
                                                lprcat("\nDo you (c) climb down"); iopts();
-                                               i=0; while ((i!='c') && (i!='i') && (i!='\33')) i=getchar();
+                                               i=0; while ((i!='c') && (i!='i') && (i!='\33')) i=getchr();
                                                if ((i=='\33') || (i=='i')) { ignore();  break; }
                                        if (level!=0) { lprcat("\nThe shaft only extends 5 feet downward!"); return; }
                                        if (packweight() > 45+3*(c[STRENGTH]+c[STREXTRA])) { lprcat("\nYou slip and fall down the shaft"); beep();
@@ -182,7 +198,7 @@ switch(i)
 
        case OVOLUP:    lprcat("\nYou have found "); lprcat(objectname[OVOLUP]);
                                                lprcat("\nDo you (c) climb up"); iopts();
-                                               i=0; while ((i!='c') && (i!='i') && (i!='\33')) i=getchar();
+                                               i=0; while ((i!='c') && (i!='i') && (i!='\33')) i=getchr();
                                                if ((i=='\33') || (i=='i')) { ignore();  break; }
                                        if (level!=11) { lprcat("\nThe shaft only extends 8 feet upwards before you find a blockage!"); return; }
                                        if (packweight() > 45+5*(c[STRENGTH]+c[STREXTRA])) { lprcat("\nYou slip and fall down the shaft"); beep();
@@ -225,14 +241,14 @@ switch(i)
        case OTRADEPOST:        if (nearbymonst()) return;
                                lprcat("\nYou have found the Larn trading Post.");
                                lprcat("\nDo you (g) go inside, or (i) stay here? ");
-                               i=0; while ((i!='g') && (i!='i') && (i!='\33')) i=getchar();
+                               i=0; while ((i!='g') && (i!='i') && (i!='\33')) i=getchr();
                                if (i == 'g')  otradepost();  else  lprcat("stay here");
                                return;
 
        case OHOME:     if (nearbymonst()) return;
                                lprcat("\nYou have found your way home.");
                                lprcat("\nDo you (g) go inside, or (i) stay here? ");
-                               i=0; while ((i!='g') && (i!='i') && (i!='\33')) i=getchar();
+                               i=0; while ((i!='g') && (i!='i') && (i!='\33')) i=getchr();
                                if (i == 'g')  ohome();  else  lprcat("stay here");
                                return;
 
@@ -243,7 +259,7 @@ switch(i)
        case OLRS:      if (nearbymonst()) return;
                                lprcat("\n\nThere is an LRS office here.");
                                lprcat("\nDo you (g) go inside, or (i) stay here? ");
-                               i=0; while ((i!='g') && (i!='i') && (i!='\33')) i=getchar();
+                               i=0; while ((i!='g') && (i!='i') && (i!='\33')) i=getchr();
                                if (i == 'g')
                                        olrs();  /*  the larn revenue service */
                                else  lprcat(" stay here");
@@ -256,13 +272,13 @@ switch(i)
 /*
        function to say what object we found and ask if player wants to take it
  */
-finditem(itm)
-       int itm;
+static void
+finditem(int obj)
        {
        int tmp,i;
-       lprintf("\n\nYou have found %s ",objectname[itm]);
+       lprintf("\n\nYou have found %s ",objectname[obj]);
        tmp=iarg[playerx][playery];
-       switch(itm)
+       switch(obj)
                {
                case ODIAMOND:          case ORUBY:                     case OEMERALD:
                case OSAPPHIRE:         case OSPIRITSCARAB:     case OORBOFDRAGON:
@@ -272,9 +288,9 @@ finditem(itm)
                if (tmp>0) lprintf("+ %d",(long)tmp); else if (tmp<0) lprintf(" %d",(long)tmp);
                }
        lprcat("\nDo you want to (t) take it"); iopts();
-       i=0; while (i!='t' && i!='i' && i!='\33') i=getchar();
+       i=0; while (i!='t' && i!='i' && i!='\33') i=getchr();
        if (i == 't')
-               {       lprcat("take");  if (take(itm,tmp)==0)  forget();       return; }
+               {       lprcat("take");  if (take(obj,tmp)==0)  forget();       return; }
        ignore();
        }
 
@@ -287,15 +303,15 @@ finditem(itm)
        subroutine to process the stair cases
        if dir > 0 the up else down
  */
-ostairs(dir)
-       int dir;
+static void
+ostairs(int dir)
        {
        int k;
        lprcat("\nDo you (s) stay here  ");
        if (dir > 0)    lprcat("(u) go up  ");  else    lprcat("(d) go down  ");
        lprcat("or (f) kick stairs? ");
 
-       while (1) switch(getchar())
+       while (1) switch(getchr())
                {
                case '\33':
                case 's':       case 'i':       lprcat("stay here");    return;
@@ -343,8 +359,8 @@ ostairs(dir)
 
        subroutine to handle a teleport trap +/- 1 level maximum
  */
-oteleport(err)
-       int err;
+void
+oteleport(int err)
        {
        int tmp;
        if (err) if (rnd(151)<3)  died(264);  /*        stuck in a rock */
@@ -368,11 +384,11 @@ oteleport(err)
 
        function to process a potion
  */
-opotion(pot)
-       int pot;
+static void
+opotion(int pot)
        {
        lprcat("\nDo you (d) drink it, (t) take it"); iopts();
-       while (1) switch(getchar())
+       while (1) switch(getchr())
                {
                case '\33':
                case 'i':       ignore();  return;
@@ -388,12 +404,12 @@ opotion(pot)
 /*
        function to drink a potion
  */
-quaffpotion(pot)
-       int pot;
+void
+quaffpotion(int pot)
        {
        int i,j,k;
        if (pot<0 || pot>=MAXPOTION) return; /* check for within bounds */
-       potionname[pot][0] = ' ';
+       potionname[pot] = potionhide[pot];
        switch(pot)
                {
                case 9: lprcat("\nYou feel greedy . . .");   nap(2000);
@@ -498,12 +514,12 @@ quaffpotion(pot)
 
        function to process a magic scroll
  */
-oscroll(typ)
-       int typ;
+static void
+oscroll(int typ)
        {
        lprcat("\nDo you ");
        if (c[BLINDCOUNT]==0) lprcat("(r) read it, "); lprcat("(t) take it"); iopts();
-       while (1) switch(getchar())
+       while (1) switch(getchr())
                {
                case '\33':
                case 'i':       ignore();  return;
@@ -534,25 +550,25 @@ char time_change[] = { HASTESELF,HERO,ALTPRO,PROTECTIONTIME,DEXCOUNT,
 /*
  *     function to adjust time when time warping and taking courses in school
  */
-larn_adjtime(tim)
-       long tim;
+void
+larn_adjtime(long tim)
        {
        int j;
        for (j=0; j<26; j++)    /* adjust time related parameters */
-               if (c[time_change[j]])
-                       if ((c[time_change[j]] -= tim) < 1) c[time_change[j]]=1;
+               if (c[(int)time_change[j]])
+                       if ((c[(int)time_change[j]] -= tim) < 1) c[(int)time_change[j]]=1;
        regen();
        }
 
 /*
        function to read a scroll
  */
-read_scroll(typ)
-       int typ;
+void
+read_scroll(int typ)
        {
        int i,j;
        if (typ<0 || typ>=MAXSCROLL) return;  /* be sure we are within bounds */
-       scrollname[typ][0] = ' ';
+       scrollname[typ] = scrollhide[typ];
        switch(typ)
          {
          case 0:       lprcat("\nYour armor glows for a moment");  enchantarmor(); return;
@@ -587,7 +603,7 @@ read_scroll(typ)
 
          case 11:      for (i=0; i<MAXY; i++)  for (j=0; j<MAXX; j++)
                                        if (mitem[j][i])
-                                               hitp[j][i] = monster[mitem[j][i]].hitpoints;
+                                               hitp[j][i] = monster[(int)mitem[j][i]].hitpoints;
                                return; /* monster healing */
          case 12:      c[SPIRITPRO] += 300 + rnd(200); bottomline(); return; /* spirit protection */
 
@@ -612,18 +628,18 @@ read_scroll(typ)
                                                }
                                break;
 
-         case 18:      for (i=0; i<11; i++)    c[exten[i]] <<= 1; /* spell extension */
+         case 18:      for (i=0; i<11; i++)    c[(int)exten[i]] <<= 1; /* spell extension */
                                break;
 
          case 19:      for (i=0; i<26; i++)    /* identify */
                                        {
-                                       if (iven[i]==OPOTION)  potionname[ivenarg[i]][0] = ' ';
-                                       if (iven[i]==OSCROLL)  scrollname[ivenarg[i]][0] = ' ';
+                                       if (iven[i]==OPOTION)  potionname[ivenarg[i]] = potionhide[ivenarg[i]];
+                                       if (iven[i]==OSCROLL)  scrollname[ivenarg[i]] = scrollhide[ivenarg[i]];
                                        }
                                break;
 
          case 20:      for (i=0; i<10; i++)    /* remove curse */
-                                       if (c[curse[i]]) c[curse[i]] = 1;
+                                       if (c[(int)curse[i]]) c[(int)curse[i]] = 1;
                                break;
 
          case 21:      annihilate();   break;  /* scroll of annihilation */
@@ -635,15 +651,18 @@ read_scroll(typ)
        }
 
 \f
-oorb()
+static void
+oorb(void)
        {
        }
 
-opit()
+static void
+opit(void)
        {
        int i;
        if (rnd(101)<81)
          if (rnd(70) > 9*c[DEXTERITY]-packweight() || rnd(101)<5)
+         {
                if (level==MAXLEVEL-1) obottomless(); else
                if (level==MAXLEVEL+MAXVLEVEL-1) obottomless(); else
                        {
@@ -658,15 +677,18 @@ opit()
                                lastnum=261;    /*      if he dies scoreboard will say so */
                                }
                        losehp(i); nap(2000);  newcavelevel(level+1);  draws(0,MAXX,0,MAXY);
+         }
                        }
        }
 
-obottomless()
+static void
+obottomless(void)
        {
        lprcat("\nYou fell into a bottomless pit!");  beep(); nap(3000);  died(262);
        }
-oelevator(dir)
-       int dir;
+
+static void
+oelevator(__unused int dir)
        {
 #ifdef lint
        int x;
@@ -675,19 +697,22 @@ oelevator(dir)
 #endif /* lint */
        }
 
-ostatue()
+static void
+ostatue(void)
        {
        }
 
-omirror()
+static void
+omirror(void)
        {
        }
 
-obook()
+static void
+obook(void)
        {
        lprcat("\nDo you ");
        if (c[BLINDCOUNT]==0) lprcat("(r) read it, "); lprcat("(t) take it"); iopts();
-       while (1) switch(getchar())
+       while (1) switch(getchr())
                {
                case '\33':
                case 'i':       ignore();       return;
@@ -704,8 +729,8 @@ obook()
 /*
        function to read a book
  */
-readbook(lev)
-       int lev;
+void
+readbook(int lev)
        {
        int i,tmp;
        if (lev<=3) i = rund((tmp=splev[lev])?tmp:1); else
@@ -716,11 +741,12 @@ readbook(lev)
         { lprcat("\nYour int went up by one!"); c[INTELLIGENCE]++; bottomline(); }
        }
 
-ocookie()
+static void
+ocookie(void)
        {
-       char *p;
+       const char *p;
        lprcat("\nDo you (e) eat it, (t) take it"); iopts();
-       while (1) switch(getchar())
+       while (1) switch(getchr())
                {
                case '\33':
                case 'i':       ignore();       return;
@@ -728,7 +754,7 @@ ocookie()
                case 'e':       lprcat("eat\nThe cookie tasted good.");
                                        forget(); /* no more cookie     */
                                        if (c[BLINDCOUNT]) return;
-                                       if (!(p=fortune(fortfile))) return;
+                                       if (!(p=fortune())) return;
                                        lprcat("  A message inside the cookie reads:\n"); lprcat(p);
                                        return;
 
@@ -739,8 +765,8 @@ ocookie()
 
 
 /* routine to pick up some gold -- if arg==OMAXGOLD then the pile is worth 100* the argument */
-ogold(arg)
-       int arg;
+static void
+ogold(int arg)
        {
        long i;
        i = iarg[playerx][playery];
@@ -751,7 +777,8 @@ ogold(arg)
        item[playerx][playery] = know[playerx][playery] = 0; /* destroy gold    */
        }
 
-ohome()
+static void
+ohome(void)
        {
        int i;
        nosignal = 1;   /* disable signals */
@@ -796,14 +823,17 @@ ohome()
                lprcat("\n     ----- press "); standout("return");
                lprcat(" to continue, "); standout("escape");
                lprcat(" to leave ----- ");
-               i=getchar();  while (i!='\33' && i!='\n') i=getchar();
+               i=getchr();  while (i!='\33' && i!='\n') i=getchr();
                if (i=='\33') { drawscreen(); nosignal = 0; /* enable signals */ return; }
                }
        }
 
 /*     routine to save program space   */
-iopts()
+void
+iopts(void)
        {       lprcat(", or (i) ignore it? "); }
-ignore()
+
+void
+ignore(void)
        {       lprcat("ignore\n");     }
 
index 1871fd7..863d7c5 100644 (file)
  * SUCH DAMAGE.
  *
  *     @(#)pathnames.h 5.2 (Berkeley) 5/27/95
+ * $DragonFly: src/games/larn/pathnames.h,v 1.2 2006/08/26 17:05:05 pavalos Exp $
  */
 
 #define        _PATH_LOG               "/var/games/larn/llog12.0"
 #define        _PATH_SCORE             "/var/games/larn/lscore12.0"
 #define        _PATH_HELP              "/usr/share/games/larn/larn.help"
 #define        _PATH_LEVELS            "/usr/share/games/larn/larnmaze"
-#define        _PATH_FORTS             "/usr/share/games/larn/lfortune"
 #define        _PATH_PLAYERIDS         "/var/games/larn/playerids"
index 24595c2..fb2d260 100644 (file)
@@ -1,6 +1,6 @@
 /* regen.c                     Larn is copyrighted 1986 by Noah Morgan. */
 /* $FreeBSD: src/games/larn/regen.c,v 1.4 1999/11/16 02:57:24 billf Exp $ */
-/* $DragonFly: src/games/larn/regen.c,v 1.2 2003/06/17 04:25:24 dillon Exp $ */
+/* $DragonFly: src/games/larn/regen.c,v 1.3 2006/08/26 17:05:05 pavalos Exp $ */
 #include "header.h"
 /*
        *******
@@ -10,7 +10,8 @@
 
        subroutine to regenerate player hp and spells
  */
-regen()
+void
+regen(void)
        {
        int i,flag;
        long *d;
index 43fd72b..b7809fb 100644 (file)
@@ -1,13 +1,13 @@
 /* savelev.c            Larn is copyrighted 1986 by Noah Morgan. */
 /* $FreeBSD: src/games/larn/savelev.c,v 1.3 1999/11/16 02:57:24 billf Exp $ */
-/* $DragonFly: src/games/larn/savelev.c,v 1.2 2003/06/17 04:25:24 dillon Exp $ */
+/* $DragonFly: src/games/larn/savelev.c,v 1.3 2006/08/26 17:05:05 pavalos Exp $ */
 #include "header.h"
-extern struct cel *cell;
 
 /*
  *     routine to save the present level into storage
  */
-savelevel()
+void
+savelevel(void)
        {
        struct cel *pcel;
        char *pitem,*pknow,*pmitem;
@@ -29,7 +29,8 @@ savelevel()
 /*
  *     routine to restore a level from storage
  */
-getlevel()
+void
+getlevel(void)
        {
        struct cel *pcel;
        char *pitem,*pknow,*pmitem;
index 6ac9ec1..807d52a 100644 (file)
@@ -1,6 +1,6 @@
 /* scores.c                     Larn is copyrighted 1986 by Noah Morgan.
  * $FreeBSD: src/games/larn/scores.c,v 1.6 1999/11/16 02:57:24 billf Exp $
- * $DragonFly: src/games/larn/scores.c,v 1.3 2006/01/22 03:43:37 swildner Exp $
+ * $DragonFly: src/games/larn/scores.c,v 1.4 2006/08/26 17:05:05 pavalos Exp $
  *
  *     Functions in this file are:
  *
 #include <sys/stat.h>
 #include "header.h"
 
+static int     readboard(void);
+static int     writeboard(void);
+static int     winshou(void);
+static int     shou(int);
+static int     sortboard(void);
+static void    newscore(long, char *, int, int);
+static void    new1sub(long, int, char *, long);
+static void    new2sub(long, int, char *, int);
+static void    diedsub(int);
+
 struct scofmt                  /*      This is the structure for the scoreboard                */
        {
        long score;                     /* the score of the player                                                      */
@@ -75,7 +85,7 @@ struct log_fmt                        /* 102 bytes struct for the log file                            */
 static struct scofmt sco[SCORESIZE];   /* the structure for the scoreboard  */
 static struct wscofmt winr[SCORESIZE]; /* struct for the winning scoreboard */
 static struct log_fmt logg;                            /* structure for the log file            */
-static char *whydead[] = {
+static const char *whydead[] = {
        "quit", "suspended", "self - annihilated", "shot by an arrow",
        "hit by a dart", "fell into a pit", "fell into a bottomless pit",
        "a winner", "trapped in solid rock", "killed by a missing save file",
@@ -96,7 +106,8 @@ static char *whydead[] = {
  *
  *     returns -1 if unable to read in the scoreboard, returns 0 if all is OK
  */
-readboard()
+static int
+readboard(void)
        {
        if (lopen(scorefile)<0)
          { lprcat("Can't read scoreboard\n"); lflush(); return(-1); }
@@ -109,7 +120,8 @@ readboard()
  *
  *     returns -1 if unable to write the scoreboard, returns 0 if all is OK
  */
-writeboard()
+static int
+writeboard(void)
        {
        set_score_output();
        if (lcreat(scorefile)<0)
@@ -123,7 +135,8 @@ writeboard()
  *
  *     returns -1 if unable to write the scoreboard, returns 0 if all is OK
  */
-makeboard()
+int
+makeboard(void)
        {
        int i;
        for (i=0; i<SCORESIZE; i++)
@@ -144,7 +157,8 @@ makeboard()
  *     scoreboard.  This function also sets outstanding_taxes to the value in
  *     the winners scoreboard.
  */
-hashewon()
+int
+hashewon(void)
        {
        int i;
        c[HARDGAME] = 0;
@@ -165,8 +179,8 @@ hashewon()
  *     Enter with the amount (in gp) to pay on the taxes.
  *     Returns amount actually paid.
  */
-long paytaxes(x)
-       long x;
+long
+paytaxes(long x)
        {
        int i;
        long amt;
@@ -191,7 +205,8 @@ long paytaxes(x)
  *
  *     Returns the number of players on scoreboard that were shown
  */
-winshou()
+static int
+winshou(void)
        {
        struct wscofmt *p;
        int i,j,count;
@@ -228,8 +243,8 @@ winshou()
  *     Enter with 0 to list the scores, enter with 1 to list inventories too
  *     Returns the number of players on scoreboard that were shown
  */
-shou(x)
-       int x;
+static int
+shou(int x)
        {
        int i,j,n,k;
        int count;
@@ -273,7 +288,9 @@ shou(x)
  *     Returns nothing of value
  */
 static char esb[] = "The scoreboard is empty.\n";
-showscores()
+
+void
+showscores(void)
        {
        int i,j;
        lflush();  lcreat((char*)0);  if (readboard()<0) return;
@@ -287,13 +304,14 @@ showscores()
  *
  *     Returns nothing of value
  */
-showallscores()
+void
+showallscores(void)
        {
        int i,j;
        lflush();  lcreat((char*)0);  if (readboard()<0) return;
        c[WEAR] = c[WIELD] = c[SHIELD] = -1;  /* not wielding or wearing anything */
-       for (i=0; i<MAXPOTION; i++) potionname[i][0]=' ';
-       for (i=0; i<MAXSCROLL; i++) scrollname[i][0]=' ';
+       for (i=0; i<MAXPOTION; i++) potionname[i] = potionhide[i];
+       for (i=0; i<MAXSCROLL; i++) scrollname[i] = scrollhide[i];
        i=winshou();  j=shou(1);
        if (i+j==0) lprcat(esb); else lprc('\n');
        lflush();
@@ -304,9 +322,10 @@ showallscores()
  *
  *     Returns 0 if no sorting done, else returns 1
  */
-sortboard()
+static int
+sortboard(void)
        {
-       int i,j,pos;
+       int i,j = 0,pos;
        long jdat;
        for (i=0; i<SCORESIZE; i++) sco[i].order = winr[i].order = -1;
        pos=0;  while (pos < SCORESIZE)
@@ -337,10 +356,8 @@ sortboard()
  *             died() reason # in whyded, and TRUE/FALSE in winner if a winner
  *     ex.             newscore(1000, "player 1", 32, 0);
  */
-newscore(score, whoo, whyded, winner)
-       long score;
-       int winner, whyded;
-       char *whoo;
+static void
+newscore(long score, char *whoo, int whyded, int winner)
        {
        int i;
        long taxes;
@@ -380,10 +397,8 @@ newscore(score, whoo, whyded, winner)
  *             slot in scoreboard in i, and the tax bill in taxes.
  *     Returns nothing of value
  */
-new1sub(score,i,whoo,taxes)
-       long score,taxes;
-       int i;
-       char *whoo;
+static void
+new1sub(long score, int i, char *whoo, long taxes)
        {
        struct wscofmt *p;
        p = &winr[i];
@@ -405,10 +420,8 @@ new1sub(score,i,whoo,taxes)
  *             died() reason # in whyded, and slot in scoreboard in i.
  *     Returns nothing of value
  */
-new2sub(score,i,whoo,whyded)
-       long score;
-       int i,whyded;
-       char *whoo;
+static void
+new2sub(long score, int i, char *whoo, int whyded)
        {
        int j;
        struct scofmt *p;
@@ -465,14 +478,18 @@ new2sub(score,i,whoo,whyded)
  */
 
 static int scorerror;
-died(x)
-       int x;
+
+void
+died(int x)
        {
        int f,win;
-       char ch,*mod;
+       char ch;
+       const char *mod;
        time_t zzz;
+#ifdef EXTRA
        long i;
        struct tms cputime;
+#endif
        if (c[LIFEPROT]>0) /* if life protection */
                {
                switch((x>0) ? x : -x)
@@ -553,10 +570,11 @@ invalid:
  *     diedsub(x) Subroutine to print out the line showing the player when he is killed
  *             int x;
  */
-diedsub(x)
-int x;
+static void
+diedsub(int x)
        {
-       char ch,*mod;
+       char ch;
+       const char *mod;
        lprintf("Score: %d, Diff: %d,  %s ",(long)c[GOLD],(long)c[HARDGAME],logname);
        if (x < 256)
                {
@@ -566,13 +584,14 @@ int x;
                lprintf("killed by %s %s",mod,monster[x].name);
                }
        else lprintf("%s",whydead[x - 256]);
-       if (x != 263) lprintf(" on %s\n",levelname[level]);  else lprc('\n');
+       if (x != 263) lprintf(" on %s\n",levelname[(int)level]);  else lprc('\n');
        }
 
 /*
  *     diedlog()       Subroutine to read a log file and print it out in ascii format
  */
-diedlog()
+void
+diedlog(void)
        {
        int n;
        char *p;
@@ -617,8 +636,9 @@ diedlog()
  *                     Id # in ascii     \n     character name     \n
  */
 static int havepid= -1;        /* playerid # if previously done */
-getplid(nam)
-       char *nam;
+
+int
+getplid(char *nam)
        {
        int fd7,high=999,no;
        char *p,*p2;
index 3321978..6b72fd1 100644 (file)
@@ -1,39 +1,58 @@
 /*
- * $DragonFly: src/games/larn/signal.c,v 1.3 2006/03/12 12:20:31 swildner Exp $
+ * $DragonFly: src/games/larn/signal.c,v 1.4 2006/08/26 17:05:05 pavalos Exp $
  */
 
 #include <signal.h>
 #include "header.h"                    /* "Larn is copyrighted 1986 by Noah Morgan.\n" */
 #define BIT(a) (1<<((a)-1))
-extern char savefilename[],wizard,predostuff,nosignal;
-static s2choose()      /* text to be displayed if ^C during intro screen */
+
+static void    s2choose(void);
+static void    cntlc(void);
+static void    sgam(void);
+#ifdef SIGTSTP
+static void    tstop(void);
+#endif
+static void    sigill(void);
+static void    sigtrap(void);
+static void    sigiot(void);
+static void    sigemt(void);
+static void    sigfpe(void);
+static void    sigbus(void);
+static void    sigsegv(void);
+static void    sigsys(void);
+static void    sigpipe(void);
+static void    sigterm(void);
+static void    sigpanic(int);
+
+static void
+s2choose(void) /* text to be displayed if ^C during intro screen */
        {
        cursor(1,24); lprcat("Press "); setbold(); lprcat("return"); resetbold();
        lprcat(" to continue: ");   lflush();
        }
 
 static void
-cntlc()        /* what to do for a ^C */
+cntlc(void)    /* what to do for a ^C */
        {
        if (nosignal) return;   /* don't do anything if inhibited */
        signal(SIGQUIT,SIG_IGN);        signal(SIGINT,SIG_IGN);
        quit(); if (predostuff==1) s2choose(); else showplayer();
        lflush();
-       signal(SIGQUIT,cntlc);  signal(SIGINT,cntlc);
+       signal(SIGQUIT,(sig_t)cntlc);   signal(SIGINT,(sig_t)cntlc);
        }
 
 /*
  *     subroutine to save the game if a hangup signal
  */
 static void
-sgam()
+sgam(void)
        {
        savegame(savefilename);  wizard=1;  died(-257); /* hangup signal */
        }
 
 #ifdef SIGTSTP
 static void
-tstop() /* control Y   */
+tstop(void) /* control Y       */
        {
        if (nosignal)   return;  /* nothing if inhibited */
        lcreat((char*)0);  clearvt100();        lflush();         signal(SIGTSTP,SIG_DFL);
@@ -43,7 +62,7 @@ tstop() /* control Y  */
 #endif
        kill(getpid(),SIGTSTP);
 
-       setupvt100();  signal(SIGTSTP,tstop);
+       setupvt100();  signal(SIGTSTP,(sig_t)tstop);
        if (predostuff==1) s2choose(); else drawscreen();
        showplayer();   lflush();
        }
@@ -52,34 +71,64 @@ tstop() /* control Y        */
 /*
  *     subroutine to issue the needed signal traps  called from main()
  */
-static void sigpanic();
-static void sigill()   { sigpanic(SIGILL); }
-static void sigtrap()  { sigpanic(SIGTRAP); }
-static void sigiot()   { sigpanic(SIGIOT); }
-static void sigemt()   { sigpanic(SIGEMT); }
-static void sigfpe()   { sigpanic(SIGFPE); }
-static void sigbus()   { sigpanic(SIGBUS); }
-static void sigsegv()  { sigpanic(SIGSEGV); }
-static void sigsys()   { sigpanic(SIGSYS); }
-static void sigpipe()  { sigpanic(SIGPIPE); }
-static void sigterm()  { sigpanic(SIGTERM); }
-sigsetup()
+static void
+sigill(void)
+       { sigpanic(SIGILL); }
+
+static void
+sigtrap(void)
+       { sigpanic(SIGTRAP); }
+
+static void
+sigiot(void)
+       { sigpanic(SIGIOT); }
+
+static void
+sigemt(void)
+       { sigpanic(SIGEMT); }
+
+static void
+sigfpe(void)
+       { sigpanic(SIGFPE); }
+
+static void
+sigbus(void)
+       { sigpanic(SIGBUS); }
+
+static void
+sigsegv(void)
+       { sigpanic(SIGSEGV); }
+
+static void
+sigsys(void)
+       { sigpanic(SIGSYS); }
+
+static void
+sigpipe(void)
+       { sigpanic(SIGPIPE); }
+
+static void
+sigterm(void)
+       { sigpanic(SIGTERM); }
+
+void
+sigsetup(void)
        {
-       signal(SIGQUIT, cntlc);                 signal(SIGINT,  cntlc);
-       signal(SIGKILL, SIG_IGN);               signal(SIGHUP,  sgam);
-       signal(SIGILL,  sigill);                signal(SIGTRAP, sigtrap);
-       signal(SIGIOT,  sigiot);                signal(SIGEMT,  sigemt);
-       signal(SIGFPE,  sigfpe);                signal(SIGBUS,  sigbus);
-       signal(SIGSEGV, sigsegv);               signal(SIGSYS,  sigsys);
-       signal(SIGPIPE, sigpipe);               signal(SIGTERM, sigterm);
+       signal(SIGQUIT, (sig_t)cntlc);          signal(SIGINT,  (sig_t)cntlc);
+       signal(SIGKILL, SIG_IGN);               signal(SIGHUP,  (sig_t)sgam);
+       signal(SIGILL,  (sig_t)sigill);         signal(SIGTRAP, (sig_t)sigtrap);
+       signal(SIGIOT,  (sig_t)sigiot);         signal(SIGEMT,  (sig_t)sigemt);
+       signal(SIGFPE,  (sig_t)sigfpe);         signal(SIGBUS,  (sig_t)sigbus);
+       signal(SIGSEGV, (sig_t)sigsegv);        signal(SIGSYS,  (sig_t)sigsys);
+       signal(SIGPIPE, (sig_t)sigpipe);        signal(SIGTERM, (sig_t)sigterm);
 #ifdef SIGTSTP
-       signal(SIGTSTP,tstop);          signal(SIGSTOP,tstop);
+       signal(SIGTSTP, (sig_t)tstop);          signal(SIGSTOP, (sig_t)tstop);
 #endif /* SIGTSTP */
        }
 
 #ifdef BSD     /* for BSD UNIX? */
 
-static char *signame[NSIG] = { "",
+static const char *signame[NSIG] = { "",
 "SIGHUP",  /*  1        hangup */
 "SIGINT",  /*  2        interrupt */
 "SIGQUIT", /*  3        quit */
@@ -111,7 +160,7 @@ static char *signame[NSIG] = { "",
 
 #else          /* for system V? */
 
-static char *signame[NSIG] = { "",
+static const char *signame[NSIG] = { "",
 "SIGHUP",  /*  1        hangup */
 "SIGINT",  /*  2        interrupt */
 "SIGQUIT", /*  3        quit */
@@ -139,8 +188,7 @@ static char *signame[NSIG] = { "",
  *     routine to process a fatal error signal
  */
 static void
-sigpanic(sig)
-       int sig;
+sigpanic(int sig)
        {
        char buf[128];
        signal(sig,SIG_DFL);
index bfe27eb..35a9cbf 100644 (file)
  *
  * @(#)store.c 5.4 (Berkeley) 5/13/91
  * $FreeBSD: src/games/larn/store.c,v 1.5 1999/11/30 03:49:00 billf Exp $
- * $DragonFly: src/games/larn/store.c,v 1.3 2006/06/10 17:37:08 dillon Exp $
+ * $DragonFly: src/games/larn/store.c,v 1.4 2006/08/26 17:05:05 pavalos Exp $
  */
 
 /*     store.c         Larn is copyrighted 1986 by Noah Morgan. */
 #include "header.h"
+
+static void    dnd_2hed(void);
+static void    dnd_hed(void);
+static void    handsfull(void);
+static void    outofstock(void);
+static void    nogold(void);
+static void    dnditem(int);
+static void    sch_hed(void);
+static void    banktitle(const char *);
+static void    obanksub(void);
+static void    otradhead(void);
+static void    cnsitm(void);
+
 static int dndcount=0,dnditm=0;
 
 /*     this is the data for the stuff in the dnd store */
 int maxitm=83; /* number of items in the dnd inventory table   */
-struct _itm itm[90] = {
-/*cost   memory        iven name       iven arg   how
-  gp    pointer          iven[]        ivenarg[]  many */
-
-{ 2,           0,              OLEATHER,               0,              3       },
-{ 10,          0,              OSTUDLEATHER,   0,              2       },
-{ 40,          0,              ORING,                  0,              2       },
-{ 85,          0,              OCHAIN,                 0,              2       },
-{ 220,         0,              OSPLINT,                0,              1       },
-{ 400,         0,              OPLATE,                 0,              1       },
-{ 900,         0,              OPLATEARMOR,    0,              1       },
-{ 2600,                0,              OSSPLATE,               0,              1       },
-{ 150,         0,              OSHIELD,                0,              1       },
-
-/*cost   memory        iven name       iven arg   how
-  gp    pointer          iven[]        ivenarg[]  many */
-
-{ 2,           0,              ODAGGER,                0,              3       },
-{ 20,          0,              OSPEAR,                 0,              3       },
-{ 80,          0,              OFLAIL,                 0,              2       },
-{ 150,         0,              OBATTLEAXE,             0,              2       },
-{ 450,         0,              OLONGSWORD,             0,              2       },
-{ 1000,                0,              O2SWORD,                0,              2       },
-{ 5000,                0,              OSWORD,                 0,              1       },
-{ 16500,       0,              OLANCE,                 0,              1       },
-{ 6000,                0,       OSWORDofSLASHING,      0,              0       },
-{ 10000,       0,              OHAMMER,                0,              0       },
-
-/*cost   memory        iven name       iven arg   how
-  gp    pointer          iven[]        ivenarg[]  many */
-
-{ 150,         0,              OPROTRING,              1,              1       },
-{ 85,          0,              OSTRRING,               1,              1       },
-{ 120,         0,              ODEXRING,               1,              1       },
-{ 120,         0,              OCLEVERRING,    1,              1       },
-{ 180,         0,              OENERGYRING,    0,              1       },
-{ 125,         0,              ODAMRING,               0,              1       },
-{ 220,         0,              OREGENRING,             0,              1       },
-{ 1000,                0,              ORINGOFEXTRA,   0,              1       },
-
-{ 280,         0,              OBELT,                  0,              1       },
-
-{ 400,         0,              OAMULET,                0,              1       },
-
-{ 6500,                0,              OORBOFDRAGON,   0,              0       },
-{ 5500,                0,              OSPIRITSCARAB,  0,              0       },
-{ 5000,                0,              OCUBEofUNDEAD,  0,              0       },
-{ 6000,                0,              ONOTHEFT,               0,              0       },
-
-{ 590,         0,              OCHEST,                 6,              1       },
-{ 200,         0,              OBOOK,                  8,              1       },
-{ 10,          0,              OCOOKIE,                0,              3       },
-
-/*cost   memory        iven name       iven arg   how
-  gp    pointer          iven[]        ivenarg[]  many */
-
-{      20,             potionname,     OPOTION,        0,              6       },
-{      90,             potionname,     OPOTION,        1,              5       },
-{      520,    potionname,     OPOTION,        2,              1       },
-{      100,    potionname,     OPOTION,        3,              2       },
-{      50,             potionname,     OPOTION,        4,              2       },
-{      150,    potionname,     OPOTION,        5,              2       },
-{      70,             potionname,     OPOTION,        6,              1       },
-{      30,             potionname,     OPOTION,        7,              7       },
-{      200,    potionname,     OPOTION,        8,              1       },
-{      50,             potionname,     OPOTION,        9,              1       },
-{      80,             potionname,     OPOTION,        10,             1       },
-
-/*cost   memory        iven name       iven arg   how
-  gp    pointer          iven[]        ivenarg[]  many */
-
-{      30,             potionname,     OPOTION,        11,             3       },
-{      20,             potionname,     OPOTION,        12,             5       },
-{      40,             potionname,     OPOTION,        13,             3       },
-{      35,             potionname,     OPOTION,        14,             2       },
-{      520,    potionname,     OPOTION,        15,             1       },
-{      90,             potionname,     OPOTION,        16,             2       },
-{      200,    potionname,     OPOTION,        17,             2       },
-{      220,    potionname,     OPOTION,        18,             4       },
-{      80,             potionname,     OPOTION,        19,             6       },
-{      370,    potionname,     OPOTION,        20,             3       },
-{      50,             potionname,     OPOTION,        22,             1       },
-{      150,    potionname,     OPOTION,        23,             3       },
-
-/*cost   memory        iven name       iven arg   how
-  gp    pointer          iven[]        ivenarg[]  many */
-
-{ 100, scrollname,             OSCROLL,        0,              2       },
-{ 125, scrollname,             OSCROLL,        1,              2       },
-{ 60,  scrollname,             OSCROLL,        2,              4       },
-{ 10,  scrollname,             OSCROLL,        3,              4       },
-{ 100, scrollname,             OSCROLL,        4,              3       },
-{ 200, scrollname,             OSCROLL,        5,              2       },
-{ 110, scrollname,             OSCROLL,        6,              1       },
-{ 500, scrollname,             OSCROLL,        7,              2       },
-{ 200, scrollname,             OSCROLL,        8,              2       },
-{ 250, scrollname,             OSCROLL,        9,              4       },
-{ 20,  scrollname,             OSCROLL,        10,             5       },
-{ 30,  scrollname,             OSCROLL,        11,             3       },
-
-/*cost   memory        iven name       iven arg   how
-  gp    pointer          iven[]        ivenarg[]  many */
-
-{ 340, scrollname,             OSCROLL,        12,             1       },
-{ 340, scrollname,             OSCROLL,        13,             1       },
-{ 300, scrollname,             OSCROLL,        14,             2       },
-{ 400, scrollname,             OSCROLL,        15,             2       },
-{ 500, scrollname,             OSCROLL,        16,             2       },
-{ 1000,        scrollname,             OSCROLL,        17,             1       },
-{ 500, scrollname,             OSCROLL,        18,             1       },
-{ 340, scrollname,             OSCROLL,        19,             2       },
-{ 220, scrollname,             OSCROLL,        20,             3       },
-{ 3900,        scrollname,             OSCROLL,        21,             0       },
-{ 610, scrollname,             OSCROLL,        22,             1       },
-{ 3000,        scrollname,             OSCROLL,        23,             0       }
+struct _itm itm_[90] = {
+/*cost         iven name               iven arg        how
+  gp           iven[]                  ivenarg[]       many */
+
+{ 2,           OLEATHER,               0,              3       },
+{ 10,          OSTUDLEATHER,           0,              2       },
+{ 40,          ORING,                  0,              2       },
+{ 85,          OCHAIN,                 0,              2       },
+{ 220,         OSPLINT,                0,              1       },
+{ 400,         OPLATE,                 0,              1       },
+{ 900,         OPLATEARMOR,            0,              1       },
+{ 2600,                OSSPLATE,               0,              1       },
+{ 150,         OSHIELD,                0,              1       },
+
+/*cost         iven name               iven arg        how
+  gp           iven[]                  ivenarg[]       many */
+
+{ 2,           ODAGGER,                0,              3       },
+{ 20,          OSPEAR,                 0,              3       },
+{ 80,          OFLAIL,                 0,              2       },
+{ 150,         OBATTLEAXE,             0,              2       },
+{ 450,         OLONGSWORD,             0,              2       },
+{ 1000,                O2SWORD,                0,              2       },
+{ 5000,                OSWORD,                 0,              1       },
+{ 16500,       OLANCE,                 0,              1       },
+{ 6000,                OSWORDofSLASHING,       0,              0       },
+{ 10000,       OHAMMER,                0,              0       },
+
+/*cost         iven name               iven arg        how
+  gp           iven[]                  ivenarg[]       many */
+
+{ 150,         OPROTRING,              1,              1       },
+{ 85,          OSTRRING,               1,              1       },
+{ 120,         ODEXRING,               1,              1       },
+{ 120,         OCLEVERRING,            1,              1       },
+{ 180,         OENERGYRING,            0,              1       },
+{ 125,         ODAMRING,               0,              1       },
+{ 220,         OREGENRING,             0,              1       },
+{ 1000,                ORINGOFEXTRA,           0,              1       },
+
+{ 280,         OBELT,                  0,              1       },
+
+{ 400,         OAMULET,                0,              1       },
+
+{ 6500,                OORBOFDRAGON,           0,              0       },
+{ 5500,                OSPIRITSCARAB,          0,              0       },
+{ 5000,                OCUBEofUNDEAD,          0,              0       },
+{ 6000,                ONOTHEFT,               0,              0       },
+
+{ 590,         OCHEST,                 6,              1       },
+{ 200,         OBOOK,                  8,              1       },
+{ 10,          OCOOKIE,                0,              3       },
+
+/*cost         iven name               iven arg        how
+  gp           iven[]                  ivenarg[]       many */
+
+{ 20,          OPOTION,                0,              6       },
+{ 90,          OPOTION,                1,              5       },
+{ 520,         OPOTION,                2,              1       },
+{ 100,         OPOTION,                3,              2       },
+{ 50,          OPOTION,                4,              2       },
+{ 150,         OPOTION,                5,              2       },
+{ 70,          OPOTION,                6,              1       },
+{ 30,          OPOTION,                7,              7       },
+{ 200,         OPOTION,                8,              1       },
+{ 50,          OPOTION,                9,              1       },
+{ 80,          OPOTION,                10,             1       },
+
+/*cost         iven name               iven arg        how
+  gp           iven[]                  ivenarg[]       many */
+
+{ 30,          OPOTION,                11,             3       },
+{ 20,          OPOTION,                12,             5       },
+{ 40,          OPOTION,                13,             3       },
+{ 35,          OPOTION,                14,             2       },
+{ 520,         OPOTION,                15,             1       },
+{ 90,          OPOTION,                16,             2       },
+{ 200,         OPOTION,                17,             2       },
+{ 220,         OPOTION,                18,             4       },
+{ 80,          OPOTION,                19,             6       },
+{ 370,         OPOTION,                20,             3       },
+{ 50,          OPOTION,                22,             1       },
+{ 150,         OPOTION,                23,             3       },
+
+/*cost         iven name               iven arg        how
+  gp           iven[]                  ivenarg[]       many */
+
+{ 100,         OSCROLL,                0,              2       },
+{ 125,         OSCROLL,                1,              2       },
+{ 60,          OSCROLL,                2,              4       },
+{ 10,          OSCROLL,                3,              4       },
+{ 100,         OSCROLL,                4,              3       },
+{ 200,         OSCROLL,                5,              2       },
+{ 110,         OSCROLL,                6,              1       },
+{ 500,         OSCROLL,                7,              2       },
+{ 200,         OSCROLL,                8,              2       },
+{ 250,         OSCROLL,                9,              4       },
+{ 20,          OSCROLL,                10,             5       },
+{ 30,          OSCROLL,                11,             3       },
+
+/*cost         iven name               iven arg        how
+  gp           iven[]                  ivenarg[]       many */
+
+{ 340,         OSCROLL,                12,             1       },
+{ 340,         OSCROLL,                13,             1       },
+{ 300,         OSCROLL,                14,             2       },
+{ 400,         OSCROLL,                15,             2       },
+{ 500,         OSCROLL,                16,             2       },
+{ 1000,                OSCROLL,                17,             1       },
+{ 500,         OSCROLL,                18,             1       },
+{ 340,         OSCROLL,                19,             2       },
+{ 220,         OSCROLL,                20,             3       },
+{ 3900,                OSCROLL,                21,             0       },
+{ 610,         OSCROLL,                22,             1       },
+{ 3000,                OSCROLL,                23,             0       }
  };
 
 /*
        function for the dnd store
  */
-dnd_2hed()
+static void
+dnd_2hed(void)
     {
        lprcat("Welcome to the Larn Thrift Shoppe.  We stock many items explorers find useful\n");
        lprcat(" in their adventures.  Feel free to browse to your hearts content.\n");
        lprcat("Also be advised, if you break 'em, you pay for 'em.");
        }
 
-static void dnditem();
-
-dnd_hed()
+static void
+dnd_hed(void)
        {
        int i;
        for (i=dnditm; i<26+dnditm; i++)        dnditem(i);
@@ -178,7 +191,7 @@ dnd_hed()
        }
 
 static void
-handsfull()
+handsfull(void)
 {
        lprcat("\nYou can't carry anything more!");
        lflush();
@@ -186,21 +199,23 @@ handsfull()
 }
 
 static void
-outofstock()
+outofstock(void)
 {
        lprcat("\nSorry, but we are out of that item.");
        lflush();
        nap(2200);
 }
 
-static void nogold()
+static void
+nogold(void)
 {
        lprcat("\nYou don't have enough gold to pay for that!");
        lflush();
        nap(2200);
 }
 
-dndstore()
+void
+dndstore(void)
   {
   int i;
   dnditm = 0;
@@ -214,7 +229,7 @@ dndstore()
        cursors();
        lprcat("\nPress "); standout("escape"); lprcat(" to leave: "); lflush();
        i=0;
-       while (i!='\33') i=getchar();
+       while (i!='\33') i=getchr();
        drawscreen();  nosignal = 0; /* enable signals */ return;
        }
 
@@ -227,7 +242,7 @@ dndstore()
        lprcat(" for more, "); standout("escape");
        lprcat(" to leave]? ");
        i=0;
-       while ((i<'a' || i>'z') && (i!=' ') && (i!='\33') && (i!=12))  i=getchar();
+       while ((i<'a' || i>'z') && (i!=' ') && (i!='\33') && (i!=12))  i=getchr();
        if (i==12) { clear();  dnd_2hed();  dnd_hed(); }
        else if (i=='\33')
                { drawscreen();  nosignal = 0; /* enable signals */ return; }
@@ -241,14 +256,17 @@ dndstore()
                lprc(i);        /* echo the byte */
                i += dnditm - 'a';
                if (i>=maxitm) outofstock(); else
-               if (itm[i].qty <= 0) outofstock(); else
+               if (itm_[i].qty <= 0) outofstock(); else
                if (pocketfull()) handsfull(); else
-               if (c[GOLD] < itm[i].price*10) nogold(); else
+               if (c[GOLD] < itm_[i].price*10) nogold(); else
                        {
-                       if (itm[i].mem != 0) *itm[i].mem[itm[i].arg] = ' ';
-                       c[GOLD] -= itm[i].price*10;
-                       itm[i].qty--;  take(itm[i].obj,itm[i].arg);
-                       if (itm[i].qty==0) dnditem(i);  nap(1001);
+                       if (itm_[i].obj == OPOTION)
+                               potionname[itm_[i].arg] = potionhide[itm_[i].arg];
+                       else if (itm_[i].obj == OSCROLL)
+                               scrollname[itm_[i].arg] = scrollhide[itm_[i].arg];
+                       c[GOLD] -= itm_[i].price*10;
+                       itm_[i].qty--;  take(itm_[i].obj,itm_[i].arg);
+                       if (itm_[i].qty==0) dnditem(i);  nap(1001);
                        }
                }
 
@@ -258,23 +276,22 @@ dndstore()
 /*
        dnditem(index)
 
-       to print the item list;  used in dndstore() enter with the index into itm
+       to print the item list;  used in dndstore() enter with the index into itm_
  */
 static void
-dnditem(i)
-       int i;
+dnditem(int i)
        {
        int j,k;
        if (i >= maxitm)  return;
        cursor( (j=(i&1)*40+1) , (k=((i%26)>>1)+5) );
-       if (itm[i].qty == 0)  { lprintf("%39s","");  return; }
+       if (itm_[i].qty == 0)  { lprintf("%39s","");  return; }
        lprintf("%c) ",(i%26)+'a');
-       if (itm[i].obj == OPOTION)
-               { lprcat("potion of "); lprintf("%s",&potionname[itm[i].arg][1]); }
-       else if (itm[i].obj == OSCROLL)
-               { lprcat("scroll of "); lprintf("%s",&scrollname[itm[i].arg][1]); }
-       else lprintf("%s",objectname[itm[i].obj]);
-       cursor( j+31,k );  lprintf("%6d",(long)(itm[i].price*10));
+       if (itm_[i].obj == OPOTION)
+               { lprcat("potion of "); lprintf("%s",potionhide[itm_[i].arg]); }
+       else if (itm_[i].obj == OSCROLL)
+               { lprcat("scroll of "); lprintf("%s",scrollhide[itm_[i].arg]); }
+       else lprintf("%s",objectname[itm_[i].obj]);
+       cursor( j+31,k );  lprintf("%6d",(long)(itm_[i].price*10));
        }
 
 \f
@@ -286,7 +303,8 @@ char coursetime[] = { 10, 15, 10, 20, 10, 10, 10, 5 };
 /*
        function to display the header info for the school
  */
-sch_hed()
+static void
+sch_hed(void)
        {
        clear();
        lprcat("The College of Larn offers the exciting opportunity of higher education to\n");
@@ -314,7 +332,8 @@ sch_hed()
        lprcat("You are presently carrying ");
        }
 
-oschool()
+void
+oschool(void)
        {
        int i;
        long time_used;
@@ -325,7 +344,7 @@ oschool()
                cursor(57,18); lprintf("%d gold pieces.   ",(long)c[GOLD]); cursors();
                lprcat("\nWhat is your choice ["); standout("escape");
                lprcat(" to leave] ? ");  yrepcount=0;
-               i=0;  while ((i<'a' || i>'h') && (i!='\33') && (i!=12)) i=getchar();
+               i=0;  while ((i<'a' || i>'h') && (i!='\33') && (i!=12)) i=getchr();
                if (i==12) { sch_hed();  continue; }
                else if (i=='\33')
                        { nosignal = 0; drawscreen();  /* enable signals */ return; }
@@ -403,19 +422,21 @@ oschool()
  *     for the first national bank of Larn
  */
 int lasttime=0;        /* last time he was in bank */
-static void banktitle();
 
-obank()
+void
+obank(void)
        {
        banktitle("    Welcome to the First National Bank of Larn.");
        }
-obank2()
+
+void
+obank2(void)
        {
        banktitle("Welcome to the 5th level branch office of the First National Bank of Larn.");
        }
+
 static void
-banktitle(str)
-       char *str;
+banktitle(const char *str)
        {
        nosignal = 1; /* disable signals */
        clear();  lprcat(str);
@@ -429,7 +450,7 @@ banktitle(str)
                cursors();
                lprcat("\nPress "); standout("escape"); lprcat(" to leave: "); lflush();
                i=0;
-               while (i!='\33') i=getchar();
+               while (i!='\33') i=getchr();
                drawscreen();  nosignal = 0; /* enable signals */ return;
                }
        lprcat("\n\n\tGemstone\t      Appraisal\t\tGemstone\t      Appraisal");
@@ -440,7 +461,8 @@ banktitle(str)
 /*
  *     function to put interest on your bank account
  */
-ointerest()
+void
+ointerest(void)
        {
        int i;
        if (c[BANKACCOUNT]<0) c[BANKACCOUNT] = 0;
@@ -456,7 +478,9 @@ ointerest()
 
 static short gemorder[26]={0}; /* the reference to screen location for each */
 static long gemvalue[26]={0};  /* the appraisal of the gems */
-obanksub()
+
+static void
+obanksub(void)
        {
        unsigned long amt;
        int i,k;
@@ -476,7 +500,7 @@ obanksub()
                                        else gemvalue[i] = (255&ivenarg[i])*100;
                                        gemorder[i]=k;
                                        cursor( (k%2)*40+1 , (k>>1)+4 );
-                                       lprintf("%c) %s",i+'a',objectname[iven[i]]);
+                                       lprintf("%c) %s",i+'a',objectname[(int)iven[i]]);
                                        cursor( (k%2)*40+33 , (k>>1)+4 );
                                        lprintf("%5d",(long)gemvalue[i]);  k++;
                        };
@@ -491,25 +515,23 @@ obanksub()
                standout("w"); lprcat(") withdraw, ("); standout("s");
                lprcat(") sell a stone, or "); standout("escape"); lprcat("]  ");
                yrepcount=0;
-               i=0; while (i!='d' && i!='w' && i!='s' && i!='\33') i=getchar();
+               i=0; while (i!='d' && i!='w' && i!='s' && i!='\33') i=getchr();
                switch(i)
                        {
                        case 'd':       lprcat("deposit\nHow much? ");  amt = readnum((long)c[GOLD]);
-                                               if (amt<0) { lprcat("\nSorry, but we can't take negative gold!"); nap(2000); amt=0; } else
-                                               if (amt>c[GOLD])
+                                               if (amt>(unsigned)c[GOLD])
                                                  { lprcat("  You don't have that much.");  nap(2000); }
                                                else { c[GOLD] -= amt;  c[BANKACCOUNT] += amt; }
                                                break;
 
                        case 'w':       lprcat("withdraw\nHow much? "); amt = readnum((long)c[BANKACCOUNT]);
-                                               if (amt<0) { lprcat("\nSorry, but we don't have any negative gold!");  nap(2000); amt=0; }
-                                               else if (amt > c[BANKACCOUNT])
+                                               if (amt >(unsigned) c[BANKACCOUNT])
                                                  { lprcat("\nYou don't have that much in the bank!"); nap(2000); }
                                                else { c[GOLD] += amt;  c[BANKACCOUNT] -= amt; }
                                                break;
 
                        case 's':       lprcat("\nWhich stone would you like to sell? ");
-                                               i=0; while ((i<'a' || i>'z') && i!='*') i=getchar();
+                                               i=0; while ((i<'a' || i>'z') && i!='*') i=getchr();
                                                if (i=='*')
                                                  for (i=0; i<26; i++)
                                                        {
@@ -540,42 +562,11 @@ obanksub()
                cursor(49,18); lprintf("%8d",(long)c[GOLD]);
                }
        }
-
-/*
-       subroutine to appraise any stone for the bank
- */
-appraise(gemstone)
-       int gemstone;
-       {
-       int j,amt;
-       for (j=0; j<26; j++)
-         if (iven[j]==gemstone)
-               {
-               lprintf("\nI see you have %s",objectname[gemstone]);
-               if (gemstone==OLARNEYE) lprcat("  I must commend you.  I didn't think\nyou could get it.");
-               lprcat("  Shall I appraise it for you? ");  yrepcount=0;
-               if (getyn()=='y')
-                       {
-                       lprcat("yes.\n  Just one moment please \n");  nap(1000);
-                       if (gemstone==OLARNEYE)
-                               {
-                               amt = 250000-((gtime*7)/100)*100;
-                               if (amt<50000) amt=50000;
-                               }
-                       else amt = (255 & ivenarg[j]) * 100;
-                       lprintf("\nI can see this is an excellent stone, It is worth %d",(long)amt);
-                       lprcat("\nWould you like to sell it to us? ");  yrepcount=0;
-                       if (getyn()=='y') { lprcat("yes\n"); c[GOLD]+=amt;  iven[j]=0; }
-                       else lprcat("no thank you.\n");
-                       if (gemstone==OLARNEYE) lprcat("It is, of course, your privilege to keep the stone\n");
-                       }
-               else lprcat("no\nO. K.\n");
-               }
-       }
 /*
        function for the trading post
  */
-static otradhead()
+static void
+otradhead(void)
        {
     clear();
        lprcat("Welcome to the Larn Trading Post.  We buy items that explorers no longer find\n");
@@ -585,7 +576,8 @@ static otradhead()
        lprcat("damaged, we will pay only 10% of their new value.\n\n");
        }
 
-otradepost()
+void
+otradepost(void)
   {
   int i,j,value,isub,izarg;
   dnditm = dndcount = 0;
@@ -595,7 +587,7 @@ otradepost()
        {
        lprcat("\nWhat item do you want to sell to us ["); standout("*");
        lprcat(" for list, or "); standout("escape"); lprcat("] ? ");
-       i=0; while (i>'z' || (i<'a' && i!='*' && i!='\33' && i!='.')) i=getchar();
+       i=0; while (i>'z' || (i<'a' && i!='*' && i!='\33' && i!='.')) i=getchr();
        if (i == '\33')
                { setscroll(); recalc(); drawscreen(); nosignal=0; /* enable signals */ return; }
        isub = i - 'a';         j=0;
@@ -603,23 +595,23 @@ otradepost()
                { j=1; cnsitm(); }      /* can't sell unidentified item */
        if (iven[isub]==OPOTION) if (potionname[ivenarg[isub]][0]==0)
                { j=1; cnsitm(); }      /* can't sell unidentified item */
-       if (!j)
+       if (!j) {
          if (i=='*') { clear(); qshowstr(); otradhead(); }
        else  if (iven[isub]==0)  lprintf("\nYou don't have item %c!",isub+'a');
        else
                {
                for (j=0; j<maxitm; j++)
-                 if ((itm[j].obj == iven[isub]) || (iven[isub] == ODIAMOND) || (iven[isub] == ORUBY) || (iven[isub] == OEMERALD) || (iven[isub] == OSAPPHIRE))
+                 if ((itm_[j].obj == iven[isub]) || (iven[isub] == ODIAMOND) || (iven[isub] == ORUBY) || (iven[isub] == OEMERALD) || (iven[isub] == OSAPPHIRE))
                        {
                        srcount=0;  show3(isub);        /* show what the item was */
                        if ((iven[isub] == ODIAMOND) || (iven[isub] == ORUBY)
                                || (iven[isub] == OEMERALD) || (iven[isub] == OSAPPHIRE))
                                value = 20*ivenarg[isub];
                        else
-                       if ((itm[j].obj == OSCROLL) || (itm[j].obj == OPOTION))  value = 2*itm[j+ivenarg[isub]].price;
+                       if ((itm_[j].obj == OSCROLL) || (itm_[j].obj == OPOTION))  value = 2*itm_[j+ivenarg[isub]].price;
                        else
                                {
-                               izarg=ivenarg[isub];  value = itm[j].price;     /* appreciate if a +n object */
+                               izarg=ivenarg[isub];  value = itm_[j].price;    /* appreciate if a +n object */
                                if (izarg >= 0) value *= 2;
                                while ((izarg-- > 0) && ((value=14*(67+value)/10) < 500000));
                                }
@@ -639,16 +631,19 @@ otradepost()
                        }
                if (j <= maxitm+2) lprcat("\nSo sorry, but we are not authorized to accept that item.");
                }
-       }
+       } /* if(!j) */
+       } /* while(1) */
   }
 
-cnsitm()
+static void
+cnsitm(void)
        { lprcat("\nSorry, we can't accept unidentified objects."); }
 
 /*
  *     for the Larn Revenue Service
  */
-olrs()
+void
+olrs(void)
        {
        int i,first;
        unsigned long amt;
@@ -664,12 +659,11 @@ olrs()
                lprcat(") pay taxes, or ");
                standout("escape");
                lprcat("]  ");  yrepcount=0;
-               i=0; while (i!='p' && i!='\33') i=getchar();
+               i=0; while (i!='p' && i!='\33') i=getchr();
                switch(i)
                        {
                        case 'p':       lprcat("pay taxes\nHow much? "); amt = readnum((long)c[GOLD]);
-                                               if (amt<0) { lprcat("\nSorry, but we can't take negative gold\n"); amt=0; } else
-                                               if (amt>c[GOLD])        lprcat("  You don't have that much.\n");
+                                               if (amt>(unsigned)c[GOLD])      lprcat("  You don't have that much.\n");
                                                else  c[GOLD] -= paytaxes((long)amt);
                                                break;
 
index 2e6e290..63fb8cd 100644 (file)
@@ -1,7 +1,8 @@
 /* tok.c               Larn is copyrighted 1986 by Noah Morgan. */
 /* $FreeBSD: src/games/larn/tok.c,v 1.5 1999/11/16 02:57:25 billf Exp $ */
-/* $DragonFly: src/games/larn/tok.c,v 1.3 2006/01/22 03:43:37 swildner Exp $ */
+/* $DragonFly: src/games/larn/tok.c,v 1.4 2006/08/26 17:05:05 pavalos Exp $ */
 #include <sys/types.h>
+#include <sys/wait.h>
 #ifdef SYSV
 #include <fcntl.h>
 #include <termio.h>
@@ -24,7 +25,8 @@ static char usermpoint=0;                     /* the user monster pointer */
 /*
        lexical analyzer for larn
  */
-yylex()
+int
+yylex(void)
        {
        char cc;
        int ic;
@@ -96,7 +98,8 @@ yylex()
 /*
  *     flushall()              Function to flush all type-ahead in the input buffer
  */
-flushall()
+void
+flushall(void)
        {
        char cc;
        int ic;
@@ -112,8 +115,8 @@ flushall()
        function to set the desired hardness
        enter with hard= -1 for default hardness, else any desired hardness
  */
-sethard(hard)
-       int hard;
+void
+sethard(int hard)
        {
        int j,k,i;
        j=c[HARDGAME]; hashewon();
@@ -123,7 +126,7 @@ sethard(hard)
                }
        else c[HARDGAME]=j; /* set c[HARDGAME] to proper value if restoring game */
 
-       if (k=c[HARDGAME])
+       if ((k=c[HARDGAME]))
          for (j=0; j<=MAXMONST+8; j++)
                {
                i = ((6+k)*monster[j].hitpoints+1)/6;
@@ -142,7 +145,8 @@ sethard(hard)
 /*
        function to read and process the larn options file
  */
-readopts()
+void
+readopts(void)
        {
        char *i;
        int j,k;
@@ -152,8 +156,7 @@ readopts()
                {
                strcpy(logname,loginname); return; /* user name if no character name */
                }
-       i = " ";
-       while (*i)
+       do
          {
          if ((i=(char *)lgetw()) == 0) break; /* check for EOF */
          while ((*i==' ') || (*i=='\t')) i++; /* eat leading whitespace */
@@ -175,14 +178,14 @@ readopts()
                                                {
                                                if ((i=lgetw())==0) break;
                                                if (strlen(i)>=MAXMNAME) i[MAXMNAME-1]=0;
-                                               strcpy(usermonster[usermpoint],i);
+                                               strcpy(usermonster[(int)usermpoint],i);
                                                if (usermpoint >= MAXUM) break; /* defined all of em */
-                                               if (isalpha(j=usermonster[usermpoint][0]))
+                                               if (isalpha(j=usermonster[(int)usermpoint][0]))
                                                        {
                                                        for (k=1; k<MAXMONST+8; k++) /* find monster */
                                                          if (monstnamelist[k] == j)
                                                                {
-                                                               monster[k].name = &usermonster[usermpoint++][0];
+                                                               monster[k].name = &usermonster[(int)usermpoint++][0];
                                                                break;
                                                                }
                                                        }
@@ -216,7 +219,7 @@ readopts()
                                                }
                                        break;
                };
-         }
+         } while(*i);
        if (flag)  strcpy(logname,loginname);
        }