Changeset 1463
- Timestamp:
- 07/03/09 22:03:25 (8 months ago)
- Location:
- trunk/src/object
- Files:
-
- 4 modified
-
identify.c (modified) (2 diffs)
-
obj-desc.c (modified) (1 diff)
-
obj-info.c (modified) (4 diffs)
-
object.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/object/identify.c
r1462 r1463 23 23 /** Time last item was wielded */ 24 24 s32b object_last_wield; 25 26 27 /** 28 * Whether an object counts as "known" due to EASY_KNOW status 29 */ 30 /* XXX Eddie should have a different name */ 31 static bool easy_know(const object_type *o_ptr) 32 { 33 object_kind *k_ptr = &k_info[o_ptr->k_idx]; 34 35 /* XXX Eddie should I really access k_ptr->aware directly? */ 36 if (k_ptr->aware && k_ptr->flags[2] & TR2_EASY_KNOW) 37 return TRUE; 38 else 39 return FALSE; 40 } 25 41 26 42 … … 126 142 } 127 143 144 145 bool object_activation_is_visible(const object_type *o_ptr) 146 { 147 if (!obj_can_wear(o_ptr)) 148 { 149 /* XXX Eddie need function _if_charges ? or maybe the activation code should use something else */ 150 switch(o_ptr->tval) 151 { 152 case TV_WAND: 153 case TV_STAFF: 154 case TV_ROD: 155 break; 156 default: 157 return FALSE; 158 } 159 160 if (object_aware_p(o_ptr)) 161 return TRUE; 162 /* This would work now, but could fail if we add artifact rods 163 else 164 return FALSE; 165 */ 166 } 167 168 u32b f[OBJ_FLAG_N]; 169 object_flags(o_ptr, f); 170 171 if ((f[2] & TR2_ACTIVATE) && (easy_know(o_ptr) || o_ptr->known_flags[2] & TR2_ACTIVATE)) 172 return TRUE; 173 else 174 return FALSE; 175 } 176 177 bool object_effect_is_known(const object_type *o_ptr) 178 { 179 if (easy_know(o_ptr) || o_ptr->ident & IDENT_EFFECT) 180 return TRUE; 181 else 182 return FALSE; 183 } 184 185 bool object_ego_is_visible(const object_type *o_ptr) 186 { 187 if ((o_ptr->tval == TV_LITE) && (ego_item_p(o_ptr))) 188 return TRUE; 189 if (((o_ptr->ident & IDENT_KNOWN) && ego_item_p(o_ptr)) || /* XXX Eddie this should go, but necessary to use savefiles with IDENT_KNOWN before IDENT_EGO was added */ 190 ((o_ptr->ident & IDENT_STORE) && ego_item_p(o_ptr))) 191 return TRUE; 192 else 193 return FALSE; 194 } 128 195 129 196 bool object_attack_plusses_are_visible(const object_type *o_ptr) -
trunk/src/object/obj-desc.c
r1462 r1463 398 398 strnfcat(buf, max, &end, " %s", a_name + a_info[o_ptr->name1].name); 399 399 400 else if ( known && o_ptr->name2)400 else if ((spoil && o_ptr->name2) || object_ego_is_visible(o_ptr)) 401 401 strnfcat(buf, max, &end, " %s", e_name + e_info[o_ptr->name2].name); 402 402 -
trunk/src/object/obj-info.c
r1462 r1463 831 831 * Describe an object's activation, if any. 832 832 */ 833 static bool describe_ activation(const object_type *o_ptr, u32b f3, bool full,833 static bool describe_effect(const object_type *o_ptr, u32b f3, bool full, 834 834 bool only_artifacts, bool subjective) 835 835 { … … 837 837 const char *desc; 838 838 839 int effect , base, dice, sides;839 int effect = 0, base, dice, sides; 840 840 841 841 if (o_ptr->name1) 842 842 { 843 843 const artifact_type *a_ptr = &a_info[o_ptr->name1]; 844 if (!object_known_p(o_ptr) && !full) return FALSE; 845 846 effect = a_ptr->effect; 847 base = a_ptr->time_base; 848 dice = a_ptr->time_dice; 849 sides = a_ptr->time_sides; 844 if (!object_activation_is_visible(o_ptr) && !full) return FALSE; 845 846 if (object_effect_is_known(o_ptr) || full) 847 { 848 effect = a_ptr->effect; 849 base = a_ptr->time_base; 850 dice = a_ptr->time_dice; 851 sides = a_ptr->time_sides; 852 } 853 else 854 { 855 text_out("It can be activated.\n"); 856 return TRUE; 857 } 850 858 } 851 859 else 852 860 { 853 if (!object_aware_p(o_ptr) && !full) return FALSE; 854 855 effect = k_ptr->effect; 856 base = k_ptr->time_base; 857 dice = k_ptr->time_dice; 858 sides = k_ptr->time_sides; 861 if (object_effect_is_known(o_ptr) || full) 862 { 863 effect = k_ptr->effect; 864 base = k_ptr->time_base; 865 dice = k_ptr->time_dice; 866 sides = k_ptr->time_sides; 867 } 868 else if (object_activation_is_visible(o_ptr)) 869 { 870 text_out("It can be activated.\n"); 871 return TRUE; 872 } 859 873 } 860 874 … … 1022 1036 1023 1037 /* Display an additional ego-item description */ 1024 if (o _ptr->name2 && object_known_p(o_ptr) && e_info[o_ptr->name2].text)1038 if (object_ego_is_visible(o_ptr) && e_info[o_ptr->name2].text) 1025 1039 { 1026 1040 if (did_desc) text_out(" "); … … 1070 1084 if (something) text_out("\n"); 1071 1085 1072 if (describe_ activation(o_ptr, f[2], full, terse, subjective))1086 if (describe_effect(o_ptr, f[2], full, terse, subjective)) 1073 1087 { 1074 1088 something = TRUE; -
trunk/src/object/object.h
r1462 r1463 56 56 extern s32b object_last_wield; 57 57 58 bool object_activation_is_visible(const object_type *o_ptr); 59 bool object_effect_is_known(const object_type *o_ptr); 60 bool object_ego_is_visible(const object_type *o_ptr); 58 61 bool object_attack_plusses_are_visible(const object_type *o_ptr); 59 62 bool object_defence_plusses_are_visible(const object_type *o_ptr); 63 60 64 void object_known(object_type *o_ptr); 61 65 void object_aware(object_type *o_ptr);
