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/object-kind.h"
12 #include "system/monster-race-definition.h"
13 #include "system/object-type-definition.h"
16 #include "locale/english.h"
17 #include "monster-race/race-flags1.h"
18 #include "player/player-class.h"
21 static void describe_monster_ball(flavor_type *flavor_ptr)
23 monster_race *r_ptr = &r_info[flavor_ptr->o_ptr->pval];
24 if (!flavor_ptr->known)
27 if (!flavor_ptr->o_ptr->pval) {
28 flavor_ptr->modstr = _(" (空)", " (empty)");
33 sprintf(flavor_ptr->tmp_val2, " (%s)", r_ptr->name.c_str());
34 flavor_ptr->modstr = flavor_ptr->tmp_val2;
36 flavor_ptr->t = format("%s", r_ptr->name.c_str());
37 if (!(r_ptr->flags1 & RF1_UNIQUE)) {
38 sprintf(flavor_ptr->tmp_val2, " (%s%s)", (is_a_vowel(*flavor_ptr->t) ? "an " : "a "), flavor_ptr->t);
39 flavor_ptr->modstr = flavor_ptr->tmp_val2;
41 sprintf(flavor_ptr->tmp_val2, "(%s)", flavor_ptr->t);
42 flavor_ptr->modstr = flavor_ptr->t;
47 static void describe_statue(flavor_type *flavor_ptr)
49 monster_race *r_ptr = &r_info[flavor_ptr->o_ptr->pval];
51 flavor_ptr->modstr = r_ptr->name.c_str();
53 flavor_ptr->t = format("%s", r_ptr->name.c_str());
54 if (!(r_ptr->flags1 & RF1_UNIQUE)) {
55 sprintf(flavor_ptr->tmp_val2, "%s%s", (is_a_vowel(*flavor_ptr->t) ? "an " : "a "), flavor_ptr->t);
56 flavor_ptr->modstr = flavor_ptr->tmp_val2;
58 flavor_ptr->modstr = flavor_ptr->t;
62 static void describe_corpse(flavor_type *flavor_ptr)
64 monster_race *r_ptr = &r_info[flavor_ptr->o_ptr->pval];
65 flavor_ptr->modstr = r_ptr->name.c_str();
67 flavor_ptr->basenm = "#%";
69 if (r_ptr->flags1 & RF1_UNIQUE)
70 flavor_ptr->basenm = "& % of #";
72 flavor_ptr->basenm = "& # %";
76 static void describe_amulet(flavor_type *flavor_ptr)
78 if (flavor_ptr->aware && (flavor_ptr->o_ptr->is_fixed_artifact() || flavor_ptr->k_ptr->gen_flags.has(TRG::INSTA_ART)))
81 flavor_ptr->modstr = flavor_ptr->flavor_k_ptr->flavor_name.c_str();
82 if (!flavor_ptr->flavor)
83 flavor_ptr->basenm = _("%のアミュレット", "& Amulet~ of %");
84 else if (flavor_ptr->aware)
85 flavor_ptr->basenm = _("%の#アミュレット", "& # Amulet~ of %");
87 flavor_ptr->basenm = _("#アミュレット", "& # Amulet~");
90 static void describe_ring(flavor_type *flavor_ptr)
92 if (flavor_ptr->aware && (flavor_ptr->o_ptr->is_fixed_artifact() || flavor_ptr->k_ptr->gen_flags.has(TRG::INSTA_ART)))
95 flavor_ptr->modstr = flavor_ptr->flavor_k_ptr->flavor_name.c_str();
96 if (!flavor_ptr->flavor)
97 flavor_ptr->basenm = _("%の指輪", "& Ring~ of %");
98 else if (flavor_ptr->aware)
99 flavor_ptr->basenm = _("%の#指輪", "& # Ring~ of %");
101 flavor_ptr->basenm = _("#指輪", "& # Ring~");
103 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))
104 flavor_ptr->show_weapon = true;
107 static void describe_staff(flavor_type *flavor_ptr)
109 flavor_ptr->modstr = flavor_ptr->flavor_k_ptr->flavor_name.c_str();
110 if (!flavor_ptr->flavor)
111 flavor_ptr->basenm = _("%の杖", "& Staff~ of %");
112 else if (flavor_ptr->aware)
113 flavor_ptr->basenm = _("%の#杖", "& # Staff~ of %");
115 flavor_ptr->basenm = _("#杖", "& # Staff~");
118 static void describe_wand(flavor_type *flavor_ptr)
120 flavor_ptr->modstr = flavor_ptr->flavor_k_ptr->flavor_name.c_str();
121 if (!flavor_ptr->flavor)
122 flavor_ptr->basenm = _("%の魔法棒", "& Wand~ of %");
123 else if (flavor_ptr->aware)
124 flavor_ptr->basenm = _("%の#魔法棒", "& # Wand~ of %");
126 flavor_ptr->basenm = _("#魔法棒", "& # Wand~");
129 static void describe_rod(flavor_type *flavor_ptr)
131 flavor_ptr->modstr = flavor_ptr->flavor_k_ptr->flavor_name.c_str();
132 if (!flavor_ptr->flavor)
133 flavor_ptr->basenm = _("%のロッド", "& Rod~ of %");
134 else if (flavor_ptr->aware)
135 flavor_ptr->basenm = _("%の#ロッド", "& # Rod~ of %");
137 flavor_ptr->basenm = _("#ロッド", "& # Rod~");
140 static void describe_scroll(flavor_type *flavor_ptr)
142 flavor_ptr->modstr = flavor_ptr->flavor_k_ptr->flavor_name.c_str();
143 if (!flavor_ptr->flavor)
144 flavor_ptr->basenm = _("%の巻物", "& Scroll~ of %");
145 else if (flavor_ptr->aware)
146 flavor_ptr->basenm = _("「#」と書かれた%の巻物", "& Scroll~ titled \"#\" of %");
148 flavor_ptr->basenm = _("「#」と書かれた巻物", "& Scroll~ titled \"#\"");
151 static void describe_potion(flavor_type *flavor_ptr)
153 flavor_ptr->modstr = flavor_ptr->flavor_k_ptr->flavor_name.c_str();
154 if (!flavor_ptr->flavor)
155 flavor_ptr->basenm = _("%の薬", "& Potion~ of %");
156 else if (flavor_ptr->aware)
157 flavor_ptr->basenm = _("%の#薬", "& # Potion~ of %");
159 flavor_ptr->basenm = _("#薬", "& # Potion~");
162 static void describe_food(flavor_type *flavor_ptr)
164 if (flavor_ptr->k_ptr->flavor_name.empty())
167 flavor_ptr->modstr = flavor_ptr->flavor_k_ptr->flavor_name.c_str();
168 if (!flavor_ptr->flavor)
169 flavor_ptr->basenm = _("%のキノコ", "& Mushroom~ of %");
170 else if (flavor_ptr->aware)
171 flavor_ptr->basenm = _("%の#キノコ", "& # Mushroom~ of %");
173 flavor_ptr->basenm = _("#キノコ", "& # Mushroom~");
176 static void describe_book_life(flavor_type *flavor_ptr)
179 flavor_ptr->basenm = "生命の魔法書%";
181 if (mp_ptr->spell_book == TV_LIFE_BOOK)
182 flavor_ptr->basenm = "& Book~ of Life Magic %";
184 flavor_ptr->basenm = "& Life Spellbook~ %";
188 static void describe_book_sorcery(flavor_type *flavor_ptr)
191 flavor_ptr->basenm = "仙術の魔法書%";
193 if (mp_ptr->spell_book == TV_LIFE_BOOK)
194 flavor_ptr->basenm = "& Book~ of Sorcery %";
196 flavor_ptr->basenm = "& Sorcery Spellbook~ %";
200 static void describe_book_nature(flavor_type *flavor_ptr)
203 flavor_ptr->basenm = "自然の魔法書%";
205 if (mp_ptr->spell_book == TV_LIFE_BOOK)
206 flavor_ptr->basenm = "& Book~ of Nature Magic %";
208 flavor_ptr->basenm = "& Nature Spellbook~ %";
212 static void describe_book_chaos(flavor_type *flavor_ptr)
215 flavor_ptr->basenm = "カオスの魔法書%";
217 if (mp_ptr->spell_book == TV_LIFE_BOOK)
218 flavor_ptr->basenm = "& Book~ of Chaos Magic %";
220 flavor_ptr->basenm = "& Chaos Spellbook~ %";
224 static void describe_book_death(flavor_type *flavor_ptr)
227 flavor_ptr->basenm = "暗黒の魔法書%";
229 if (mp_ptr->spell_book == TV_LIFE_BOOK)
230 flavor_ptr->basenm = "& Book~ of Death Magic %";
232 flavor_ptr->basenm = "& Death Spellbook~ %";
236 static void describe_book_trump(flavor_type *flavor_ptr)
239 flavor_ptr->basenm = "トランプの魔法書%";
241 if (mp_ptr->spell_book == TV_LIFE_BOOK)
242 flavor_ptr->basenm = "& Book~ of Trump Magic %";
244 flavor_ptr->basenm = "& Trump Spellbook~ %";
248 static void describe_book_arcane(flavor_type *flavor_ptr)
251 flavor_ptr->basenm = "秘術の魔法書%";
253 if (mp_ptr->spell_book == TV_LIFE_BOOK)
254 flavor_ptr->basenm = "& Book~ of Arcane Magic %";
256 flavor_ptr->basenm = "& Arcane Spellbook~ %";
260 static void describe_book_craft(flavor_type *flavor_ptr)
263 flavor_ptr->basenm = "匠の魔法書%";
265 if (mp_ptr->spell_book == TV_LIFE_BOOK)
266 flavor_ptr->basenm = "& Book~ of Craft Magic %";
268 flavor_ptr->basenm = "& Craft Spellbook~ %";
272 static void describe_book_demon(flavor_type *flavor_ptr)
275 flavor_ptr->basenm = "悪魔の魔法書%";
277 if (mp_ptr->spell_book == TV_LIFE_BOOK)
278 flavor_ptr->basenm = "& Book~ of Daemon Magic %";
280 flavor_ptr->basenm = "& Daemon Spellbook~ %";
284 static void describe_book_crusade(flavor_type *flavor_ptr)
287 flavor_ptr->basenm = "破邪の魔法書%";
289 if (mp_ptr->spell_book == TV_LIFE_BOOK)
290 flavor_ptr->basenm = "& Book~ of Crusade Magic %";
292 flavor_ptr->basenm = "& Crusade Spellbook~ %";
296 static void describe_book_hex(flavor_type *flavor_ptr)
299 flavor_ptr->basenm = "呪術の魔法書%";
301 if (mp_ptr->spell_book == TV_LIFE_BOOK)
302 flavor_ptr->basenm = "& Book~ of Hex Magic %";
304 flavor_ptr->basenm = "& Hex Spellbook~ %";
308 void switch_tval_description(flavor_type *flavor_ptr)
310 switch (flavor_ptr->o_ptr->tval) {
312 flavor_ptr->basenm = _("(なし)", "(Nothing)");
323 describe_monster_ball(flavor_ptr);
327 describe_statue(flavor_ptr);
330 describe_corpse(flavor_ptr);
340 flavor_ptr->show_weapon = true;
351 flavor_ptr->show_armour = true;
356 describe_amulet(flavor_ptr);
359 describe_ring(flavor_ptr);
364 describe_staff(flavor_ptr);
367 describe_wand(flavor_ptr);
370 describe_rod(flavor_ptr);
373 describe_scroll(flavor_ptr);
376 describe_potion(flavor_ptr);
379 describe_food(flavor_ptr);
382 flavor_ptr->basenm = _("羊皮紙 - %", "& Parchment~ - %");
385 describe_book_life(flavor_ptr);
387 case TV_SORCERY_BOOK:
388 describe_book_sorcery(flavor_ptr);
391 describe_book_nature(flavor_ptr);
394 describe_book_chaos(flavor_ptr);
397 describe_book_death(flavor_ptr);
400 describe_book_trump(flavor_ptr);
403 describe_book_arcane(flavor_ptr);
406 describe_book_craft(flavor_ptr);
409 describe_book_demon(flavor_ptr);
411 case TV_CRUSADE_BOOK:
412 describe_book_crusade(flavor_ptr);
415 flavor_ptr->basenm = _("歌集%", "& Song Book~ %");
417 case TV_HISSATSU_BOOK:
418 flavor_ptr->basenm = _("& 武芸の書%", "Book~ of Kendo %");
421 describe_book_hex(flavor_ptr);
424 strcpy(flavor_ptr->buf, flavor_ptr->basenm);
427 strcpy(flavor_ptr->buf, _("(なし)", "(nothing)"));