Changeset 710

Show
Ignore:
Timestamp:
02/23/08 01:11:51 (7 months ago)
Author:
takkaria
Message:

Fix the problem of armor with inherent negative to-hit bonuses (e.g. chain mail) pseudo-id'ing strangely. For further explanation please see: http://angband.oook.cz/pipermail/angband-dev/2008-February/000413.html and #453, which this closes. Light pseudo-ID needs a rethink, as ever.

Thanks to Gabriel Cunningham for this patch.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/obj-make.c

    r686 r710  
    15291529int object_pseudo_heavy(const object_type *o_ptr) 
    15301530{ 
     1531        object_kind *k_ptr = &k_info[o_ptr->k_idx]; 
     1532         
    15311533        if (artifact_p(o_ptr)) 
    15321534        { 
     
    15481550                return INSCRIP_CURSED; 
    15491551 
    1550         else if (o_ptr->to_a == 0 && o_ptr->to_h == 0 && o_ptr->to_d == 0
     1552        else if (o_ptr->to_a == k_ptr->to_a && o_ptr->to_h == k_ptr->to_h && o_ptr->to_d == k_ptr->to_d
    15511553                return INSCRIP_AVERAGE; 
    1552         else if (o_ptr->to_a >= 0 && o_ptr->to_h >= 0 && o_ptr->to_d >= 0
     1554        else if (o_ptr->to_a >= k_ptr->to_a && o_ptr->to_h >= k_ptr->to_h && o_ptr->to_d >= k_ptr->to_d
    15531555                return INSCRIP_MAGICAL; 
    1554         else if (o_ptr->to_a <= 0 && o_ptr->to_h <= 0 && o_ptr->to_d <= 0
     1556        else if (o_ptr->to_a <= k_ptr->to_a && o_ptr->to_h <= k_ptr->to_h && o_ptr->to_d <= k_ptr->to_d
    15551557                return INSCRIP_MAGICAL; 
    15561558 
     
    15741576        if (ego_item_p(o_ptr)) return (INSCRIP_EXCELLENT); 
    15751577 
    1576         /* Good armor bonus */ 
    1577         if (o_ptr->to_a > 0 || o_ptr->to_h != 0 || o_ptr->to_d > 0) 
    1578                 return (INSCRIP_MAGICAL); 
     1578        /* Catch anything average */ 
     1579        if (o_ptr->to_a == k_ptr->to_a && o_ptr->to_h == k_ptr->to_h && o_ptr->to_d == k_ptr->to_d) 
     1580                return INSCRIP_AVERAGE; 
     1581 
     1582        /* Catch magical things */ 
     1583        if (o_ptr->to_a != k_ptr->to_a || o_ptr->to_h != k_ptr->to_h || o_ptr->to_d != k_ptr->to_d) 
     1584                return INSCRIP_MAGICAL; 
    15791585 
    15801586        /* No feeling */