OSDN Git Service

Merge remote-tracking branch 'remotes/origin/For2.2.2-Fix-Hourier' into For2.2.2...
[hengband/hengband.git] / src / monster-attack / monster-attack-describer.c
1 /*!
2  * @brief モンスターの打撃種別を記述すると共に、切り傷/朦朧値を追加する
3  * @date 2020/05/31
4  * @author Hourier
5  */
6
7 #include "monster-attack/monster-attack-describer.h"
8 #include "monster-attack/insults-moans.h"
9 #include "monster-race/race-indice-types.h"
10 #include "main/sound-definitions-table.h"
11
12 static void show_jaian_song(monap_type *monap_ptr)
13 {
14 #ifdef JP
15     switch (randint1(15)) {
16     case 1:
17     case 6:
18     case 11:
19         monap_ptr->act = "「♪お~れはジャイアン~~ガ~キだいしょう~」";
20         break;
21     case 2:
22         monap_ptr->act = "「♪て~んかむ~てきのお~とこだぜ~~」";
23         break;
24     case 3:
25         monap_ptr->act = "「♪の~び太スネ夫はメじゃないよ~~」";
26         break;
27     case 4:
28         monap_ptr->act = "「♪け~んかスポ~ツ~どんとこい~」";
29         break;
30     case 5:
31         monap_ptr->act = "「♪うた~も~~う~まいぜ~まかしとけ~」";
32         break;
33     case 7:
34         monap_ptr->act = "「♪ま~ちいちば~んのに~んきもの~~」";
35         break;
36     case 8:
37         monap_ptr->act = "「♪べんきょうしゅくだいメじゃないよ~~」";
38         break;
39     case 9:
40         monap_ptr->act = "「♪きはやさし~くて~ち~からもち~」";
41         break;
42     case 10:
43         monap_ptr->act = "「♪かお~も~~スタイルも~バツグンさ~」";
44         break;
45     case 12:
46         monap_ptr->act = "「♪がっこうい~ちの~あ~ばれんぼう~~」";
47         break;
48     case 13:
49         monap_ptr->act = "「♪ド~ラもドラミもメじゃないよ~~」";
50         break;
51     case 14:
52         monap_ptr->act = "「♪よじげんぽけっと~な~くたって~」";
53         break;
54     case 15:
55         monap_ptr->act = "「♪あし~の~~ながさ~は~まけないぜ~」";
56         break;
57     }
58 #else
59     monap_ptr->act = "horribly sings 'I AM GIAAAAAN. THE BOOOSS OF THE KIIIIDS.'";
60 #endif
61 }
62
63 static void monster_attack_show(monap_type *monap_ptr)
64 {
65 #ifdef JP
66     monap_ptr->abbreviate = -1;
67 #endif
68     if (monap_ptr->m_ptr->r_idx == MON_JAIAN) {
69         show_jaian_song(monap_ptr);
70     } else {
71         if (one_in_(3))
72             monap_ptr->act = _("は♪僕らは楽しい家族♪と歌っている。", "sings 'We are a happy family.'");
73         else
74             monap_ptr->act = _("は♪アイ ラブ ユー、ユー ラブ ミー♪と歌っている。", "sings 'I love you, you love me.'");
75     }
76
77     sound(SOUND_SHOW);
78 }
79
80 void describe_monster_attack_method(monap_type *monap_ptr)
81 {
82     switch (monap_ptr->method) {
83     case RBM_HIT: {
84         monap_ptr->act = _("殴られた。", "hits you.");
85         monap_ptr->do_cut = monap_ptr->do_stun = 1;
86         monap_ptr->touched = TRUE;
87         sound(SOUND_HIT);
88         break;
89     }
90     case RBM_TOUCH: {
91         monap_ptr->act = _("触られた。", "touches you.");
92         monap_ptr->touched = TRUE;
93         sound(SOUND_TOUCH);
94         break;
95     }
96     case RBM_PUNCH: {
97         monap_ptr->act = _("パンチされた。", "punches you.");
98         monap_ptr->touched = TRUE;
99         monap_ptr->do_stun = 1;
100         sound(SOUND_HIT);
101         break;
102     }
103     case RBM_KICK: {
104         monap_ptr->act = _("蹴られた。", "kicks you.");
105         monap_ptr->touched = TRUE;
106         monap_ptr->do_stun = 1;
107         sound(SOUND_HIT);
108         break;
109     }
110     case RBM_CLAW: {
111         monap_ptr->act = _("ひっかかれた。", "claws you.");
112         monap_ptr->touched = TRUE;
113         monap_ptr->do_cut = 1;
114         sound(SOUND_CLAW);
115         break;
116     }
117     case RBM_BITE: {
118         monap_ptr->act = _("噛まれた。", "bites you.");
119         monap_ptr->do_cut = 1;
120         monap_ptr->touched = TRUE;
121         sound(SOUND_BITE);
122         break;
123     }
124     case RBM_STING: {
125         monap_ptr->act = _("刺された。", "stings you.");
126         monap_ptr->touched = TRUE;
127         sound(SOUND_STING);
128         break;
129     }
130     case RBM_SLASH: {
131         monap_ptr->act = _("斬られた。", "slashes you.");
132         monap_ptr->touched = TRUE;
133         monap_ptr->do_cut = 1;
134         sound(SOUND_CLAW);
135         break;
136     }
137     case RBM_BUTT: {
138         monap_ptr->act = _("角で突かれた。", "butts you.");
139         monap_ptr->do_stun = 1;
140         monap_ptr->touched = TRUE;
141         sound(SOUND_HIT);
142         break;
143     }
144     case RBM_CRUSH: {
145         monap_ptr->act = _("体当たりされた。", "crushes you.");
146         monap_ptr->do_stun = 1;
147         monap_ptr->touched = TRUE;
148         sound(SOUND_CRUSH);
149         break;
150     }
151     case RBM_ENGULF: {
152         monap_ptr->act = _("飲み込まれた。", "engulfs you.");
153         monap_ptr->touched = TRUE;
154         sound(SOUND_CRUSH);
155         break;
156     }
157     case RBM_CHARGE: {
158 #ifdef JP
159         monap_ptr->abbreviate = -1;
160 #endif
161         monap_ptr->act = _("は請求書をよこした。", "charges you.");
162         monap_ptr->touched = TRUE;
163
164         /* このコメントはジョークが効いているので残しておく / Note! This is "charges", not "charges at". */
165         sound(SOUND_BUY);
166         break;
167     }
168     case RBM_CRAWL: {
169 #ifdef JP
170         monap_ptr->abbreviate = -1;
171 #endif
172         monap_ptr->act = _("が体の上を這い回った。", "crawls on you.");
173         monap_ptr->touched = TRUE;
174         sound(SOUND_SLIME);
175         break;
176     }
177     case RBM_DROOL: {
178         monap_ptr->act = _("よだれをたらされた。", "drools on you.");
179         sound(SOUND_SLIME);
180         break;
181     }
182     case RBM_SPIT: {
183         monap_ptr->act = _("唾を吐かれた。", "spits on you.");
184         sound(SOUND_SLIME);
185         break;
186     }
187     case RBM_EXPLODE: {
188 #ifdef JP
189         monap_ptr->abbreviate = -1;
190 #endif
191         monap_ptr->act = _("は爆発した。", "explodes.");
192         monap_ptr->explode = TRUE;
193         break;
194     }
195     case RBM_GAZE: {
196         monap_ptr->act = _("にらまれた。", "gazes at you.");
197         break;
198     }
199     case RBM_WAIL: {
200         monap_ptr->act = _("泣き叫ばれた。", "wails at you.");
201         sound(SOUND_WAIL);
202         break;
203     }
204     case RBM_SPORE: {
205         monap_ptr->act = _("胞子を飛ばされた。", "releases spores at you.");
206         sound(SOUND_SLIME);
207         break;
208     }
209     case RBM_XXX4: {
210 #ifdef JP
211         monap_ptr->abbreviate = -1;
212 #endif
213         monap_ptr->act = _("が XXX4 を発射した。", "projects XXX4's at you.");
214         break;
215     }
216     case RBM_BEG: {
217         monap_ptr->act = _("金をせがまれた。", "begs you for money.");
218         sound(SOUND_MOAN);
219         break;
220     }
221     case RBM_INSULT: {
222 #ifdef JP
223         monap_ptr->abbreviate = -1;
224 #endif
225         monap_ptr->act = desc_insult[randint0(monap_ptr->m_ptr->r_idx == MON_DEBBY ? 10 : 8)];
226         sound(SOUND_MOAN);
227         break;
228     }
229     case RBM_MOAN: {
230 #ifdef JP
231         monap_ptr->abbreviate = -1;
232 #endif
233         monap_ptr->act = desc_moan[randint0(4)];
234         sound(SOUND_MOAN);
235         break;
236     }
237     case RBM_SHOW: {
238         monster_attack_show(monap_ptr);
239         break;
240     }
241     }
242 }