Changeset 305

Show
Ignore:
Timestamp:
07/08/07 13:10:33 (1 year ago)
Author:
takkaria
Message:

Add trap detection indicator. (closes #19)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/edit/artifact.txt

    r270 r305  
    7171# Version stamp (required) 
    7272 
    73 V:3.0.10 
     73V:3.0.11 
    7474 
    7575 
  • trunk/lib/edit/cost_adj.txt

    r270 r305  
    1717# Version stamp (required) 
    1818 
    19 V:3.0.10 
     19V:3.0.11 
    2020 
    2121 
  • trunk/lib/edit/ego_item.txt

    r270 r305  
    5252# Version stamp (required) 
    5353 
    54 V:3.0.10 
     54V:3.0.11 
    5555 
    5656# 1 (unused) 
  • trunk/lib/edit/flavor.txt

    r270 r305  
    1515# Version stamp (required) 
    1616 
    17 V:3.0.10 
     17V:3.0.11 
    1818 
    1919 
  • trunk/lib/edit/limits.txt

    r270 r305  
    1212# Version stamp (required) 
    1313 
    14 V:3.0.10 
     14V:3.0.11 
    1515 
    1616 
  • trunk/lib/edit/monster.txt

    r276 r305  
    9797# Version stamp (required) 
    9898 
    99 V:3.0.10 
     99V:3.0.11 
    100100 
    101101 
  • trunk/lib/edit/object.txt

    r270 r305  
    8181# Version stamp (required) 
    8282 
    83 V:3.0.10 
     83V:3.0.11 
    8484 
    8585 
  • trunk/lib/edit/p_class.txt

    r270 r305  
    6363# Version stamp (required) 
    6464 
    65 V:3.0.10 
     65V:3.0.11 
    6666 
    6767 
  • trunk/lib/edit/p_hist.txt

    r270 r305  
    3030# Version stamp (required) 
    3131 
    32 V:3.0.10 
     32V:3.0.11 
    3333 
    3434 
  • trunk/lib/edit/p_race.txt

    r270 r305  
    5151# Version stamp (required) 
    5252 
    53 V:3.0.10 
     53V:3.0.11 
    5454 
    5555 
  • trunk/lib/edit/shop_own.txt

    r270 r305  
    1717# Version stamp (required) 
    1818 
    19 V:3.0.10 
     19V:3.0.11 
    2020 
    2121# General Store 
  • trunk/lib/edit/spell.txt

    r270 r305  
    3838# Version stamp (required) 
    3939 
    40 V:3.0.10 
     40V:3.0.11 
    4141 
    4242 
  • trunk/lib/edit/terrain.txt

    r270 r305  
    3636# Version stamp (required) 
    3737 
    38 V:3.0.10 
     38V:3.0.11 
    3939 
    4040 
  • trunk/lib/edit/vault.txt

    r270 r305  
    4747# Version stamp (required) 
    4848 
    49 V:3.0.10 
     49V:3.0.11 
    5050 
    5151 
  • trunk/src/cave.c

    r229 r305  
    35283528                        /* Process the grid */ 
    35293529                        cave_info[y][x] &= ~(CAVE_MARK); 
     3530                        cave_info2[y][x] &= ~(CAVE2_DTRAP); 
    35303531                } 
    35313532        } 
  • trunk/src/cmd1.c

    r291 r305  
    14011401 
    14021402 
     1403        bool old_dtrap, new_dtrap; 
     1404 
     1405 
    14031406        /* Find the result of moving */ 
    14041407        y = py + ddy[dir]; 
     
    15011504                /* sound(MSG_WALK); */ 
    15021505 
    1503                 /* Move player */ 
    1504                 monster_swap(py, px, y, x); 
     1506                /* See if trap detection status will change */ 
     1507                old_dtrap = ((cave_info2[py][px] & (CAVE2_DTRAP)) != 0); 
     1508                new_dtrap = ((cave_info2[y][x] & (CAVE2_DTRAP)) != 0); 
     1509 
     1510                /* Note the change in the detect status */ 
     1511                if (old_dtrap != new_dtrap) p_ptr->redraw |= (PR_DTRAP); 
     1512 
     1513                /* Disturb player if the player is about to leave the detect area XXX */ 
     1514                if (disturb_detect && p_ptr->running && old_dtrap && !new_dtrap) 
     1515                { 
     1516                        /* Disturb the player */ 
     1517                        disturb(0, 0); 
     1518 
     1519                        /* Done XXX */ 
     1520                        return; 
     1521                } 
     1522 
     1523                /* Move player */ 
     1524                monster_swap(py, px, y, x); 
     1525   
     1526 
    15051527 
    15061528                /* New location */ 
  • trunk/src/defines.h

    r270 r305  
    4545#define VERSION_MAJOR   3 
    4646#define VERSION_MINOR   0 
    47 #define VERSION_PATCH   10 
     47#define VERSION_PATCH   11 
    4848#define VERSION_EXTRA   0 
    4949 
     
    16071607#define PR_STUN                 0x00002000L     /* Display Extra (Stun) */ 
    16081608#define PR_HUNGER               0x00004000L     /* Display Extra (Hunger) */ 
    1609 /* xxx */ 
     1609#define PR_DTRAP               0x00008000L /* Display Extra (Trap detection) */ 
    16101610#define PR_BLIND                0x00010000L     /* Display Extra (Blind) */ 
    16111611#define PR_CONFUSED             0x00020000L     /* Display Extra (Confused) */ 
     
    16701670#define CAVE_WALL               0x80    /* wall flag */ 
    16711671 
     1672#define CAVE2_DTRAP             0x01    /* trap detected grid */ 
    16721673 
    16731674 
     
    24042405#define OPT_disturb_move                        20 
    24052406#define OPT_disturb_near                        21 
    2406 #define OPT_disturb_panel                     22 
     2407#define OPT_disturb_detect                    22 
    24072408#define OPT_disturb_state                       23 
    24082409#define OPT_disturb_minor                       24 
     
    24982499#define disturb_move                    OPTION(disturb_move) 
    24992500#define disturb_near                    OPTION(disturb_near) 
    2500 #define disturb_panel                  OPTION(disturb_panel
     2501#define disturb_detect                 OPTION(disturb_detect
    25012502#define disturb_state                   OPTION(disturb_state) 
    25022503#define disturb_minor                   OPTION(disturb_minor) 
  • trunk/src/externs.h

    r303 r305  
    153153extern byte *temp_x; 
    154154extern byte (*cave_info)[256]; 
     155extern byte (*cave_info2)[256]; 
    155156extern byte (*cave_feat)[DUNGEON_WID]; 
    156157extern s16b (*cave_o_idx)[DUNGEON_WID]; 
  • trunk/src/generate.c

    r48 r305  
    33863386                                /* No flags */ 
    33873387                                cave_info[y][x] = 0; 
     3388                                cave_info2[y][x] = 0; 
    33883389 
    33893390                                /* No features */ 
  • trunk/src/init2.c

    r171 r305  
    11421142        /* Padded into array */ 
    11431143        C_MAKE(cave_info, DUNGEON_HGT, byte_256); 
     1144        C_MAKE(cave_info2, DUNGEON_HGT, byte_256); 
    11441145 
    11451146        /* Feature array */ 
     
    18731874        FREE(cave_m_idx); 
    18741875        FREE(cave_feat); 
     1876        FREE(cave_info2); 
    18751877        FREE(cave_info); 
    18761878 
  • trunk/src/load.c

    r303 r305  
    16541654        } 
    16551655 
     1656        /* Load the dungeon data */ 
     1657        if (!older_than(3, 0, 11)) for (x = y = 0; y < DUNGEON_HGT; ) 
     1658        { 
     1659                /* Grab RLE info */ 
     1660                rd_byte(&count); 
     1661                rd_byte(&tmp8u); 
     1662 
     1663                /* Apply the RLE info */ 
     1664                for (i = count; i > 0; i--) 
     1665                { 
     1666                        /* Extract "info" */ 
     1667                        cave_info2[y][x] = tmp8u; 
     1668 
     1669                        /* Advance/Wrap */ 
     1670                        if (++x >= DUNGEON_WID) 
     1671                        { 
     1672                                /* Wrap */ 
     1673                                x = 0; 
     1674 
     1675                                /* Advance/Wrap */ 
     1676                                if (++y >= DUNGEON_HGT) break; 
     1677                        } 
     1678                } 
     1679        } 
     1680 
    16561681 
    16571682        /*** Run length decoding ***/ 
  • trunk/src/monster2.c

    r131 r305  
    13421342                p_ptr->px = x2; 
    13431343 
     1344                /* Update the trap detection status */ 
     1345                p_ptr->redraw |= (PR_DTRAP); 
     1346 
    13441347                /* Update the panel */ 
    13451348                p_ptr->update |= (PU_PANEL); 
     
    13741377                p_ptr->py = y1; 
    13751378                p_ptr->px = x1; 
     1379 
     1380                /* Update the trap detection status */ 
     1381                p_ptr->redraw |= (PR_DTRAP); 
    13761382 
    13771383                /* Update the panel */ 
  • trunk/src/save.c

    r303 r305  
    681681        } 
    682682 
     683        /** Now dump the cave_info2[][] stuff **/ 
     684 
     685        /* Note that this will induce two wasted bytes */ 
     686        count = 0; 
     687        prev_char = 0; 
     688 
     689        /* Dump the cave */ 
     690        for (y = 0; y < DUNGEON_HGT; y++) 
     691        { 
     692                for (x = 0; x < DUNGEON_WID; x++) 
     693                { 
     694                        /* Keep all the information from info2 */ 
     695                        tmp8u = cave_info2[y][x]; 
     696 
     697                        /* If the run is broken, or too full, flush it */ 
     698                        if ((tmp8u != prev_char) || (count == MAX_UCHAR)) 
     699                        { 
     700                                wr_byte((byte)count); 
     701                                wr_byte((byte)prev_char); 
     702                                prev_char = tmp8u; 
     703                                count = 1; 
     704                        } 
     705 
     706                        /* Continue the run */ 
     707                        else 
     708                        { 
     709                                count++; 
     710                        } 
     711                } 
     712        } 
     713 
     714        /* Flush the data (if any) */ 
     715        if (count) 
     716        { 
     717                wr_byte((byte)count); 
     718                wr_byte((byte)prev_char); 
     719        } 
     720 
    683721 
    684722        /*** Simple "Run-Length-Encoding" of cave ***/ 
  • trunk/src/spells2.c

    r291 r305  
    950950                                lite_spot(y, x); 
    951951 
    952                                 /* Obvious */ 
     952                                /* We found something to detect */ 
    953953                                detect = TRUE; 
    954954                        } 
     955 
     956                        /* Mark as trap-detected */ 
     957                        cave_info2[y][x] |= (CAVE2_DTRAP); 
    955958                } 
    956959        } 
     
    958961        /* Describe */ 
    959962        if (detect) 
    960         { 
    961963                msg_print("You sense the presence of traps!"); 
    962         } 
     964 
     965        /* Mark the redraw flag */ 
     966        p_ptr->redraw |= (PR_DTRAP); 
    963967 
    964968        /* Result */ 
    965         return (detect); 
     969        return (TRUE); 
    966970} 
    967971 
  • trunk/src/tables.c

    r265 r305  
    14191419        "disturb_move",                         /* OPT_disturb_move */ 
    14201420        "disturb_near",                         /* OPT_disturb_near */ 
    1421         "disturb_panel",                       /* OPT_disturb_panel */ 
     1421        "disturb_detect",                      /* OPT_disturb_detect */ 
    14221422        "disturb_state",                        /* OPT_disturb_state */ 
    14231423        "disturb_minor",                        /* OPT_disturb_minor */ 
     
    16831683        "Disturb whenever any monster moves",           /* OPT_disturb_move */ 
    16841684        "Disturb whenever viewable monster moves",      /* OPT_disturb_near */ 
    1685         "Disturb whenever map panel changes",          /* OPT_disturb_panel */ 
     1685        "Disturb whenever leaving trap detected area", /* OPT_disturb_detect */ 
    16861686        "Disturb whenever player state changes",        /* OPT_disturb_state */ 
    16871687        "Disturb whenever boring things happen",        /* OPT_disturb_minor */ 
     
    19471947        FALSE,          /* OPT_disturb_move */ 
    19481948        TRUE,           /* OPT_disturb_near */ 
    1949         TRUE,           /* OPT_disturb_panel */ 
     1949        TRUE,           /* OPT_disturb_detect */ 
    19501950        TRUE,           /* OPT_disturb_state */ 
    19511951        TRUE,           /* OPT_disturb_minor */ 
     
    22312231                OPT_disturb_move, 
    22322232                OPT_disturb_near, 
    2233                 OPT_disturb_panel
     2233                OPT_disturb_detect
    22342234                OPT_disturb_state, 
    22352235                OPT_disturb_minor, 
  • trunk/src/variable.c

    r303 r305  
    394394 * Array[DUNGEON_HGT][256] of cave grid info flags (padded) 
    395395 * 
    396  * This array is padded to a width of 256 to allow fast access to elements 
     396 * These arrays are padded to a width of 256 to allow fast access to elements 
    397397 * in the array via "grid" values (see the GRID() macros). 
    398398 */ 
    399399byte (*cave_info)[256]; 
     400byte (*cave_info2)[256]; 
    400401 
    401402/* 
  • trunk/src/xtra1.c

    r265 r305  
    878878 
    879879        /* Display the speed */ 
    880         c_put_str(attr, format("%-14s", buf), row, col); 
    881 
     880        c_put_str(attr, format("%-10s", buf), row, col); 
     881
     882 
     883 
     884/* 
     885 * Prints trap detection status 
     886 */ 
     887static void prt_dtrap(int row, int col) 
     888
     889        byte info = cave_info2[p_ptr->py][p_ptr->px]; 
     890 
     891        /* The player is in a trap-detected grid */ 
     892        if (info & (CAVE2_DTRAP)) 
     893                c_put_str(TERM_GREEN, "DTrap", row, col); 
     894 
     895        /* Not in a trap-detected grid */ 
     896        else 
     897                put_str("     ", row, col); 
     898
     899 
    882900 
    883901 
     
    970988        { PR_POISONED, 29, prt_poisoned }, /* "Poisoned" */ 
    971989        { PR_STATE,    38, prt_state },    /* <state> */ 
    972         { PR_SPEED,    49, prt_speed },    /* "Slow (-NN)" or "Fast (+NN)" */ 
    973         { PR_STUDY,    64, prt_study },    /* "Study" */ 
    974         { PR_DEPTH,    70, prt_depth },    /* "Lev NNN" / "NNNN ft" */ 
     990        { PR_DTRAP,    49, prt_dtrap },    /* "DTrap" */ 
     991        { PR_SPEED,    55, prt_speed },    /* "Slow (-NN)" or "Fast (+NN)" */ 
     992        { PR_STUDY,    66, prt_study },    /* "Study" */ 
     993        { PR_DEPTH,    72, prt_depth },    /* "Lev NNN" / "NNNN ft" */ 
    975994        { PR_OPPOSE_ELEMENTS, 80, prt_elements }, /* Acid Elec Fire Cold Pois */ 
    976995};