Ticket #222: cave.diff

File cave.diff, 2.8 KB (added by Big Al, 13 years ago)

Patch-fix (file 1/2)

  • src/cave.c

    old new  
    469469                                        break; 
    470470                        } 
    471471                } 
     472                /* Use a brightly lit tile */ 
     473                switch (use_graphics) 
     474                { 
     475                        case GRAPHICS_NONE: 
     476                        case GRAPHICS_PSEUDO: 
     477                                if (*a == TERM_GREEN) *a = TERM_L_GREEN; 
     478                                break; 
     479                        case GRAPHICS_ADAM_BOLT: 
     480                                break; 
     481                        case GRAPHICS_DAVID_GERVAIS: 
     482                                break; 
     483                } 
    472484        } 
    473485 
    474486        /* Handle "dark" grids and "blindness" */ 
     
    564576        } 
    565577} 
    566578 
     579/* 
     580 * Checks if a square is at the (inner) edge of a trap detect area 
     581 */ 
     582static bool dtrap_edge(int y, int x) 
     583{ 
     584        /* Check if the square is a dtrap in the first place */ 
     585        if (!cave_info2[y][x] & CAVE2_DTRAP) 
     586                return FALSE; 
     587         
     588        /* Check for non-dtrap adjacent grids */ 
     589        if (in_bounds(y + 1, x    ) && (!cave_info2[y + 1][x    ] & CAVE2_DTRAP)) return TRUE; 
     590        if (in_bounds(y    , x + 1) && (!cave_info2[y    ][x + 1] & CAVE2_DTRAP)) return TRUE; 
     591        if (in_bounds(y - 1, x    ) && (!cave_info2[y - 1][x    ] & CAVE2_DTRAP)) return TRUE; 
     592        if (in_bounds(y    , x - 1) && (!cave_info2[y    ][x - 1] & CAVE2_DTRAP)) return TRUE; 
     593 
     594        /* Looks better without the diagonals */ 
     595#if 0 
     596        if (in_bounds(y + 1, x + 1) && (!cave_info2[y + 1][x + 1] & CAVE2_DTRAP)) return TRUE; 
     597        if (in_bounds(y - 1, x + 1) && (!cave_info2[y - 1][x + 1] & CAVE2_DTRAP)) return TRUE; 
     598        if (in_bounds(y - 1, x - 1) && (!cave_info2[y - 1][x - 1] & CAVE2_DTRAP)) return TRUE; 
     599        if (in_bounds(y + 1, x - 1) && (!cave_info2[y + 1][x - 1] & CAVE2_DTRAP)) return TRUE; 
     600#endif 
     601        return FALSE; 
     602} 
    567603 
    568604/* 
    569605 * Extract the attr/char to display at the given (legal) map location 
     
    735771        char c; 
    736772 
    737773        byte feat; 
    738         byte info; 
     774        byte info, info2; 
    739775 
    740776        feature_type *f_ptr; 
    741777        object_type *o_ptr; 
     
    754790 
    755791        /* Cave flags */ 
    756792        info = cave_info[y][x]; 
     793        info2 = cave_info2[y][x]; 
    757794 
    758795        /* Hack -- rare random hallucination on non-outer walls */ 
    759796        if (image && (!rand_int(256)) && (feat < FEAT_PERM_SOLID)) 
     
    780817                        /* Normal char */ 
    781818                        c = f_ptr->x_char; 
    782819 
     820                        if (dtrap_edge(y, x)) 
     821                        { 
     822                                a = TERM_GREEN; 
     823                                c = '.'; 
     824                        } 
     825 
    783826                        /* Special lighting effects */ 
    784827                        if (view_special_lite) special_lighting_floor(&a, &c, info); 
     828 
    785829                } 
    786830 
    787831                /* Unknown */ 
     
    795839 
    796840                        /* Normal char */ 
    797841                        c = f_ptr->x_char; 
     842 
     843                        /* Check the dtrap edge */ 
     844                        if (dtrap_edge(y, x)) 
     845                        { 
     846                                a = TERM_GREEN; 
     847                                c = '.'; 
     848                        } 
     849 
    798850                } 
    799851        } 
    800852 
     
    818870 
    819871                        /* Special lighting effects (walls only) */ 
    820872                        if (view_granite_lite) special_lighting_wall(&a, &c, feat, info); 
     873                         
    821874                } 
    822875 
    823876                /* Unknown */ 
     
    831884 
    832885                        /* Normal char */ 
    833886                        c = f_ptr->x_char; 
     887                         
     888                        /* Check the dtrap edge */ 
     889                        if (dtrap_edge(y, x)) 
     890                        { 
     891                                a = TERM_GREEN; 
     892                                c = '.'; 
     893                        } 
    834894                } 
    835895        } 
    836896