diff options
author | markm <markm@FreeBSD.org> | 2002-10-21 07:40:27 +0000 |
---|---|---|
committer | markm <markm@FreeBSD.org> | 2002-10-21 07:40:27 +0000 |
commit | e41bd31debce476e2f6ae864651c7380bea2cdbb (patch) | |
tree | b90261e8ce260fee190d0f359aa2884ddf2510de /games/rogue/trap.c | |
parent | 1cdc4d3dd3997f7f78a4a0ff9c52006837b0b5c4 (diff) | |
download | FreeBSD-src-e41bd31debce476e2f6ae864651c7380bea2cdbb.zip FreeBSD-src-e41bd31debce476e2f6ae864651c7380bea2cdbb.tar.gz |
Deorbit complete. We dont build these anymore, so into the attic they go.
Diffstat (limited to 'games/rogue/trap.c')
-rw-r--r-- | games/rogue/trap.c | 287 |
1 files changed, 0 insertions, 287 deletions
diff --git a/games/rogue/trap.c b/games/rogue/trap.c deleted file mode 100644 index dd8cfed..0000000 --- a/games/rogue/trap.c +++ /dev/null @@ -1,287 +0,0 @@ -/* - * 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. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 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 - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -#if 0 -static char sccsid[] = "@(#)trap.c 8.1 (Berkeley) 5/31/93"; -#endif -static const char rcsid[] = - "$FreeBSD$"; -#endif /* not lint */ - -/* - * trap.c - * - * This source herein may be modified and/or distributed by anybody who - * so desires, with the following restrictions: - * 1.) No portion of this notice shall be removed. - * 2.) Credit shall not be taken for the creation of this source. - * 3.) This code is not to be traded, sold, or used for personal - * gain or profit. - * - */ - -#include "rogue.h" - -trap traps[MAX_TRAPS]; -boolean trap_door = 0; -short bear_trap = 0; - -const char *const trap_strings[TRAPS * 2] = { - "trap door", - "you fell down a trap", - "bear trap", - "you are caught in a bear trap", - "teleport trap", - "teleport", - "poison dart trap", - "a small dart just hit you in the shoulder", - "sleeping gas trap", - "a strange white mist envelops you and you fall asleep", - "rust trap", - "a gush of water hits you on the head" -}; - -extern short cur_level, party_room; -extern const char *new_level_message; -extern boolean interrupted; -extern short ring_exp; -extern boolean sustain_strength; -extern short blind; - -trap_at(row, col) -int row, col; -{ - short i; - - for (i = 0; ((i < MAX_TRAPS) && (traps[i].trap_type != NO_TRAP)); i++) { - if ((traps[i].trap_row == row) && (traps[i].trap_col == col)) { - return(traps[i].trap_type); - } - } - return(NO_TRAP); -} - -trap_player(row, col) -short row, col; -{ - short t; - - if ((t = trap_at(row, col)) == NO_TRAP) { - return; - } - dungeon[row][col] &= (~HIDDEN); - if (rand_percent(rogue.exp + ring_exp)) { - message("the trap failed", 1); - return; - } - switch(t) { - case TRAP_DOOR: - trap_door = 1; - new_level_message = trap_strings[(t*2)+1]; - break; - case BEAR_TRAP: - message(trap_strings[(t*2)+1], 1); - bear_trap = get_rand(4, 7); - break; - case TELE_TRAP: - mvaddch(rogue.row, rogue.col, '^'); - tele(); - break; - case DART_TRAP: - message(trap_strings[(t*2)+1], 1); - rogue.hp_current -= get_damage("1d6", 1); - if (rogue.hp_current <= 0) { - rogue.hp_current = 0; - } - if ((!sustain_strength) && rand_percent(40) && - (rogue.str_current >= 3)) { - rogue.str_current--; - } - print_stats(STAT_HP | STAT_STRENGTH); - if (rogue.hp_current <= 0) { - killed_by((object *) 0, POISON_DART); - } - break; - case SLEEPING_GAS_TRAP: - message(trap_strings[(t*2)+1], 1); - take_a_nap(); - break; - case RUST_TRAP: - message(trap_strings[(t*2)+1], 1); - rust((object *) 0); - break; - } -} - -add_traps() -{ - short i, n, tries = 0; - short row, col; - - if (cur_level <= 2) { - n = 0; - } else if (cur_level <= 7) { - n = get_rand(0, 2); - } else if (cur_level <= 11) { - n = get_rand(1, 2); - } else if (cur_level <= 16) { - n = get_rand(2, 3); - } else if (cur_level <= 21) { - n = get_rand(2, 4); - } else if (cur_level <= (AMULET_LEVEL + 2)) { - n = get_rand(3, 5); - } else { - n = get_rand(5, MAX_TRAPS); - } - for (i = 0; i < n; i++) { - traps[i].trap_type = get_rand(0, (TRAPS - 1)); - - if ((i == 0) && (party_room != NO_ROOM)) { - do { - row = get_rand((rooms[party_room].top_row+1), - (rooms[party_room].bottom_row-1)); - col = get_rand((rooms[party_room].left_col+1), - (rooms[party_room].right_col-1)); - tries++; - } while (((dungeon[row][col] & (OBJECT|STAIRS|TRAP|TUNNEL)) || - (dungeon[row][col] == NOTHING)) && (tries < 15)); - if (tries >= 15) { - gr_row_col(&row, &col, (FLOOR | MONSTER)); - } - } else { - gr_row_col(&row, &col, (FLOOR | MONSTER)); - } - traps[i].trap_row = row; - traps[i].trap_col = col; - dungeon[row][col] |= (TRAP | HIDDEN); - } -} - -id_trap() -{ - short dir, row, col, d, t; - - message("direction? ", 0); - - while (!is_direction(dir = rgetchar(), &d)) { - sound_bell(); - } - check_message(); - - if (dir == CANCEL) { - return; - } - row = rogue.row; - col = rogue.col; - - get_dir_rc(d, &row, &col, 0); - - if ((dungeon[row][col] & TRAP) && (!(dungeon[row][col] & HIDDEN))) { - t = trap_at(row, col); - message(trap_strings[t*2], 0); - } else { - message("no trap there", 0); - } -} - -show_traps() -{ - short i, j; - - for (i = 0; i < DROWS; i++) { - for (j = 0; j < DCOLS; j++) { - if (dungeon[i][j] & TRAP) { - mvaddch(i, j, '^'); - } - } - } -} - -search(n, is_auto) -short n; -boolean is_auto; -{ - short s, i, j, row, col, t; - short shown = 0, found = 0; - static boolean reg_search; - - for (i = -1; i <= 1; i++) { - for (j = -1; j <= 1; j++) { - row = rogue.row + i; - col = rogue.col + j; - if ((row < MIN_ROW) || (row >= (DROWS-1)) || - (col < 0) || (col >= DCOLS)) { - continue; - } - if (dungeon[row][col] & HIDDEN) { - found++; - } - } - } - for (s = 0; s < n; s++) { - for (i = -1; i <= 1; i++) { - for (j = -1; j <= 1; j++) { - row = rogue.row + i; - col = rogue.col + j ; - if ((row < MIN_ROW) || (row >= (DROWS-1)) || - (col < 0) || (col >= DCOLS)) { - continue; - } - if (dungeon[row][col] & HIDDEN) { - if (rand_percent(17 + (rogue.exp + ring_exp))) { - dungeon[row][col] &= (~HIDDEN); - if ((!blind) && ((row != rogue.row) || - (col != rogue.col))) { - mvaddch(row, col, get_dungeon_char(row, col)); - } - shown++; - if (dungeon[row][col] & TRAP) { - t = trap_at(row, col); - message(trap_strings[t*2], 1); - } - } - } - if (((shown == found) && (found > 0)) || interrupted) { - return; - } - } - } - if ((!is_auto) && (reg_search = !reg_search)) { - (void) reg_move(); - } - } -} |