OSDN Git Service

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