OSDN Git Service

[Refactor] rbm_type を enum class 化しつつ RaceBlowMethodType に改名。
[hengbandforosx/hengbandosx.git] / src / lore / combat-types-setter.cpp
1 #include "lore/combat-types-setter.h"
2 #include "lore/lore-util.h"
3 #include "monster-attack/monster-attack-effect.h"
4 #include "monster-attack/monster-attack-types.h"
5 #include "system/monster-race-definition.h"
6 #include "term/term-color-types.h"
7
8 void set_monster_blow_method(lore_type *lore_ptr, int m)
9 {
10     RaceBlowMethodType method = lore_ptr->r_ptr->blow[m].method;
11     lore_ptr->p = nullptr;
12     lore_ptr->pc = TERM_WHITE;
13     switch (method) {
14     case RaceBlowMethodType::HIT:
15         lore_ptr->p = _("殴る", "hit");
16         lore_ptr->pc = TERM_L_WHITE;
17         break;
18     case RaceBlowMethodType::TOUCH:
19         lore_ptr->p = _("触る", "touch");
20         break;
21     case RaceBlowMethodType::PUNCH:
22         lore_ptr->p = _("パンチする", "punch");
23         lore_ptr->pc = TERM_L_WHITE;
24         break;
25     case RaceBlowMethodType::KICK:
26         lore_ptr->p = _("蹴る", "kick");
27         lore_ptr->pc = TERM_L_WHITE;
28         break;
29     case RaceBlowMethodType::CLAW:
30         lore_ptr->p = _("ひっかく", "claw");
31         lore_ptr->pc = TERM_L_UMBER;
32         break;
33     case RaceBlowMethodType::BITE:
34         lore_ptr->p = _("噛む", "bite");
35         lore_ptr->pc = TERM_L_UMBER;
36         break;
37     case RaceBlowMethodType::STING:
38         lore_ptr->p = _("刺す", "sting");
39         break;
40     case RaceBlowMethodType::SLASH:
41         lore_ptr->p = _("斬る", "slash");
42         lore_ptr->pc = TERM_L_UMBER;
43         break;
44     case RaceBlowMethodType::BUTT:
45         lore_ptr->p = _("角で突く", "butt");
46         lore_ptr->pc = TERM_L_WHITE;
47         break;
48     case RaceBlowMethodType::CRUSH:
49         lore_ptr->p = _("体当たりする", "crush");
50         lore_ptr->pc = TERM_L_WHITE;
51         break;
52     case RaceBlowMethodType::ENGULF:
53         lore_ptr->p = _("飲み込む", "engulf");
54         break;
55     case RaceBlowMethodType::CHARGE:
56         lore_ptr->p = _("請求書をよこす", "charge");
57         break;
58     case RaceBlowMethodType::CRAWL:
59         lore_ptr->p = _("体の上を這い回る", "crawl on you");
60         break;
61     case RaceBlowMethodType::DROOL:
62         lore_ptr->p = _("よだれをたらす", "drool on you");
63         lore_ptr->pc = TERM_SLATE;
64         break;
65     case RaceBlowMethodType::SPIT:
66         lore_ptr->p = _("つばを吐く", "spit");
67         lore_ptr->pc = TERM_SLATE;
68         break;
69     case RaceBlowMethodType::EXPLODE:
70         lore_ptr->p = _("爆発する", "explode");
71         lore_ptr->pc = TERM_L_BLUE;
72         break;
73     case RaceBlowMethodType::GAZE:
74         lore_ptr->p = _("にらむ", "gaze");
75         lore_ptr->pc = TERM_SLATE;
76         break;
77     case RaceBlowMethodType::WAIL:
78         lore_ptr->p = _("泣き叫ぶ", "wail");
79         lore_ptr->pc = TERM_SLATE;
80         break;
81     case RaceBlowMethodType::SPORE:
82         lore_ptr->p = _("胞子を飛ばす", "release spores");
83         lore_ptr->pc = TERM_SLATE;
84         break;
85     case RaceBlowMethodType::XXX4:
86         break;
87     case RaceBlowMethodType::BEG:
88         lore_ptr->p = _("金をせがむ", "beg");
89         lore_ptr->pc = TERM_SLATE;
90         break;
91     case RaceBlowMethodType::INSULT:
92         lore_ptr->p = _("侮辱する", "insult");
93         lore_ptr->pc = TERM_SLATE;
94         break;
95     case RaceBlowMethodType::MOAN:
96         lore_ptr->p = _("うめく", "moan");
97         lore_ptr->pc = TERM_SLATE;
98         break;
99     case RaceBlowMethodType::SHOW:
100         lore_ptr->p = _("歌う", "sing");
101         lore_ptr->pc = TERM_SLATE;
102         break;
103
104     case RaceBlowMethodType::NONE:
105     case RaceBlowMethodType::SHOOT:
106     case RaceBlowMethodType::MAX:
107         break;
108     }
109 }
110
111 void set_monster_blow_effect(lore_type *lore_ptr, int m)
112 {
113     RaceBlowEffectType effect = lore_ptr->r_ptr->blow[m].effect;
114     lore_ptr->q = nullptr;
115     lore_ptr->qc = TERM_WHITE;
116     switch (effect) {
117     case RaceBlowEffectType::SUPERHURT:
118         lore_ptr->q = _("強力に攻撃する", "slaughter");
119         lore_ptr->qc = TERM_L_RED;
120         break;
121     case RaceBlowEffectType::HURT:
122         lore_ptr->q = _("攻撃する", "attack");
123         break;
124     case RaceBlowEffectType::POISON:
125         lore_ptr->q = _("毒をくらわす", "poison");
126         lore_ptr->qc = TERM_L_GREEN;
127         break;
128     case RaceBlowEffectType::UN_BONUS:
129         lore_ptr->q = _("劣化させる", "disenchant");
130         lore_ptr->qc = TERM_VIOLET;
131         break;
132     case RaceBlowEffectType::UN_POWER:
133         lore_ptr->q = _("充填魔力を吸収する", "drain charges");
134         lore_ptr->qc = TERM_SLATE;
135         break;
136     case RaceBlowEffectType::EAT_GOLD:
137         lore_ptr->q = _("金を盗む", "steal gold");
138         lore_ptr->qc = TERM_YELLOW;
139         break;
140     case RaceBlowEffectType::EAT_ITEM:
141         lore_ptr->q = _("アイテムを盗む", "steal items");
142         lore_ptr->qc = TERM_UMBER;
143         break;
144     case RaceBlowEffectType::EAT_FOOD:
145         lore_ptr->q = _("あなたの食料を食べる", "eat your food");
146         lore_ptr->qc = TERM_L_UMBER;
147         break;
148     case RaceBlowEffectType::EAT_LITE:
149         lore_ptr->q = _("明かりを吸収する", "absorb light");
150         lore_ptr->qc = TERM_YELLOW;
151         break;
152     case RaceBlowEffectType::ACID:
153         lore_ptr->q = _("酸を飛ばす", "shoot acid");
154         lore_ptr->qc = TERM_GREEN;
155         break;
156     case RaceBlowEffectType::ELEC:
157         lore_ptr->q = _("感電させる", "electrocute");
158         lore_ptr->qc = TERM_BLUE;
159         break;
160     case RaceBlowEffectType::FIRE:
161         lore_ptr->q = _("燃やす", "burn");
162         lore_ptr->qc = TERM_RED;
163         break;
164     case RaceBlowEffectType::COLD:
165         lore_ptr->q = _("凍らせる", "freeze");
166         lore_ptr->qc = TERM_L_WHITE;
167         break;
168     case RaceBlowEffectType::BLIND:
169         lore_ptr->q = _("盲目にする", "blind");
170         lore_ptr->qc = TERM_L_DARK;
171         break;
172     case RaceBlowEffectType::CONFUSE:
173         lore_ptr->q = _("混乱させる", "confuse");
174         lore_ptr->qc = TERM_L_UMBER;
175         break;
176     case RaceBlowEffectType::TERRIFY:
177         lore_ptr->q = _("恐怖させる", "terrify");
178         lore_ptr->qc = TERM_SLATE;
179         break;
180     case RaceBlowEffectType::PARALYZE:
181         lore_ptr->q = _("麻痺させる", "paralyze");
182         lore_ptr->qc = TERM_BLUE;
183         break;
184     case RaceBlowEffectType::LOSE_STR:
185         lore_ptr->q = _("腕力を減少させる", "reduce strength");
186         lore_ptr->qc = TERM_L_GREEN;
187         break;
188     case RaceBlowEffectType::LOSE_INT:
189         lore_ptr->q = _("知能を減少させる", "reduce intelligence");
190         lore_ptr->qc = TERM_L_GREEN;
191         break;
192     case RaceBlowEffectType::LOSE_WIS:
193         lore_ptr->q = _("賢さを減少させる", "reduce wisdom");
194         lore_ptr->qc = TERM_L_GREEN;
195         break;
196     case RaceBlowEffectType::LOSE_DEX:
197         lore_ptr->q = _("器用さを減少させる", "reduce dexterity");
198         lore_ptr->qc = TERM_L_GREEN;
199         break;
200     case RaceBlowEffectType::LOSE_CON:
201         lore_ptr->q = _("耐久力を減少させる", "reduce constitution");
202         lore_ptr->qc = TERM_L_GREEN;
203         break;
204     case RaceBlowEffectType::LOSE_CHR:
205         lore_ptr->q = _("魅力を減少させる", "reduce charisma");
206         lore_ptr->qc = TERM_L_GREEN;
207         break;
208     case RaceBlowEffectType::LOSE_ALL:
209         lore_ptr->q = _("全ステータスを減少させる", "reduce all stats");
210         lore_ptr->qc = TERM_L_GREEN;
211         break;
212     case RaceBlowEffectType::SHATTER:
213         lore_ptr->q = _("粉砕する", "shatter");
214         lore_ptr->qc = TERM_SLATE;
215         break;
216     case RaceBlowEffectType::EXP_10:
217         lore_ptr->q = _("経験値を減少(10d6+)させる", "lower experience (by 10d6+)");
218         lore_ptr->qc = TERM_L_BLUE;
219         break;
220     case RaceBlowEffectType::EXP_20:
221         lore_ptr->q = _("経験値を減少(20d6+)させる", "lower experience (by 20d6+)");
222         lore_ptr->qc = TERM_L_BLUE;
223         break;
224     case RaceBlowEffectType::EXP_40:
225         lore_ptr->q = _("経験値を減少(40d6+)させる", "lower experience (by 40d6+)");
226         lore_ptr->qc = TERM_L_BLUE;
227         break;
228     case RaceBlowEffectType::EXP_80:
229         lore_ptr->q = _("経験値を減少(80d6+)させる", "lower experience (by 80d6+)");
230         lore_ptr->qc = TERM_L_BLUE;
231         break;
232     case RaceBlowEffectType::DISEASE:
233         lore_ptr->q = _("病気にする", "disease");
234         lore_ptr->qc = TERM_L_GREEN;
235         break;
236     case RaceBlowEffectType::TIME:
237         lore_ptr->q = _("時間を逆戻りさせる", "time");
238         lore_ptr->qc = TERM_L_BLUE;
239         break;
240     case RaceBlowEffectType::DR_LIFE:
241         lore_ptr->q = _("生命力を吸収する", "drain life");
242         lore_ptr->qc = TERM_L_BLUE;
243         break;
244     case RaceBlowEffectType::DR_MANA:
245         lore_ptr->q = _("魔力を奪う", "drain mana force");
246         lore_ptr->qc = TERM_SLATE;
247         break;
248     case RaceBlowEffectType::INERTIA:
249         lore_ptr->q = _("減速させる", "slow");
250         lore_ptr->qc = TERM_UMBER;
251         break;
252     case RaceBlowEffectType::STUN:
253         lore_ptr->q = _("朦朧とさせる", "stun");
254         lore_ptr->qc = TERM_ORANGE;
255         break;
256     case RaceBlowEffectType::HUNGRY:
257         lore_ptr->q = _("空腹を進行させる", "increase hunger");
258         lore_ptr->qc = TERM_L_BLUE;
259         break;
260     case RaceBlowEffectType::FLAVOR:
261         // フレーバー打撃には何の効果もないので付加説明もない。
262         break;
263
264     case RaceBlowEffectType::NONE:
265     case RaceBlowEffectType::MAX:
266         break;
267     }
268 }