OSDN Git Service

[fix] #41503 超能力者でゲームを開始しようとするとクラッシュ
[hengband/hengband.git] / src / view / display-lore-drops.c
1 #include "view/display-lore-drops.h"
2 #include "monster-race/race-flags1.h"
3
4 void display_monster_drop_quantity(lore_type *lore_ptr)
5 {
6     lore_ptr->drop_quantity = MAX(lore_ptr->drop_gold, lore_ptr->drop_item);
7     if (lore_ptr->drop_quantity == 1) {
8         hooked_roff(_("一つの", " a"));
9 #ifdef JP
10 #else
11         lore_ptr->sin = TRUE;
12 #endif
13     } else if (lore_ptr->drop_quantity == 2) {
14         hooked_roff(_("一つか二つの", " one or two"));
15     } else {
16         hooked_roff(format(_(" %d 個までの", " up to %d"), lore_ptr->drop_quantity));
17     }
18 }
19
20 void display_monster_drop_quality(lore_type* lore_ptr)
21 {
22     if (lore_ptr->flags1 & RF1_DROP_GREAT) {
23         lore_ptr->drop_quality = _("特別な", " exceptional");
24     } else if (lore_ptr->flags1 & RF1_DROP_GOOD) {
25         lore_ptr->drop_quality = _("上質な", " good");
26 #ifdef JP
27 #else
28         lore_ptr->sin = FALSE;
29 #endif
30     } else {
31         lore_ptr->drop_quality = NULL;
32     }
33 }
34
35 void display_monster_drop_items(lore_type *lore_ptr)
36 {
37     if (lore_ptr->drop_item == 0)
38         return;
39
40 #ifdef JP
41 #else
42     if (lore_ptr->sin)
43         hooked_roff("n");
44
45     lore_ptr->sin = FALSE;
46 #endif
47
48     if (lore_ptr->drop_quality != NULL)
49         hooked_roff(lore_ptr->drop_quality);
50
51     hooked_roff(_("アイテム", " object"));
52 #ifdef JP
53 #else
54     if (lore_ptr->drop_quantity != 1)
55         hooked_roff("s");
56 #endif
57     lore_ptr->drop_quality = _("や", " or");
58 }
59
60 void display_monster_drop_golds(lore_type *lore_ptr)
61 {
62     if (lore_ptr->drop_gold == 0)
63         return;
64
65 #ifdef JP
66 #else
67     if (lore_ptr->drop_quality == NULL)
68         lore_ptr->sin = FALSE;
69
70     if (lore_ptr->sin)
71         hooked_roff("n");
72
73     lore_ptr->sin = FALSE;
74 #endif
75
76     if (lore_ptr->drop_quality != NULL)
77         hooked_roff(lore_ptr->drop_quality);
78
79     hooked_roff(_("財宝", " treasure"));
80 #ifdef JP
81 #else
82     if (lore_ptr->drop_quantity != 1)
83         hooked_roff("s");
84 #endif
85 }
86
87 void display_monster_drops(lore_type *lore_ptr)
88 {
89     if ((lore_ptr->drop_gold == 0) && (lore_ptr->drop_item == 0))
90         return;
91
92     hooked_roff(format(_("%^sは", "%^s may carry"), wd_he[lore_ptr->msex]));
93 #ifdef JP
94 #else
95     lore_ptr->sin = FALSE;
96 #endif
97
98     display_monster_drop_quantity(lore_ptr);
99     display_monster_drop_quality(lore_ptr);
100     display_monster_drop_items(lore_ptr);
101     display_monster_drop_golds(lore_ptr);
102     hooked_roff(_("を持っていることがある。", ".  "));
103 }