2 * @brief 個々のアイテム種別について、未鑑定名/鑑定後の正式な名前を取得する処理
7 #include "flavor/tval-description-switcher.h"
8 #include "flavor/flavor-util.h"
9 #include "monster-race/monster-race.h"
10 #include "object-enchant/trg-types.h"
11 #include "object-hook/hook-enchant.h"
12 #include "object/object-kind.h"
15 #include "locale/english.h"
16 #include "monster-race/race-flags1.h"
17 #include "player/player-class.h"
20 static void describe_monster_ball(flavor_type *flavor_ptr)
22 monster_race *r_ptr = &r_info[flavor_ptr->o_ptr->pval];
23 if (!flavor_ptr->known)
26 if (!flavor_ptr->o_ptr->pval) {
27 flavor_ptr->modstr = _(" (空)", " (empty)");
32 sprintf(flavor_ptr->tmp_val2, " (%s)", r_name + r_ptr->name);
33 flavor_ptr->modstr = flavor_ptr->tmp_val2;
35 flavor_ptr->t = r_name + r_ptr->name;
36 if (!(r_ptr->flags1 & RF1_UNIQUE)) {
37 sprintf(flavor_ptr->tmp_val2, " (%s%s)", (is_a_vowel(*flavor_ptr->t) ? "an " : "a "), flavor_ptr->t);
38 flavor_ptr->modstr = flavor_ptr->tmp_val2;
40 sprintf(flavor_ptr->tmp_val2, "(%s)", flavor_ptr->t);
41 flavor_ptr->modstr = flavor_ptr->t;
46 static void describe_statue(flavor_type *flavor_ptr)
48 monster_race *r_ptr = &r_info[flavor_ptr->o_ptr->pval];
50 flavor_ptr->modstr = r_name + r_ptr->name;
52 flavor_ptr->t = r_name + r_ptr->name;
53 if (!(r_ptr->flags1 & RF1_UNIQUE)) {
54 sprintf(flavor_ptr->tmp_val2, "%s%s", (is_a_vowel(*flavor_ptr->t) ? "an " : "a "), flavor_ptr->t);
55 flavor_ptr->modstr = flavor_ptr->tmp_val2;
57 flavor_ptr->modstr = flavor_ptr->t;
61 static void describe_corpse(flavor_type *flavor_ptr)
63 monster_race *r_ptr = &r_info[flavor_ptr->o_ptr->pval];
64 flavor_ptr->modstr = r_name + r_ptr->name;
66 flavor_ptr->basenm = "#%";
68 if (r_ptr->flags1 & RF1_UNIQUE)
69 flavor_ptr->basenm = "& % of #";
71 flavor_ptr->basenm = "& # %";
75 static void describe_amulet(flavor_type *flavor_ptr)
77 if (flavor_ptr->aware && (object_is_fixed_artifact(flavor_ptr->o_ptr) || ((flavor_ptr->k_ptr->gen_flags & TRG_INSTA_ART) != 0)))
80 flavor_ptr->modstr = k_name + flavor_ptr->flavor_k_ptr->flavor_name;
81 if (!flavor_ptr->flavor)
82 flavor_ptr->basenm = _("%のアミュレット", "& Amulet~ of %");
83 else if (flavor_ptr->aware)
84 flavor_ptr->basenm = _("%の#アミュレット", "& # Amulet~ of %");
86 flavor_ptr->basenm = _("#アミュレット", "& # Amulet~");
89 static void describe_ring(flavor_type *flavor_ptr)
91 if (flavor_ptr->aware && (object_is_fixed_artifact(flavor_ptr->o_ptr) || (flavor_ptr->k_ptr->gen_flags & TRG_INSTA_ART) != 0))
94 flavor_ptr->modstr = k_name + flavor_ptr->flavor_k_ptr->flavor_name;
95 if (!flavor_ptr->flavor)
96 flavor_ptr->basenm = _("%の指輪", "& Ring~ of %");
97 else if (flavor_ptr->aware)
98 flavor_ptr->basenm = _("%の#指輪", "& # Ring~ of %");
100 flavor_ptr->basenm = _("#指輪", "& # Ring~");
102 if (!flavor_ptr->k_ptr->to_h && !flavor_ptr->k_ptr->to_d && (flavor_ptr->o_ptr->to_h || flavor_ptr->o_ptr->to_d))
103 flavor_ptr->show_weapon = TRUE;
106 static void describe_staff(flavor_type *flavor_ptr)
108 flavor_ptr->modstr = k_name + flavor_ptr->flavor_k_ptr->flavor_name;
109 if (!flavor_ptr->flavor)
110 flavor_ptr->basenm = _("%の杖", "& Staff~ of %");
111 else if (flavor_ptr->aware)
112 flavor_ptr->basenm = _("%の#杖", "& # Staff~ of %");
114 flavor_ptr->basenm = _("#杖", "& # Staff~");
117 static void describe_wand(flavor_type *flavor_ptr)
119 flavor_ptr->modstr = k_name + flavor_ptr->flavor_k_ptr->flavor_name;
120 if (!flavor_ptr->flavor)
121 flavor_ptr->basenm = _("%の魔法棒", "& Wand~ of %");
122 else if (flavor_ptr->aware)
123 flavor_ptr->basenm = _("%の#魔法棒", "& # Wand~ of %");
125 flavor_ptr->basenm = _("#魔法棒", "& # Wand~");
128 static void describe_rod(flavor_type *flavor_ptr)
130 flavor_ptr->modstr = k_name + flavor_ptr->flavor_k_ptr->flavor_name;
131 if (!flavor_ptr->flavor)
132 flavor_ptr->basenm = _("%のロッド", "& Rod~ of %");
133 else if (flavor_ptr->aware)
134 flavor_ptr->basenm = _("%の#ロッド", "& # Rod~ of %");
136 flavor_ptr->basenm = _("#ロッド", "& # Rod~");
139 static void describe_scroll(flavor_type *flavor_ptr)
141 flavor_ptr->modstr = k_name + flavor_ptr->flavor_k_ptr->flavor_name;
142 if (!flavor_ptr->flavor)
143 flavor_ptr->basenm = _("%の巻物", "& Scroll~ of %");
144 else if (flavor_ptr->aware)
145 flavor_ptr->basenm = _("「#」と書かれた%の巻物", "& Scroll~ titled \"#\" of %");
147 flavor_ptr->basenm = _("「#」と書かれた巻物", "& Scroll~ titled \"#\"");
150 static void describe_potion(flavor_type *flavor_ptr)
152 flavor_ptr->modstr = k_name + flavor_ptr->flavor_k_ptr->flavor_name;
153 if (!flavor_ptr->flavor)
154 flavor_ptr->basenm = _("%の薬", "& Potion~ of %");
155 else if (flavor_ptr->aware)
156 flavor_ptr->basenm = _("%の#薬", "& # Potion~ of %");
158 flavor_ptr->basenm = _("#薬", "& # Potion~");
161 static void describe_food(flavor_type *flavor_ptr)
163 if (!flavor_ptr->k_ptr->flavor_name)
166 flavor_ptr->modstr = k_name + flavor_ptr->flavor_k_ptr->flavor_name;
167 if (!flavor_ptr->flavor)
168 flavor_ptr->basenm = _("%のキノコ", "& Mushroom~ of %");
169 else if (flavor_ptr->aware)
170 flavor_ptr->basenm = _("%の#キノコ", "& # Mushroom~ of %");
172 flavor_ptr->basenm = _("#キノコ", "& # Mushroom~");
175 static void describe_book_life(flavor_type *flavor_ptr)
178 flavor_ptr->basenm = "生命の魔法書%";
180 if (mp_ptr->spell_book == TV_LIFE_BOOK)
181 flavor_ptr->basenm = "& Book~ of Life Magic %";
183 flavor_ptr->basenm = "& Life Spellbook~ %";
187 static void describe_book_sorcery(flavor_type *flavor_ptr)
190 flavor_ptr->basenm = "仙術の魔法書%";
192 if (mp_ptr->spell_book == TV_LIFE_BOOK)
193 flavor_ptr->basenm = "& Book~ of Sorcery %";
195 flavor_ptr->basenm = "& Sorcery Spellbook~ %";
199 static void describe_book_nature(flavor_type *flavor_ptr)
202 flavor_ptr->basenm = "自然の魔法書%";
204 if (mp_ptr->spell_book == TV_LIFE_BOOK)
205 flavor_ptr->basenm = "& Book~ of Nature Magic %";
207 flavor_ptr->basenm = "& Nature Spellbook~ %";
211 static void describe_book_chaos(flavor_type *flavor_ptr)
214 flavor_ptr->basenm = "カオスの魔法書%";
216 if (mp_ptr->spell_book == TV_LIFE_BOOK)
217 flavor_ptr->basenm = "& Book~ of Chaos Magic %";
219 flavor_ptr->basenm = "& Chaos Spellbook~ %";
223 static void describe_book_death(flavor_type *flavor_ptr)
226 flavor_ptr->basenm = "暗黒の魔法書%";
228 if (mp_ptr->spell_book == TV_LIFE_BOOK)
229 flavor_ptr->basenm = "& Book~ of Death Magic %";
231 flavor_ptr->basenm = "& Death Spellbook~ %";
235 static void describe_book_trump(flavor_type *flavor_ptr)
238 flavor_ptr->basenm = "トランプの魔法書%";
240 if (mp_ptr->spell_book == TV_LIFE_BOOK)
241 flavor_ptr->basenm = "& Book~ of Trump Magic %";
243 flavor_ptr->basenm = "& Trump Spellbook~ %";
247 static void describe_book_arcane(flavor_type *flavor_ptr)
250 flavor_ptr->basenm = "秘術の魔法書%";
252 if (mp_ptr->spell_book == TV_LIFE_BOOK)
253 flavor_ptr->basenm = "& Book~ of Arcane Magic %";
255 flavor_ptr->basenm = "& Arcane Spellbook~ %";
259 static void describe_book_craft(flavor_type *flavor_ptr)
262 flavor_ptr->basenm = "匠の魔法書%";
264 if (mp_ptr->spell_book == TV_LIFE_BOOK)
265 flavor_ptr->basenm = "& Book~ of Craft Magic %";
267 flavor_ptr->basenm = "& Craft Spellbook~ %";
271 static void describe_book_demon(flavor_type *flavor_ptr)
274 flavor_ptr->basenm = "悪魔の魔法書%";
276 if (mp_ptr->spell_book == TV_LIFE_BOOK)
277 flavor_ptr->basenm = "& Book~ of Daemon Magic %";
279 flavor_ptr->basenm = "& Daemon Spellbook~ %";
283 static void describe_book_crusade(flavor_type *flavor_ptr)
286 flavor_ptr->basenm = "破邪の魔法書%";
288 if (mp_ptr->spell_book == TV_LIFE_BOOK)
289 flavor_ptr->basenm = "& Book~ of Crusade Magic %";
291 flavor_ptr->basenm = "& Crusade Spellbook~ %";
295 static void describe_book_hex(flavor_type *flavor_ptr)
298 flavor_ptr->basenm = "呪術の魔法書%";
300 if (mp_ptr->spell_book == TV_LIFE_BOOK)
301 flavor_ptr->basenm = "& Book~ of Hex Magic %";
303 flavor_ptr->basenm = "& Hex Spellbook~ %";
307 void switch_tval_description(flavor_type *flavor_ptr)
309 switch (flavor_ptr->o_ptr->tval) {
319 describe_monster_ball(flavor_ptr);
323 describe_statue(flavor_ptr);
326 describe_corpse(flavor_ptr);
336 flavor_ptr->show_weapon = TRUE;
347 flavor_ptr->show_armour = TRUE;
352 describe_amulet(flavor_ptr);
355 describe_ring(flavor_ptr);
360 describe_staff(flavor_ptr);
363 describe_wand(flavor_ptr);
366 describe_rod(flavor_ptr);
369 describe_scroll(flavor_ptr);
372 describe_potion(flavor_ptr);
375 describe_food(flavor_ptr);
378 flavor_ptr->basenm = _("羊皮紙 - %", "& Parchment~ - %");
381 describe_book_life(flavor_ptr);
383 case TV_SORCERY_BOOK:
384 describe_book_sorcery(flavor_ptr);
387 describe_book_nature(flavor_ptr);
390 describe_book_chaos(flavor_ptr);
393 describe_book_death(flavor_ptr);
396 describe_book_trump(flavor_ptr);
399 describe_book_arcane(flavor_ptr);
402 describe_book_craft(flavor_ptr);
405 describe_book_demon(flavor_ptr);
407 case TV_CRUSADE_BOOK:
408 describe_book_crusade(flavor_ptr);
411 flavor_ptr->basenm = _("歌集%", "& Song Book~ %");
413 case TV_HISSATSU_BOOK:
414 flavor_ptr->basenm = _("& 武芸の書%", "Book~ of Kendo %");
417 describe_book_hex(flavor_ptr);
420 strcpy(flavor_ptr->buf, flavor_ptr->basenm);
423 strcpy(flavor_ptr->buf, _("(なし)", "(nothing)"));