OSDN Git Service

[Refactor] #39076 /* Check for quest completion */ と /* Reset sleep counter */ を削除。
[hengband/hengband.git] / src / objectkind-hook.c
1 #include "angband.h"
2 #include "objectkind-hook.h"
3
4 /*!
5  * @brief オブジェクトがクロークかどうかを判定する /
6  * Hack -- determine if a template is Cloak
7  * @param k_idx 判定したいオブジェクトのベースアイテムID
8  * @return オブジェクトがクロークならばTRUEを返す
9  */
10 bool kind_is_cloak(KIND_OBJECT_IDX k_idx)
11 {
12         object_kind *k_ptr = &k_info[k_idx];
13
14         /* Analyze the item type */
15         if (k_ptr->tval == TV_CLOAK)
16         {
17                 return (TRUE);
18         }
19
20         /* Assume not good */
21         return (FALSE);
22 }
23
24
25 /*!
26  * @brief オブジェクトが竿状武器かどうかを判定する /
27  * Hack -- determine if a template is Polearm
28  * @param k_idx 判定したいオブジェクトのベースアイテムID
29  * @return オブジェクトが竿状武器ならばTRUEを返す
30  */
31 bool kind_is_polearm(KIND_OBJECT_IDX k_idx)
32 {
33         object_kind *k_ptr = &k_info[k_idx];
34
35         /* Analyze the item type */
36         if (k_ptr->tval == TV_POLEARM)
37         {
38                 return (TRUE);
39         }
40
41         /* Assume not good */
42         return (FALSE);
43 }
44
45
46 /*!
47  * @brief オブジェクトが剣かどうかを判定する /
48  * Hack -- determine if a template is Sword
49  * @param k_idx 判定したいオブジェクトのベースアイテムID
50  * @return オブジェクトが剣ならばTRUEを返す
51  */
52 bool kind_is_sword(KIND_OBJECT_IDX k_idx)
53 {
54         object_kind *k_ptr = &k_info[k_idx];
55
56         /* Analyze the item type */
57         if ((k_ptr->tval == TV_SWORD) && (k_ptr->sval > 2))
58         {
59                 return (TRUE);
60         }
61
62         /* Assume not good */
63         return (FALSE);
64 }
65
66
67 /*!
68  * @brief オブジェクトが魔法書かどうかを判定する /
69  * Hack -- determine if a template is Book
70  * @param k_idx 判定したいオブジェクトのベースアイテムID
71  * @return オブジェクトが魔法書ならばTRUEを返す
72  */
73 bool kind_is_book(KIND_OBJECT_IDX k_idx)
74 {
75         object_kind *k_ptr = &k_info[k_idx];
76
77         /* Analyze the item type */
78         if ((k_ptr->tval >= TV_LIFE_BOOK) && (k_ptr->tval <= TV_CRUSADE_BOOK))
79         {
80                 return (TRUE);
81         }
82
83         /* Assume not good */
84         return (FALSE);
85 }
86
87
88 /*!
89  * @brief オブジェクトがベースアイテム時点でGOODかどうかを判定する /
90  * Hack -- determine if a template is Good book
91  * @param k_idx 判定したいオブジェクトのベースアイテムID
92  * @return オブジェクトがベースアイテム時点でGOODなアイテムならばTRUEを返す
93  */
94 bool kind_is_good_book(KIND_OBJECT_IDX k_idx)
95 {
96         object_kind *k_ptr = &k_info[k_idx];
97
98         /* Analyze the item type */
99         if ((k_ptr->tval >= TV_LIFE_BOOK) && (k_ptr->tval <= TV_CRUSADE_BOOK) && (k_ptr->tval != TV_ARCANE_BOOK) && (k_ptr->sval > 1))
100         {
101                 return (TRUE);
102         }
103
104         /* Assume not good */
105         return (FALSE);
106 }
107
108
109 /*!
110  * @brief オブジェクトが鎧かどうかを判定する /
111  * Hack -- determine if a template is Armor
112  * @param k_idx 判定したいオブジェクトのベースアイテムID
113  * @return オブジェクトが鎧ならばTRUEを返す
114  */
115 bool kind_is_armor(KIND_OBJECT_IDX k_idx)
116 {
117         object_kind *k_ptr = &k_info[k_idx];
118
119         /* Analyze the item type */
120         if (k_ptr->tval == TV_HARD_ARMOR)
121         {
122                 return (TRUE);
123         }
124
125         /* Assume not good */
126         return (FALSE);
127 }
128
129
130 /*!
131  * @brief オブジェクトが打撃武器かどうかを判定する /
132  * Hack -- determine if a template is hafted weapon
133  * @param k_idx 判定したいオブジェクトのベースアイテムID
134  * @return オブジェクトが打撃武器ならばTRUEを返す
135  */
136 bool kind_is_hafted(KIND_OBJECT_IDX k_idx)
137 {
138         object_kind *k_ptr = &k_info[k_idx];
139
140         /* Analyze the item type */
141         if (k_ptr->tval == TV_HAFTED)
142         {
143                 return (TRUE);
144         }
145
146         /* Assume not good */
147         return (FALSE);
148 }
149
150 /*
151  * Hack -- determine if a template is potion
152  */
153 bool kind_is_potion(KIND_OBJECT_IDX k_idx)
154 {
155         return k_info[k_idx].tval == TV_POTION;
156 }
157
158 /*!
159  * @brief ベースアイテムが上質として扱われるかどうかを返す。
160  * Hack -- determine if a template is "good"
161  * @param k_idx 判定したいベースアイテムのID
162  * @return ベースアイテムが上質ならばTRUEを返す。
163  */
164 bool kind_is_good(KIND_OBJECT_IDX k_idx)
165 {
166         object_kind *k_ptr = &k_info[k_idx];
167
168         /* Analyze the item type */
169         switch (k_ptr->tval)
170         {
171                 /* Armor -- Good unless damaged */
172         case TV_HARD_ARMOR:
173         case TV_SOFT_ARMOR:
174         case TV_DRAG_ARMOR:
175         case TV_SHIELD:
176         case TV_CLOAK:
177         case TV_BOOTS:
178         case TV_GLOVES:
179         case TV_HELM:
180         case TV_CROWN:
181         {
182                 if (k_ptr->to_a < 0) return (FALSE);
183                 return (TRUE);
184         }
185
186         /* Weapons -- Good unless damaged */
187         case TV_BOW:
188         case TV_SWORD:
189         case TV_HAFTED:
190         case TV_POLEARM:
191         case TV_DIGGING:
192         {
193                 if (k_ptr->to_h < 0) return (FALSE);
194                 if (k_ptr->to_d < 0) return (FALSE);
195                 return (TRUE);
196         }
197
198         /* Ammo -- Arrows/Bolts are good */
199         case TV_BOLT:
200         case TV_ARROW:
201         {
202                 return (TRUE);
203         }
204
205         /* Books -- High level books are good (except Arcane books) */
206         case TV_LIFE_BOOK:
207         case TV_SORCERY_BOOK:
208         case TV_NATURE_BOOK:
209         case TV_CHAOS_BOOK:
210         case TV_DEATH_BOOK:
211         case TV_TRUMP_BOOK:
212         case TV_CRAFT_BOOK:
213         case TV_DAEMON_BOOK:
214         case TV_CRUSADE_BOOK:
215         case TV_MUSIC_BOOK:
216         case TV_HISSATSU_BOOK:
217         case TV_HEX_BOOK:
218         {
219                 if (k_ptr->sval >= SV_BOOK_MIN_GOOD) return (TRUE);
220                 return (FALSE);
221         }
222
223         /* Rings -- Rings of Speed are good */
224         case TV_RING:
225         {
226                 if (k_ptr->sval == SV_RING_SPEED) return (TRUE);
227                 if (k_ptr->sval == SV_RING_LORDLY) return (TRUE);
228                 return (FALSE);
229         }
230
231         /* Amulets -- Amulets of the Magi and Resistance are good */
232         case TV_AMULET:
233         {
234                 if (k_ptr->sval == SV_AMULET_THE_MAGI) return (TRUE);
235                 if (k_ptr->sval == SV_AMULET_RESISTANCE) return (TRUE);
236                 return (FALSE);
237         }
238         }
239
240         /* Assume not good */
241         return (FALSE);
242 }