]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - rogue/level.c
off-by-one. aaron@openbsd
[bsdgames-darwin.git] / rogue / level.c
index e04db8f7597f5f6eee6b2d4c1f4b9325e25669a7..ecf1046844351004b13e68c044af642a63f2fd79 100644 (file)
@@ -1,6 +1,8 @@
+/*     $NetBSD: level.c,v 1.7 2003/08/07 09:37:38 agc Exp $    */
+
 /*
- * Copyright (c) 1988 The Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1988, 1993
+ *     The Regents of the University of California.  All rights reserved.
  *
  * This code is derived from software contributed to Berkeley by
  * Timothy C. Stoehr.
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  *
  * SUCH DAMAGE.
  */
 
+#include <sys/cdefs.h>
 #ifndef lint
-static char sccsid[] = "@(#)level.c    5.3 (Berkeley) 6/1/90";
+#if 0
+static char sccsid[] = "@(#)level.c    8.1 (Berkeley) 5/31/93";
+#else
+__RCSID("$NetBSD: level.c,v 1.7 2003/08/07 09:37:38 agc Exp $");
+#endif
 #endif /* not lint */
 
 /*
@@ -57,11 +60,11 @@ static char sccsid[] = "@(#)level.c 5.3 (Berkeley) 6/1/90";
 short cur_level = 0;
 short max_level = 1;
 short cur_room;
-char *new_level_message = 0;
+const char *new_level_message = 0;
 short party_room = NO_ROOM;
 short r_de;
 
-long level_points[MAX_EXP_LEVEL] = {
+const long level_points[MAX_EXP_LEVEL] = {
                  10L,
                  20L,
                  40L,
@@ -87,16 +90,14 @@ long level_points[MAX_EXP_LEVEL] = {
 
 short random_rooms[MAXROOMS] = {3, 7, 5, 2, 0, 6, 1, 4, 8};
 
-extern boolean being_held, wizard, detect_monster;
-extern boolean see_invisible;
-extern short bear_trap, levitate, extra_hp, less_hp, cur_room;
-
+void
 make_level()
 {
        short i, j;
        short must_1, must_2, must_3;
        boolean big_room;
 
+       must_2 = must_3 = 0;
        if (cur_level < LAST_DUNGEON) {
                cur_level++;
        }
@@ -188,14 +189,16 @@ make_level()
        }
 }
 
+void
 make_room(rn, r1, r2, r3)
-short rn, r1, r2, r3;
+       short rn, r1, r2, r3;
 {
        short left_col, right_col, top_row, bottom_row;
        short width, height;
        short row_offset, col_offset;
        short i, j, ch;
 
+       left_col = right_col = top_row = bottom_row = 0;
        switch(rn) {
        case 0:
                left_col = 0;
@@ -254,7 +257,7 @@ short rn, r1, r2, r3;
        case BIG_ROOM:
                top_row = get_rand(MIN_ROW, MIN_ROW+5);
                bottom_row = get_rand(DROWS-7, DROWS-2);
-               left_col = get_rand(0, 10);;
+               left_col = get_rand(0, 10);
                right_col = get_rand(DCOLS-11, DCOLS-1);
                rn = 0;
                goto B;
@@ -297,8 +300,9 @@ END:
        rooms[rn].right_col = right_col;
 }
 
+int
 connect_rooms(room1, room2)
-short room1, room2;
+       short room1, room2;
 {
        short row1, col1, row2, col2, dir;
 
@@ -344,6 +348,7 @@ short room1, room2;
        return(1);
 }
 
+void
 clear_level()
 {
        short i, j;
@@ -370,10 +375,11 @@ clear_level()
        clear();
 }
 
+void
 put_door(rm, dir, row, col)
-room *rm;
-short dir;
-short *row, *col;
+       room *rm;
+       short dir;
+       short *row, *col;
 {
        short wall_width;
 
@@ -407,8 +413,9 @@ short *row, *col;
        rm->doors[dir/2].door_col = *col;
 }
 
+void
 draw_simple_passage(row1, col1, row2, col2, dir)
-short row1, col1, row2, col2, dir;
+       short row1, col1, row2, col2, dir;
 {
        short i, middle, t;
 
@@ -448,16 +455,21 @@ short row1, col1, row2, col2, dir;
        }
 }
 
+int
 same_row(room1, room2)
+       int room1, room2;
 {
        return((room1 / 3) == (room2 / 3));
 }
 
+int
 same_col(room1, room2)
+       int room1, room2;
 {
        return((room1 % 3) == (room2 % 3));
 }
 
+void
 add_mazes()
 {
        short i, j;
@@ -489,6 +501,7 @@ add_mazes()
        }
 }
 
+void
 fill_out_level()
 {
        short i, rn;
@@ -509,9 +522,10 @@ fill_out_level()
        }
 }
 
+void
 fill_it(rn, do_rec_de)
-int rn;
-boolean do_rec_de;
+       int rn;
+       boolean do_rec_de;
 {
        short i, tunnel_dir, door_dir, drow, dcol;
        short target_room, rooms_found = 0;
@@ -570,10 +584,11 @@ boolean do_rec_de;
        }
 }
 
+void
 recursive_deadend(rn, offsets, srow, scol)
-short rn;
-short *offsets;
-short srow, scol;
+       short rn;
+       const short *offsets;
+       short srow, scol;
 {
        short i, de;
        short drow, dcol, tunnel_dir;
@@ -607,9 +622,9 @@ short srow, scol;
 
 boolean
 mask_room(rn, row, col, mask)
-short rn;
-short *row, *col;
-unsigned short mask;
+       short rn;
+       short *row, *col;
+       unsigned short mask;
 {
        short i, j;
 
@@ -625,8 +640,9 @@ unsigned short mask;
        return(0);
 }
 
+void
 make_maze(r, c, tr, br, lc, rc)
-short r, c, tr, br, lc, rc;
+       short r, c, tr, br, lc, rc;
 {
        char dirs[4];
        short i, t;
@@ -690,8 +706,9 @@ short r, c, tr, br, lc, rc;
        }
 }
 
+void
 hide_boxed_passage(row1, col1, row2, col2, n)
-short row1, col1, row2, col2, n;
+       short row1, col1, row2, col2, n;
 {
        short i, j, t;
        short row, col, row_cut, col_cut;
@@ -725,8 +742,9 @@ short row1, col1, row2, col2, n;
        }
 }
 
+void
 put_player(nr)
-short nr;              /* try not to put in this room */
+       short nr;               /* try not to put in this room */
 {
        short rn = nr, misses;
        short row, col;
@@ -757,6 +775,7 @@ short nr;           /* try not to put in this room */
        mvaddch(rogue.row, rogue.col, rogue.fchar);
 }
 
+int
 drop_check()
 {
        if (wizard) {
@@ -773,6 +792,7 @@ drop_check()
        return(0);
 }
 
+int
 check_up()
 {
        if (!wizard) {
@@ -795,9 +815,10 @@ check_up()
        return(0);
 }
 
+void
 add_exp(e, promotion)
-int e;
-boolean promotion;
+       int e;
+       boolean promotion;
 {
        char mbuf[40];
        short new_exp;
@@ -826,8 +847,9 @@ boolean promotion;
        }
 }
 
+int
 get_exp_level(e)
-long e;
+       long e;
 {
        short i;
 
@@ -839,6 +861,7 @@ long e;
        return(i+1);
 }
 
+int
 hp_raise()
 {
        int hp;
@@ -847,6 +870,7 @@ hp_raise()
        return(hp);
 }
 
+void
 show_average_hp()
 {
        char mbuf[80];
@@ -866,6 +890,7 @@ show_average_hp()
        message(mbuf, 0);
 }
 
+void
 mix_random_rooms()
 {
        short i, t;