Changeset 490

Show
Ignore:
Timestamp:
08/11/07 10:27:11 (1 year ago)
Author:
ajps
Message:

map_info now determines if we can see a monster, not the displaying function.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/cave.c

    r486 r490  
    672672                { 
    673673                        monster_type *m_ptr = &mon_list[g->m_idx]; 
     674                        monster_race *r_ptr = &r_info[m_ptr->r_idx]; 
     675                                 
     676                        byte da; 
     677                        char dc; 
    674678                         
    675                         /* Visible monster */ 
    676                         if (m_ptr->ml) 
    677                         { 
    678                                 monster_race *r_ptr = &r_info[m_ptr->r_idx]; 
     679                        /* Desired attr & char*/ 
     680                        da = r_ptr->x_attr; 
     681                        dc = r_ptr->x_char; 
     682                         
     683                        /* Special attr/char codes */ 
     684                        if ((da & 0x80) && (dc & 0x80)) 
     685                        { 
     686                                /* Use attr */ 
     687                                a = da; 
    679688                                 
    680                                 byte da; 
    681                                 char dc; 
     689                                /* Use char */ 
     690                                c = dc; 
     691                        } 
     692                         
     693                        /* Multi-hued monster */ 
     694                        else if (r_ptr->flags1 & (RF1_ATTR_MULTI)) 
     695                        { 
     696                                /* Multi-hued attr */ 
     697                                a = randint(15); 
    682698                                 
     699                                /* Normal char */ 
     700                                c = dc; 
     701                        } 
     702                         
     703                        /* Normal monster (not "clear" in any way) */ 
     704                        else if (!(r_ptr->flags1 & (RF1_ATTR_CLEAR | RF1_CHAR_CLEAR))) 
     705                        { 
     706                                /* Use attr */ 
     707                                a = da; 
     708 
    683709                                /* Desired attr & char */ 
    684710                                da = r_ptr->x_attr; 
    685711                                dc = r_ptr->x_char; 
    686712                                 
    687                                 /* Special attr/char codes */ 
    688                                 if ((da & 0x80) && (dc & 0x80)) 
    689                                 { 
    690                                         /* Use attr */ 
     713                                /* Use char */ 
     714                                c = dc; 
     715                        } 
     716                         
     717                        /* Hack -- Bizarre grid under monster */ 
     718                        else if ((a & 0x80) || (c & 0x80)) 
     719                        { 
     720                                /* Use attr */ 
     721                                a = da; 
     722                                 
     723                                /* Use char */ 
     724                                c = dc; 
     725                        } 
     726                         
     727                        /* Normal char, Clear attr, monster */ 
     728                        else if (!(r_ptr->flags1 & (RF1_CHAR_CLEAR))) 
     729                        { 
     730                                /* Normal char */ 
     731                                c = dc; 
     732                        } 
     733                                 
     734                        /* Normal attr, Clear char, monster */ 
     735                        else if (!(r_ptr->flags1 & (RF1_ATTR_CLEAR))) 
     736                        { 
     737                                /* Normal attr */ 
    691738                                        a = da; 
    692                                          
    693                                         /* Use char */ 
    694                                         c = dc; 
    695                                 } 
    696                                  
    697                                 /* Multi-hued monster */ 
    698                                 else if (r_ptr->flags1 & (RF1_ATTR_MULTI)) 
    699                                 { 
    700                                         /* Multi-hued attr */ 
    701                                         a = randint(15); 
    702                                          
    703                                         /* Normal char */ 
    704                                         c = dc; 
    705                                 } 
    706                                  
    707                                 /* Normal monster (not "clear" in any way) */ 
    708                                 else if (!(r_ptr->flags1 & (RF1_ATTR_CLEAR | RF1_CHAR_CLEAR))) 
    709                                 { 
    710                                         /* Use attr */ 
    711                                         a = da; 
    712                                          
    713                                         /* Use char */ 
    714                                         c = dc; 
    715                                 } 
    716                                  
    717                                 /* Hack -- Bizarre grid under monster */ 
    718                                 else if ((a & 0x80) || (c & 0x80)) 
    719                                 { 
    720                                         /* Use attr */ 
    721                                         a = da; 
    722                                          
    723                                         /* Use char */ 
    724                                         c = dc; 
    725                                 } 
    726                                  
    727                                 /* Normal char, Clear attr, monster */ 
    728                                 else if (!(r_ptr->flags1 & (RF1_CHAR_CLEAR))) 
    729                                 { 
    730                                         /* Normal char */ 
    731                                         c = dc; 
    732                                 } 
    733                                  
    734                                 /* Normal attr, Clear char, monster */ 
    735                                 else if (!(r_ptr->flags1 & (RF1_ATTR_CLEAR))) 
    736                                 { 
    737                                         /* Normal attr */ 
    738                                         a = da; 
    739                                 } 
    740739                        } 
    741740                } 
     
    849848 * terrain may be objects, monsters, or stay the same. 
    850849 */ 
    851 #undef HALLUCINATION_SUPPORT /* needs to be generalised. */ 
    852850void map_info(unsigned y, unsigned x, grid_data *g) 
    853851{ 
     
    926924                        } 
    927925                } 
     926        } 
     927 
     928        /* Monsters */ 
     929        if (g->m_idx > 0) 
     930        { 
     931                /* If the monster isn't "visible", make sure we don't list it.*/ 
     932                monster_type *m_ptr = &mon_list[g->m_idx]; 
     933                if (!m_ptr->ml) g->m_idx = 0; 
     934 
    928935        } 
    929936