diff options
-rw-r--r-- | src/cave.cc | 1 | ||||
-rw-r--r-- | src/defines.h | 88 | ||||
-rw-r--r-- | src/monster2.cc | 1 | ||||
-rw-r--r-- | src/object1.cc | 99 | ||||
-rw-r--r-- | src/object1.hpp | 8 | ||||
-rw-r--r-- | src/object2.cc | 26 | ||||
-rw-r--r-- | src/object2.hpp | 3 | ||||
-rw-r--r-- | src/q_thief.cc | 1 | ||||
-rw-r--r-- | src/squelch/condition.cc | 1 | ||||
-rw-r--r-- | src/squelch/object_status.cc | 1 |
10 files changed, 141 insertions, 88 deletions
diff --git a/src/cave.cc b/src/cave.cc index 6928abdb..c7fe706a 100644 --- a/src/cave.cc +++ b/src/cave.cc @@ -2,6 +2,7 @@ #include "angband.h" #include "monster2.hpp" +#include "object1.hpp" #include "options.hpp" #include "q_rand.h" #include "spells1.hpp" diff --git a/src/defines.h b/src/defines.h index 4c8039e1..22c75868 100644 --- a/src/defines.h +++ b/src/defines.h @@ -3387,95 +3387,7 @@ #define term_screen (angband_term[0]) -/* - * Determine if a given inventory item is "aware" - */ -#define object_aware_p(T) \ - (k_info[(T)->k_idx].aware) - -/* - * Determine if a given inventory item is "tried" - */ -#define object_tried_p(T) \ - (k_info[(T)->k_idx].tried) - - -/* - * Determine if a given inventory item is "known" - * Test One -- Check for special "known" tag - * Test Two -- Check for "Easy Know" + "Aware" - */ -#define object_known_p(T) \ - (((T)->ident & (IDENT_KNOWN)) || \ - (k_info[(T)->k_idx].easy_know && k_info[(T)->k_idx].aware)) - - -/* - * Return the "attr" for a given item. - * Use "flavor" if available. - * Default to user definitions. - */ -#define object_attr(T) \ - (((T)->tval == TV_RANDART) ? \ - random_artifacts[(T)->sval].attr : \ - (k_info[(T)->k_idx].flavor) ? \ - misc_to_attr[k_info[(T)->k_idx].flavor] : \ - k_info[(T)->k_idx].x_attr) - -#define object_attr_default(T) \ - (((T)->tval == TV_RANDART) ? \ - random_artifacts[(T)->sval].attr : \ - (k_info[(T)->k_idx].flavor) ? \ - misc_to_attr[k_info[(T)->k_idx].flavor] : \ - k_info[(T)->k_idx].d_attr) - -/* - * Return the "char" for a given item. - * Use "flavor" if available. - * Default to user definitions. - */ -#define object_char(T) \ - ((k_info[(T)->k_idx].flavor) ? \ - misc_to_char[k_info[(T)->k_idx].flavor] : \ - k_info[(T)->k_idx].x_char) -#define object_char_default(T) \ - ((k_info[(T)->k_idx].flavor) ? \ - misc_to_char[k_info[(T)->k_idx].flavor] : \ - k_info[(T)->k_idx].d_char) - - - -/* - * Artifacts use the "name1" field - */ -#define artifact_p(T) \ - ( \ - ((T)->tval == TV_RANDART || \ - ((T)->name1 ? TRUE : FALSE) || \ - ((T)->art_name ? TRUE : FALSE) || \ - ((k_info[(T)->k_idx].flags3 & TR3_NORM_ART)? TRUE : FALSE)) \ - ) - -/* - * Ego-Items use the "name2" field - */ -#define ego_item_p(T) \ - ((T)->name2 || (T)->name2b ? TRUE : FALSE) - -/* - * Ego-Items use the "name2" field - */ -#define is_ego_p(T, e) \ - (((T)->name2 == (e)) || ((T)->name2b == (e))) - - - -/* - * Cursed items. - */ -#define cursed_p(T) \ - ((T)->ident & (IDENT_CURSED)) /* diff --git a/src/monster2.cc b/src/monster2.cc index 65035cca..d0103815 100644 --- a/src/monster2.cc +++ b/src/monster2.cc @@ -14,6 +14,7 @@ #include "levels.hpp" #include "mimic.hpp" #include "monster3.hpp" +#include "object1.hpp" #include "object2.hpp" #include "options.hpp" #include "randart.hpp" diff --git a/src/object1.cc b/src/object1.cc index 93021cec..2e9f09ff 100644 --- a/src/object1.cc +++ b/src/object1.cc @@ -6613,7 +6613,106 @@ static bool_ apply_flags_set(s16b a_idx, s16b set_idx, return (FALSE); } +/* + * Return the "attr" for a given item. + * Use "flavor" if available. + * Default to user definitions. + */ + +byte object_attr(object_type const *o_ptr) +{ + if (o_ptr->tval == TV_RANDART) + { + return random_artifacts[o_ptr->sval].attr; + } + else if (k_info[o_ptr->k_idx].flavor) + { + return misc_to_attr[k_info[o_ptr->k_idx].flavor]; + } + else + { + return k_info[o_ptr->k_idx].x_attr; + } +} + +byte object_attr_default(object_type *o_ptr) +{ + if (o_ptr->tval == TV_RANDART) + { + return random_artifacts[o_ptr->sval].attr; + } + else if (k_info[o_ptr->k_idx].flavor) + { + return misc_to_attr[k_info[o_ptr->k_idx].flavor]; + } + else + { + return k_info[o_ptr->k_idx].d_attr; + } +} + +/* + * Return the "char" for a given item. + * Use "flavor" if available. + * Default to user definitions. + */ + +char object_char(object_type const *o_ptr) +{ + if (k_info[o_ptr->k_idx].flavor) + { + return misc_to_char[k_info[o_ptr->k_idx].flavor]; + } + else + { + return k_info[o_ptr->k_idx].x_char; + } +} +char object_char_default(object_type const *o_ptr) +{ + if (k_info[o_ptr->k_idx].flavor) + { + return misc_to_char[k_info[o_ptr->k_idx].flavor]; + } + else + { + return k_info[o_ptr->k_idx].d_char; + } +} +/** + * Is the given object an artifact? + */ +bool artifact_p(object_type const *o_ptr) +{ + return + (o_ptr->tval == TV_RANDART) || + (o_ptr->name1 ? true : false) || + (o_ptr->art_name ? true : false) || + ((k_info[o_ptr->k_idx].flags3 & TR3_NORM_ART) ? true : false); +} +/** + * Is the given object an ego item? + */ +bool ego_item_p(object_type const *o_ptr) +{ + return o_ptr->name2 || (o_ptr->name2b ? TRUE : FALSE); +} +/* + * Is the given object an ego item of the given type? + */ +bool is_ego_p(object_type const *o_ptr, s16b ego) +{ + return (o_ptr->name2 == ego) || (o_ptr->name2b == ego); +} + +/** + * Is the given object identified as cursed? + */ +bool cursed_p(object_type const *o_ptr) +{ + return o_ptr->ident & (IDENT_CURSED); +} diff --git a/src/object1.hpp b/src/object1.hpp index 187a4d57..c605539b 100644 --- a/src/object1.hpp +++ b/src/object1.hpp @@ -32,3 +32,11 @@ extern bool_ get_item(int *cp, cptr pmt, cptr str, int mode); extern cptr item_activation(object_type *o_ptr,byte num); extern void py_pickup_floor(int pickup); extern void object_gain_level(object_type *o_ptr); +extern byte object_attr(object_type const *o_ptr); +extern byte object_attr_default(object_type *o_ptr); +extern char object_char(object_type const *o_ptr); +extern char object_char_default(object_type const *o_ptr); +extern bool artifact_p(object_type const *o_ptr); +extern bool ego_item_p(object_type const *o_ptr); +extern bool is_ego_p(object_type const *o_ptr, s16b ego); +extern bool cursed_p(object_type const *o_ptr); diff --git a/src/object2.cc b/src/object2.cc index 895b0a9b..c5f4fa44 100644 --- a/src/object2.cc +++ b/src/object2.cc @@ -823,6 +823,17 @@ void object_known(object_type *o_ptr) +/* + * Determine if a given inventory item is "known" + * Test One -- Check for special "known" tag + * Test Two -- Check for "Easy Know" + "Aware" + */ +extern bool object_known_p(object_type const *o_ptr) +{ + return ((o_ptr->ident & (IDENT_KNOWN)) || + (k_info[o_ptr->k_idx].easy_know && k_info[o_ptr->k_idx].aware)); +} + /* @@ -834,6 +845,13 @@ void object_aware(object_type *o_ptr) k_info[o_ptr->k_idx].aware = TRUE; } +/** + * Is the player aware of the effects of the given object? + */ +bool object_aware_p(object_type const *o_ptr) +{ + return k_info[o_ptr->k_idx].aware; +} /* @@ -846,6 +864,14 @@ void object_tried(object_type *o_ptr) } +/** + * Has the given object been "tried"? + */ +bool object_tried_p(object_type const *o_ptr) +{ + return k_info[o_ptr->k_idx].tried; +} + /* * Return the "value" of an "unknown" item diff --git a/src/object2.hpp b/src/object2.hpp index c205334c..52165a7e 100644 --- a/src/object2.hpp +++ b/src/object2.hpp @@ -35,8 +35,11 @@ extern s16b o_pop(void); extern errr get_obj_num_prep(void); extern s16b get_obj_num(int level); extern void object_known(object_type *o_ptr); +extern bool object_known_p(object_type const *o_ptr); extern void object_aware(object_type *o_ptr); +extern bool object_aware_p(object_type const *o_ptr); extern void object_tried(object_type *o_ptr); +extern bool object_tried_p(object_type const *o_ptr); extern s32b object_value(object_type *o_ptr); extern s32b object_value_real(object_type *o_ptr); extern bool_ object_similar(object_type *o_ptr, object_type *j_ptr); diff --git a/src/q_thief.cc b/src/q_thief.cc index 452c6739..896bd553 100644 --- a/src/q_thief.cc +++ b/src/q_thief.cc @@ -4,6 +4,7 @@ #include "hooks.h" #include "init1.hpp" #include "monster2.hpp" +#include "object1.hpp" #include "object2.hpp" #include "spells2.hpp" #include "tables.hpp" diff --git a/src/squelch/condition.cc b/src/squelch/condition.cc index 786a1b29..221ab677 100644 --- a/src/squelch/condition.cc +++ b/src/squelch/condition.cc @@ -7,6 +7,7 @@ #include "tome/squelch/tree_printer.hpp" #include "angband.h" #include "object1.hpp" +#include "object2.hpp" #include "skills.hpp" #include "quark.h" #include "util.hpp" diff --git a/src/squelch/object_status.cc b/src/squelch/object_status.cc index 2d4f07f9..d0293c41 100644 --- a/src/squelch/object_status.cc +++ b/src/squelch/object_status.cc @@ -3,6 +3,7 @@ #include "angband.h" #include "object1.hpp" +#include "object2.hpp" #include "variable.hpp" namespace squelch { |