The master and develop branches track hengband.
OS X development happens on the macos-1-6-2, macos-2-2-1, and macos-develop branches.
Revision | ad0a8705fabe657e50496c5345b64f3933cbb386 (tree) |
---|---|
Time | 2021-04-30 22:31:04 |
Author | Hourier <66951241+Hourier@user...> |
Commiter | GitHub |
Merge pull request #986 from Hourier/feature/Adjust-Items-Alpha21
確認ありがとうございました!
@@ -3432,7 +3432,7 @@ E:Dispel Evil:Rosewood | ||
3432 | 3432 | G:_:r |
3433 | 3433 | I:55:24:8 |
3434 | 3434 | W:50:0:50:1200 |
3435 | -A:50/1 | |
3435 | +A:35/1:50/1 | |
3436 | 3436 | P:0:1d2:0:0:0 |
3437 | 3437 | D:$It does 80 damage to all evil monsters in sight when you use it. |
3438 | 3438 | D:それは使うと視界内の邪悪なモンスターに80のダメージを与える。 |
@@ -3476,7 +3476,7 @@ E:Power:Walnut | ||
3476 | 3476 | G:_:u |
3477 | 3477 | I:55:25:5 |
3478 | 3478 | W:70:0:50:4000 |
3479 | -A:70/2 | |
3479 | +A:50/4:60:4:70/2 | |
3480 | 3480 | P:0:1d2:0:0:0 |
3481 | 3481 | D:$It does 150 damage to all monsters in sight when you use it. |
3482 | 3482 | D:それは使うと視界内のモンスターに150のダメージを与える。 |
@@ -6427,3 +6427,15 @@ F:RES_CURSE | ||
6427 | 6427 | D:$A faded cloak carved with magical runes. |
6428 | 6428 | D:魔術的なルーンの刻まれた陰気な外套だ。 |
6429 | 6429 | |
6430 | +N:673:自己変容:虹色に輝く | |
6431 | +E:Self-Polymorph:Rainbow colored | |
6432 | +G:!:B | |
6433 | +I:75:54:0 | |
6434 | +W:50:0:4:5000 | |
6435 | +A:50/4 | |
6436 | +P:0:1d1:0:0:0 | |
6437 | +D:$Twice the calories, twice the carbs, twice the caffeine, | |
6438 | +D:$ and twice the delicious! | |
6439 | +D:$ It causes polymorph when drunk. | |
6440 | +D:二倍のカロリー、二倍の炭水化物、二倍のカフェイン、そして二倍おいしい! | |
6441 | +D:それは飲むと自己変容を起こす。 |
@@ -16,7 +16,7 @@ M:WY:66 | ||
16 | 16 | M:R:1298 |
17 | 17 | |
18 | 18 | # Maximum number of items in k_info.txt |
19 | -M:K:673 | |
19 | +M:K:674 | |
20 | 20 | |
21 | 21 | # Maximum number of vaults in v_info.txt |
22 | 22 | M:V:173 |
@@ -58,14 +58,14 @@ | ||
58 | 58 | */ |
59 | 59 | static bool booze(player_type *creature_ptr) |
60 | 60 | { |
61 | - bool ident = FALSE; | |
61 | + bool ident = false; | |
62 | 62 | if (creature_ptr->pclass != CLASS_MONK) |
63 | 63 | chg_virtue(creature_ptr, V_HARMONY, -1); |
64 | 64 | else if (!has_resist_conf(creature_ptr)) |
65 | 65 | creature_ptr->special_attack |= ATTACK_SUIKEN; |
66 | 66 | |
67 | 67 | if (!has_resist_conf(creature_ptr) && set_confused(creature_ptr, randint0(20) + 15)) { |
68 | - ident = TRUE; | |
68 | + ident = true; | |
69 | 69 | } |
70 | 70 | |
71 | 71 | if (has_resist_chaos(creature_ptr)) { |
@@ -73,17 +73,17 @@ static bool booze(player_type *creature_ptr) | ||
73 | 73 | } |
74 | 74 | |
75 | 75 | if (one_in_(2) && set_image(creature_ptr, creature_ptr->image + randint0(150) + 150)) { |
76 | - ident = TRUE; | |
76 | + ident = true; | |
77 | 77 | } |
78 | 78 | |
79 | 79 | if (one_in_(13) && (creature_ptr->pclass != CLASS_MONK)) { |
80 | - ident = TRUE; | |
80 | + ident = true; | |
81 | 81 | if (one_in_(3)) |
82 | 82 | lose_all_info(creature_ptr); |
83 | 83 | else |
84 | 84 | wiz_dark(creature_ptr); |
85 | 85 | |
86 | - (void)teleport_player_aux(creature_ptr, 100, FALSE, static_cast<teleport_flags>(TELEPORT_NONMAGICAL | TELEPORT_PASSIVE)); | |
86 | + (void)teleport_player_aux(creature_ptr, 100, false, static_cast<teleport_flags>(TELEPORT_NONMAGICAL | TELEPORT_PASSIVE)); | |
87 | 87 | wiz_dark(creature_ptr); |
88 | 88 | msg_print(_("知らない場所で目が醒めた。頭痛がする。", "You wake up somewhere with a sore head...")); |
89 | 89 | msg_print(_("何も思い出せない。どうやってここへ来たのかも分からない!", "You can't remember a thing or how you got here!")); |
@@ -142,7 +142,7 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
142 | 142 | q_ptr->number = 1; |
143 | 143 | vary_item(creature_ptr, item, -1); |
144 | 144 | sound(SOUND_QUAFF); |
145 | - bool ident = FALSE; | |
145 | + bool ident = false; | |
146 | 146 | DEPTH lev = k_info[q_ptr->k_idx].level; |
147 | 147 | if (q_ptr->tval == TV_POTION) { |
148 | 148 | switch (q_ptr->sval) { |
@@ -150,24 +150,24 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
150 | 150 | case SV_POTION_WATER: |
151 | 151 | msg_print(_("口の中がさっぱりした。", "That was refreshing.")); |
152 | 152 | msg_print(_("のどの渇きが少しおさまった。", "You feel less thirsty.")); |
153 | - ident = TRUE; | |
153 | + ident = true; | |
154 | 154 | break; |
155 | 155 | |
156 | 156 | case SV_POTION_APPLE_JUICE: |
157 | 157 | msg_print(_("甘くてサッパリとしていて、とてもおいしい。", "It's sweet, refreshing and very tasty.")); |
158 | 158 | msg_print(_("のどの渇きが少しおさまった。", "You feel less thirsty.")); |
159 | - ident = TRUE; | |
159 | + ident = true; | |
160 | 160 | break; |
161 | 161 | |
162 | 162 | case SV_POTION_SLIME_MOLD: |
163 | 163 | msg_print(_("なんとも不気味な味だ。", "That was strange.")); |
164 | 164 | msg_print(_("のどの渇きが少しおさまった。", "You feel less thirsty.")); |
165 | - ident = TRUE; | |
165 | + ident = true; | |
166 | 166 | break; |
167 | 167 | |
168 | 168 | case SV_POTION_SLOWNESS: |
169 | - if (set_slow(creature_ptr, randint1(25) + 15, FALSE)) | |
170 | - ident = TRUE; | |
169 | + if (set_slow(creature_ptr, randint1(25) + 15, false)) | |
170 | + ident = true; | |
171 | 171 | break; |
172 | 172 | |
173 | 173 | case SV_POTION_SALT_WATER: |
@@ -182,13 +182,13 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
182 | 182 | |
183 | 183 | (void)set_poisoned(creature_ptr, 0); |
184 | 184 | (void)set_paralyzed(creature_ptr, creature_ptr->paralyzed + 4); |
185 | - ident = TRUE; | |
185 | + ident = true; | |
186 | 186 | break; |
187 | 187 | |
188 | 188 | case SV_POTION_POISON: |
189 | 189 | if (!(has_resist_pois(creature_ptr) || is_oppose_pois(creature_ptr))) { |
190 | 190 | if (set_poisoned(creature_ptr, creature_ptr->poisoned + randint0(15) + 10)) { |
191 | - ident = TRUE; | |
191 | + ident = true; | |
192 | 192 | } |
193 | 193 | } |
194 | 194 | break; |
@@ -196,7 +196,7 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
196 | 196 | case SV_POTION_BLINDNESS: |
197 | 197 | if (!has_resist_blind(creature_ptr)) { |
198 | 198 | if (set_blind(creature_ptr, creature_ptr->blind + randint0(100) + 100)) { |
199 | - ident = TRUE; | |
199 | + ident = true; | |
200 | 200 | } |
201 | 201 | } |
202 | 202 | break; |
@@ -213,10 +213,10 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
213 | 213 | msg_print(_("恐ろしい光景が頭に浮かんできた。", "A horrible vision enters your mind.")); |
214 | 214 | |
215 | 215 | /* Have some nightmares */ |
216 | - sanity_blast(creature_ptr, NULL, FALSE); | |
216 | + sanity_blast(creature_ptr, NULL, false); | |
217 | 217 | } |
218 | 218 | if (set_paralyzed(creature_ptr, creature_ptr->paralyzed + randint0(4) + 4)) { |
219 | - ident = TRUE; | |
219 | + ident = true; | |
220 | 220 | } |
221 | 221 | } |
222 | 222 | break; |
@@ -227,7 +227,7 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
227 | 227 | chg_virtue(creature_ptr, V_KNOWLEDGE, -5); |
228 | 228 | |
229 | 229 | lose_exp(creature_ptr, creature_ptr->exp / 4); |
230 | - ident = TRUE; | |
230 | + ident = true; | |
231 | 231 | } |
232 | 232 | break; |
233 | 233 |
@@ -241,37 +241,37 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
241 | 241 | (void)dec_stat(creature_ptr, A_STR, 25, TRUE); |
242 | 242 | (void)dec_stat(creature_ptr, A_CHR, 25, TRUE); |
243 | 243 | (void)dec_stat(creature_ptr, A_INT, 25, TRUE); |
244 | - ident = TRUE; | |
244 | + ident = true; | |
245 | 245 | break; |
246 | 246 | |
247 | 247 | case SV_POTION_DEC_STR: |
248 | 248 | if (do_dec_stat(creature_ptr, A_STR)) |
249 | - ident = TRUE; | |
249 | + ident = true; | |
250 | 250 | break; |
251 | 251 | |
252 | 252 | case SV_POTION_DEC_INT: |
253 | 253 | if (do_dec_stat(creature_ptr, A_INT)) |
254 | - ident = TRUE; | |
254 | + ident = true; | |
255 | 255 | break; |
256 | 256 | |
257 | 257 | case SV_POTION_DEC_WIS: |
258 | 258 | if (do_dec_stat(creature_ptr, A_WIS)) |
259 | - ident = TRUE; | |
259 | + ident = true; | |
260 | 260 | break; |
261 | 261 | |
262 | 262 | case SV_POTION_DEC_DEX: |
263 | 263 | if (do_dec_stat(creature_ptr, A_DEX)) |
264 | - ident = TRUE; | |
264 | + ident = true; | |
265 | 265 | break; |
266 | 266 | |
267 | 267 | case SV_POTION_DEC_CON: |
268 | 268 | if (do_dec_stat(creature_ptr, A_CON)) |
269 | - ident = TRUE; | |
269 | + ident = true; | |
270 | 270 | break; |
271 | 271 | |
272 | 272 | case SV_POTION_DEC_CHR: |
273 | 273 | if (do_dec_stat(creature_ptr, A_CHR)) |
274 | - ident = TRUE; | |
274 | + ident = true; | |
275 | 275 | break; |
276 | 276 | |
277 | 277 | case SV_POTION_DETONATIONS: |
@@ -283,54 +283,54 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
283 | 283 | chg_virtue(creature_ptr, V_UNLIFE, 5); |
284 | 284 | msg_print(_("死の予感が体中を駆けめぐった。", "A feeling of Death flows through your body.")); |
285 | 285 | take_hit(creature_ptr, DAMAGE_LOSELIFE, 5000, _("死の薬", "a potion of Death")); |
286 | - ident = TRUE; | |
286 | + ident = true; | |
287 | 287 | break; |
288 | 288 | |
289 | 289 | case SV_POTION_INFRAVISION: |
290 | - if (set_tim_infra(creature_ptr, creature_ptr->tim_infra + 100 + randint1(100), FALSE)) { | |
291 | - ident = TRUE; | |
290 | + if (set_tim_infra(creature_ptr, creature_ptr->tim_infra + 100 + randint1(100), false)) { | |
291 | + ident = true; | |
292 | 292 | } |
293 | 293 | break; |
294 | 294 | |
295 | 295 | case SV_POTION_DETECT_INVIS: |
296 | - if (set_tim_invis(creature_ptr, creature_ptr->tim_invis + 12 + randint1(12), FALSE)) { | |
297 | - ident = TRUE; | |
296 | + if (set_tim_invis(creature_ptr, creature_ptr->tim_invis + 12 + randint1(12), false)) { | |
297 | + ident = true; | |
298 | 298 | } |
299 | 299 | break; |
300 | 300 | |
301 | 301 | case SV_POTION_SLOW_POISON: |
302 | 302 | if (set_poisoned(creature_ptr, creature_ptr->poisoned / 2)) |
303 | - ident = TRUE; | |
303 | + ident = true; | |
304 | 304 | break; |
305 | 305 | |
306 | 306 | case SV_POTION_CURE_POISON: |
307 | 307 | if (set_poisoned(creature_ptr, 0)) |
308 | - ident = TRUE; | |
308 | + ident = true; | |
309 | 309 | break; |
310 | 310 | |
311 | 311 | case SV_POTION_BOLDNESS: |
312 | 312 | if (set_afraid(creature_ptr, 0)) |
313 | - ident = TRUE; | |
313 | + ident = true; | |
314 | 314 | break; |
315 | 315 | |
316 | 316 | case SV_POTION_SPEED: |
317 | 317 | if (!creature_ptr->fast) { |
318 | - if (set_fast(creature_ptr, randint1(25) + 15, FALSE)) | |
319 | - ident = TRUE; | |
318 | + if (set_fast(creature_ptr, randint1(25) + 15, false)) | |
319 | + ident = true; | |
320 | 320 | } else { |
321 | - (void)set_fast(creature_ptr, creature_ptr->fast + 5, FALSE); | |
321 | + (void)set_fast(creature_ptr, creature_ptr->fast + 5, false); | |
322 | 322 | } |
323 | 323 | break; |
324 | 324 | |
325 | 325 | case SV_POTION_RESIST_HEAT: |
326 | - if (set_oppose_fire(creature_ptr, creature_ptr->oppose_fire + randint1(10) + 10, FALSE)) { | |
327 | - ident = TRUE; | |
326 | + if (set_oppose_fire(creature_ptr, creature_ptr->oppose_fire + randint1(10) + 10, false)) { | |
327 | + ident = true; | |
328 | 328 | } |
329 | 329 | break; |
330 | 330 | |
331 | 331 | case SV_POTION_RESIST_COLD: |
332 | - if (set_oppose_cold(creature_ptr, creature_ptr->oppose_cold + randint1(10) + 10, FALSE)) { | |
333 | - ident = TRUE; | |
332 | + if (set_oppose_cold(creature_ptr, creature_ptr->oppose_cold + randint1(10) + 10, false)) { | |
333 | + ident = true; | |
334 | 334 | } |
335 | 335 | break; |
336 | 336 |
@@ -372,90 +372,95 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
372 | 372 | |
373 | 373 | case SV_POTION_RESTORE_EXP: |
374 | 374 | if (restore_level(creature_ptr)) |
375 | - ident = TRUE; | |
375 | + ident = true; | |
376 | 376 | break; |
377 | 377 | |
378 | 378 | case SV_POTION_RES_STR: |
379 | 379 | if (do_res_stat(creature_ptr, A_STR)) |
380 | - ident = TRUE; | |
380 | + ident = true; | |
381 | 381 | break; |
382 | 382 | |
383 | 383 | case SV_POTION_RES_INT: |
384 | 384 | if (do_res_stat(creature_ptr, A_INT)) |
385 | - ident = TRUE; | |
385 | + ident = true; | |
386 | 386 | break; |
387 | 387 | |
388 | 388 | case SV_POTION_RES_WIS: |
389 | 389 | if (do_res_stat(creature_ptr, A_WIS)) |
390 | - ident = TRUE; | |
390 | + ident = true; | |
391 | 391 | break; |
392 | 392 | |
393 | 393 | case SV_POTION_RES_DEX: |
394 | 394 | if (do_res_stat(creature_ptr, A_DEX)) |
395 | - ident = TRUE; | |
395 | + ident = true; | |
396 | 396 | break; |
397 | 397 | |
398 | 398 | case SV_POTION_RES_CON: |
399 | 399 | if (do_res_stat(creature_ptr, A_CON)) |
400 | - ident = TRUE; | |
400 | + ident = true; | |
401 | 401 | break; |
402 | 402 | |
403 | 403 | case SV_POTION_RES_CHR: |
404 | 404 | if (do_res_stat(creature_ptr, A_CHR)) |
405 | - ident = TRUE; | |
405 | + ident = true; | |
406 | 406 | break; |
407 | 407 | |
408 | 408 | case SV_POTION_INC_STR: |
409 | 409 | if (do_inc_stat(creature_ptr, A_STR)) |
410 | - ident = TRUE; | |
410 | + ident = true; | |
411 | 411 | break; |
412 | 412 | |
413 | 413 | case SV_POTION_INC_INT: |
414 | 414 | if (do_inc_stat(creature_ptr, A_INT)) |
415 | - ident = TRUE; | |
415 | + ident = true; | |
416 | 416 | break; |
417 | 417 | |
418 | 418 | case SV_POTION_INC_WIS: |
419 | 419 | if (do_inc_stat(creature_ptr, A_WIS)) |
420 | - ident = TRUE; | |
420 | + ident = true; | |
421 | 421 | break; |
422 | 422 | |
423 | 423 | case SV_POTION_INC_DEX: |
424 | 424 | if (do_inc_stat(creature_ptr, A_DEX)) |
425 | - ident = TRUE; | |
425 | + ident = true; | |
426 | 426 | break; |
427 | 427 | |
428 | 428 | case SV_POTION_INC_CON: |
429 | 429 | if (do_inc_stat(creature_ptr, A_CON)) |
430 | - ident = TRUE; | |
430 | + ident = true; | |
431 | 431 | break; |
432 | 432 | |
433 | 433 | case SV_POTION_INC_CHR: |
434 | 434 | if (do_inc_stat(creature_ptr, A_CHR)) |
435 | - ident = TRUE; | |
435 | + ident = true; | |
436 | + break; | |
437 | + | |
438 | + case SV_POTION_POLY_SELF: | |
439 | + do_poly_self(creature_ptr); | |
440 | + ident = true; | |
436 | 441 | break; |
437 | 442 | |
438 | 443 | case SV_POTION_AUGMENTATION: |
439 | 444 | if (do_inc_stat(creature_ptr, A_STR)) |
440 | - ident = TRUE; | |
445 | + ident = true; | |
441 | 446 | if (do_inc_stat(creature_ptr, A_INT)) |
442 | - ident = TRUE; | |
447 | + ident = true; | |
443 | 448 | if (do_inc_stat(creature_ptr, A_WIS)) |
444 | - ident = TRUE; | |
449 | + ident = true; | |
445 | 450 | if (do_inc_stat(creature_ptr, A_DEX)) |
446 | - ident = TRUE; | |
451 | + ident = true; | |
447 | 452 | if (do_inc_stat(creature_ptr, A_CON)) |
448 | - ident = TRUE; | |
453 | + ident = true; | |
449 | 454 | if (do_inc_stat(creature_ptr, A_CHR)) |
450 | - ident = TRUE; | |
455 | + ident = true; | |
451 | 456 | break; |
452 | 457 | |
453 | 458 | case SV_POTION_ENLIGHTENMENT: |
454 | 459 | msg_print(_("自分の置かれている状況が脳裏に浮かんできた...", "An image of your surroundings forms in your mind...")); |
455 | 460 | chg_virtue(creature_ptr, V_KNOWLEDGE, 1); |
456 | 461 | chg_virtue(creature_ptr, V_ENLIGHTEN, 1); |
457 | - wiz_lite(creature_ptr, FALSE); | |
458 | - ident = TRUE; | |
462 | + wiz_lite(creature_ptr, false); | |
463 | + ident = true; | |
459 | 464 | break; |
460 | 465 | |
461 | 466 | case SV_POTION_STAR_ENLIGHTENMENT: |
@@ -463,7 +468,7 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
463 | 468 | chg_virtue(creature_ptr, V_KNOWLEDGE, 1); |
464 | 469 | chg_virtue(creature_ptr, V_ENLIGHTEN, 2); |
465 | 470 | msg_print(NULL); |
466 | - wiz_lite(creature_ptr, FALSE); | |
471 | + wiz_lite(creature_ptr, false); | |
467 | 472 | (void)do_inc_stat(creature_ptr, A_INT); |
468 | 473 | (void)do_inc_stat(creature_ptr, A_WIS); |
469 | 474 | (void)detect_traps(creature_ptr, DETECT_RAD_DEFAULT, TRUE); |
@@ -474,14 +479,14 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
474 | 479 | (void)detect_objects_normal(creature_ptr, DETECT_RAD_DEFAULT); |
475 | 480 | identify_pack(creature_ptr); |
476 | 481 | self_knowledge(creature_ptr); |
477 | - ident = TRUE; | |
482 | + ident = true; | |
478 | 483 | break; |
479 | 484 | |
480 | 485 | case SV_POTION_SELF_KNOWLEDGE: |
481 | 486 | msg_print(_("自分自身のことが少しは分かった気がする...", "You begin to know yourself a little better...")); |
482 | 487 | msg_print(NULL); |
483 | 488 | self_knowledge(creature_ptr); |
484 | - ident = TRUE; | |
489 | + ident = true; | |
485 | 490 | break; |
486 | 491 | |
487 | 492 | case SV_POTION_EXPERIENCE: |
@@ -494,27 +499,27 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
494 | 499 | ee = 100000L; |
495 | 500 | msg_print(_("更に経験を積んだような気がする。", "You feel more experienced.")); |
496 | 501 | gain_exp(creature_ptr, ee); |
497 | - ident = TRUE; | |
502 | + ident = true; | |
498 | 503 | } |
499 | 504 | break; |
500 | 505 | |
501 | 506 | case SV_POTION_RESISTANCE: |
502 | - (void)set_oppose_acid(creature_ptr, creature_ptr->oppose_acid + randint1(20) + 20, FALSE); | |
503 | - (void)set_oppose_elec(creature_ptr, creature_ptr->oppose_elec + randint1(20) + 20, FALSE); | |
504 | - (void)set_oppose_fire(creature_ptr, creature_ptr->oppose_fire + randint1(20) + 20, FALSE); | |
505 | - (void)set_oppose_cold(creature_ptr, creature_ptr->oppose_cold + randint1(20) + 20, FALSE); | |
506 | - (void)set_oppose_pois(creature_ptr, creature_ptr->oppose_pois + randint1(20) + 20, FALSE); | |
507 | - ident = TRUE; | |
507 | + (void)set_oppose_acid(creature_ptr, creature_ptr->oppose_acid + randint1(20) + 20, false); | |
508 | + (void)set_oppose_elec(creature_ptr, creature_ptr->oppose_elec + randint1(20) + 20, false); | |
509 | + (void)set_oppose_fire(creature_ptr, creature_ptr->oppose_fire + randint1(20) + 20, false); | |
510 | + (void)set_oppose_cold(creature_ptr, creature_ptr->oppose_cold + randint1(20) + 20, false); | |
511 | + (void)set_oppose_pois(creature_ptr, creature_ptr->oppose_pois + randint1(20) + 20, false); | |
512 | + ident = true; | |
508 | 513 | break; |
509 | 514 | |
510 | 515 | case SV_POTION_CURING: |
511 | 516 | if (true_healing(creature_ptr, 50)) |
512 | - ident = TRUE; | |
517 | + ident = true; | |
513 | 518 | break; |
514 | 519 | |
515 | 520 | case SV_POTION_INVULNERABILITY: |
516 | - (void)set_invuln(creature_ptr, creature_ptr->invuln + randint1(4) + 4, FALSE); | |
517 | - ident = TRUE; | |
521 | + (void)set_invuln(creature_ptr, creature_ptr->invuln + randint1(4) + 4, false); | |
522 | + ident = true; | |
518 | 523 | break; |
519 | 524 | |
520 | 525 | case SV_POTION_NEW_LIFE: |
@@ -522,13 +527,13 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
522 | 527 | get_max_stats(creature_ptr); |
523 | 528 | creature_ptr->update |= PU_BONUS; |
524 | 529 | lose_all_mutations(creature_ptr); |
525 | - ident = TRUE; | |
530 | + ident = true; | |
526 | 531 | break; |
527 | 532 | |
528 | 533 | case SV_POTION_NEO_TSUYOSHI: |
529 | 534 | (void)set_image(creature_ptr, 0); |
530 | - (void)set_tsuyoshi(creature_ptr, creature_ptr->tsuyoshi + randint1(100) + 100, FALSE); | |
531 | - ident = TRUE; | |
535 | + (void)set_tsuyoshi(creature_ptr, creature_ptr->tsuyoshi + randint1(100) + 100, false); | |
536 | + ident = true; | |
532 | 537 | break; |
533 | 538 | |
534 | 539 | case SV_POTION_TSUYOSHI: |
@@ -539,7 +544,7 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
539 | 544 | if (!has_resist_chaos(creature_ptr)) { |
540 | 545 | (void)set_image(creature_ptr, 50 + randint1(50)); |
541 | 546 | } |
542 | - ident = TRUE; | |
547 | + ident = true; | |
543 | 548 | break; |
544 | 549 | |
545 | 550 | case SV_POTION_POLYMORPH: |
@@ -549,9 +554,9 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item) | ||
549 | 554 | do { |
550 | 555 | if (one_in_(2)) { |
551 | 556 | if (gain_mutation(creature_ptr, 0)) |
552 | - ident = TRUE; | |
557 | + ident = true; | |
553 | 558 | } else if (lose_mutation(creature_ptr, 0)) |
554 | - ident = TRUE; | |
559 | + ident = true; | |
555 | 560 | } while (!ident || one_in_(2)); |
556 | 561 | } |
557 | 562 | break; |
@@ -5,11 +5,11 @@ | ||
5 | 5 | */ |
6 | 6 | #include "object/object-broken.h" |
7 | 7 | #include "effect/effect-characteristics.h" |
8 | +#include "effect/effect-processor.h" | |
8 | 9 | #include "mind/snipe-types.h" |
9 | 10 | #include "object-enchant/tr-types.h" |
10 | 11 | #include "object/object-flags.h" |
11 | 12 | #include "object/object-kind.h" |
12 | -#include "effect/effect-processor.h" | |
13 | 13 | #include "spell/spell-types.h" |
14 | 14 | #include "sv-definition/sv-potion-types.h" |
15 | 15 | #include "system/object-type-definition.h" |
@@ -17,252 +17,238 @@ | ||
17 | 17 | #include "util/bit-flags-calculator.h" |
18 | 18 | |
19 | 19 | /*! |
20 | -* @brief アイテムが酸で破損するかどうかを判定する | |
21 | -* @param o_ptr アイテムの情報参照ポインタ | |
22 | -* @return 破損するならばTRUEを返す | |
23 | -* Note that amulets, rods, and high-level spell books are immune | |
24 | -* to "inventory damage" of any kind. Also sling ammo and shovels. | |
25 | -* Does a given class of objects (usually) hate acid? | |
26 | -* Note that acid can either melt or corrode something. | |
27 | -*/ | |
20 | + * @brief アイテムが酸で破損するかどうかを判定する | |
21 | + * @param o_ptr アイテムの情報参照ポインタ | |
22 | + * @return 破損するならばTRUEを返す | |
23 | + * Note that amulets, rods, and high-level spell books are immune | |
24 | + * to "inventory damage" of any kind. Also sling ammo and shovels. | |
25 | + * Does a given class of objects (usually) hate acid? | |
26 | + * Note that acid can either melt or corrode something. | |
27 | + */ | |
28 | 28 | bool hates_acid(object_type *o_ptr) |
29 | 29 | { |
30 | - /* Analyze the type */ | |
31 | - switch (o_ptr->tval) | |
32 | - { | |
33 | - /* Wearable items */ | |
34 | - case TV_ARROW: | |
35 | - case TV_BOLT: | |
36 | - case TV_BOW: | |
37 | - case TV_SWORD: | |
38 | - case TV_HAFTED: | |
39 | - case TV_POLEARM: | |
40 | - case TV_HELM: | |
41 | - case TV_CROWN: | |
42 | - case TV_SHIELD: | |
43 | - case TV_BOOTS: | |
44 | - case TV_GLOVES: | |
45 | - case TV_CLOAK: | |
46 | - case TV_SOFT_ARMOR: | |
47 | - case TV_HARD_ARMOR: | |
48 | - case TV_DRAG_ARMOR: | |
49 | - { | |
50 | - return TRUE; | |
51 | - } | |
52 | - | |
53 | - /* Staffs/Scrolls are wood/paper */ | |
54 | - case TV_STAFF: | |
55 | - case TV_SCROLL: | |
56 | - { | |
57 | - return TRUE; | |
58 | - } | |
59 | - | |
60 | - /* Ouch */ | |
61 | - case TV_CHEST: | |
62 | - { | |
63 | - return TRUE; | |
64 | - } | |
65 | - | |
66 | - /* Junk is useless */ | |
67 | - case TV_SKELETON: | |
68 | - case TV_BOTTLE: | |
69 | - case TV_JUNK: | |
70 | - { | |
71 | - return TRUE; | |
72 | - } | |
73 | - | |
74 | - default: | |
75 | - break; | |
76 | - } | |
77 | - | |
78 | - return FALSE; | |
30 | + /* Analyze the type */ | |
31 | + switch (o_ptr->tval) { | |
32 | + /* Wearable items */ | |
33 | + case TV_ARROW: | |
34 | + case TV_BOLT: | |
35 | + case TV_BOW: | |
36 | + case TV_SWORD: | |
37 | + case TV_HAFTED: | |
38 | + case TV_POLEARM: | |
39 | + case TV_HELM: | |
40 | + case TV_CROWN: | |
41 | + case TV_SHIELD: | |
42 | + case TV_BOOTS: | |
43 | + case TV_GLOVES: | |
44 | + case TV_CLOAK: | |
45 | + case TV_SOFT_ARMOR: | |
46 | + case TV_HARD_ARMOR: | |
47 | + case TV_DRAG_ARMOR: { | |
48 | + return TRUE; | |
49 | + } | |
50 | + | |
51 | + /* Staffs/Scrolls are wood/paper */ | |
52 | + case TV_STAFF: | |
53 | + case TV_SCROLL: { | |
54 | + return TRUE; | |
55 | + } | |
56 | + | |
57 | + /* Ouch */ | |
58 | + case TV_CHEST: { | |
59 | + return TRUE; | |
60 | + } | |
61 | + | |
62 | + /* Junk is useless */ | |
63 | + case TV_SKELETON: | |
64 | + case TV_BOTTLE: | |
65 | + case TV_JUNK: { | |
66 | + return TRUE; | |
67 | + } | |
68 | + | |
69 | + default: | |
70 | + break; | |
71 | + } | |
72 | + | |
73 | + return FALSE; | |
79 | 74 | } |
80 | 75 | |
81 | - | |
82 | 76 | /*! |
83 | -* @brief アイテムが電撃で破損するかどうかを判定する / | |
84 | -* Does a given object (usually) hate electricity? | |
85 | -* @param o_ptr アイテムの情報参照ポインタ | |
86 | -* @return 破損するならばTRUEを返す | |
87 | -*/ | |
77 | + * @brief アイテムが電撃で破損するかどうかを判定する / | |
78 | + * Does a given object (usually) hate electricity? | |
79 | + * @param o_ptr アイテムの情報参照ポインタ | |
80 | + * @return 破損するならばTRUEを返す | |
81 | + */ | |
88 | 82 | bool hates_elec(object_type *o_ptr) |
89 | 83 | { |
90 | - switch (o_ptr->tval) | |
91 | - { | |
92 | - case TV_RING: | |
93 | - case TV_WAND: | |
94 | - { | |
95 | - return TRUE; | |
96 | - } | |
84 | + switch (o_ptr->tval) { | |
85 | + case TV_RING: | |
86 | + case TV_WAND: { | |
87 | + return TRUE; | |
88 | + } | |
97 | 89 | |
98 | - default: | |
99 | - break; | |
100 | - } | |
90 | + default: | |
91 | + break; | |
92 | + } | |
101 | 93 | |
102 | - return FALSE; | |
94 | + return FALSE; | |
103 | 95 | } |
104 | 96 | |
105 | - | |
106 | 97 | /*! |
107 | -* @brief アイテムが火炎で破損するかどうかを判定する / | |
108 | -* Does a given object (usually) hate fire? | |
109 | -* @param o_ptr アイテムの情報参照ポインタ | |
110 | -* @return 破損するならばTRUEを返す | |
111 | -* @details | |
112 | -* Hafted/Polearm weapons have wooden shafts. | |
113 | -* Arrows/Bows are mostly wooden. | |
114 | -*/ | |
98 | + * @brief アイテムが火炎で破損するかどうかを判定する / | |
99 | + * Does a given object (usually) hate fire? | |
100 | + * @param o_ptr アイテムの情報参照ポインタ | |
101 | + * @return 破損するならばTRUEを返す | |
102 | + * @details | |
103 | + * Hafted/Polearm weapons have wooden shafts. | |
104 | + * Arrows/Bows are mostly wooden. | |
105 | + */ | |
115 | 106 | bool hates_fire(object_type *o_ptr) |
116 | 107 | { |
117 | - /* Analyze the type */ | |
118 | - switch (o_ptr->tval) | |
119 | - { | |
120 | - /* Wearable */ | |
121 | - case TV_LITE: | |
122 | - case TV_ARROW: | |
123 | - case TV_BOW: | |
124 | - case TV_HAFTED: | |
125 | - case TV_POLEARM: | |
126 | - case TV_BOOTS: | |
127 | - case TV_GLOVES: | |
128 | - case TV_CLOAK: | |
129 | - case TV_SOFT_ARMOR: | |
130 | - { | |
131 | - return TRUE; | |
132 | - } | |
133 | - | |
134 | - /* Books */ | |
135 | - case TV_LIFE_BOOK: | |
136 | - case TV_SORCERY_BOOK: | |
137 | - case TV_NATURE_BOOK: | |
138 | - case TV_CHAOS_BOOK: | |
139 | - case TV_DEATH_BOOK: | |
140 | - case TV_TRUMP_BOOK: | |
141 | - case TV_ARCANE_BOOK: | |
142 | - case TV_CRAFT_BOOK: | |
143 | - case TV_DEMON_BOOK: | |
144 | - case TV_CRUSADE_BOOK: | |
145 | - case TV_MUSIC_BOOK: | |
146 | - case TV_HISSATSU_BOOK: | |
147 | - case TV_HEX_BOOK: | |
148 | - { | |
149 | - return TRUE; | |
150 | - } | |
151 | - | |
152 | - /* Chests */ | |
153 | - case TV_CHEST: | |
154 | - { | |
155 | - return TRUE; | |
156 | - } | |
157 | - | |
158 | - /* Staffs/Scrolls burn */ | |
159 | - case TV_STAFF: | |
160 | - case TV_SCROLL: | |
161 | - { | |
162 | - return TRUE; | |
163 | - } | |
164 | - | |
165 | - default: | |
166 | - break; | |
167 | - } | |
168 | - | |
169 | - return FALSE; | |
108 | + /* Analyze the type */ | |
109 | + switch (o_ptr->tval) { | |
110 | + /* Wearable */ | |
111 | + case TV_LITE: | |
112 | + case TV_ARROW: | |
113 | + case TV_BOW: | |
114 | + case TV_HAFTED: | |
115 | + case TV_POLEARM: | |
116 | + case TV_BOOTS: | |
117 | + case TV_GLOVES: | |
118 | + case TV_CLOAK: | |
119 | + case TV_SOFT_ARMOR: { | |
120 | + return TRUE; | |
121 | + } | |
122 | + | |
123 | + /* Books */ | |
124 | + case TV_LIFE_BOOK: | |
125 | + case TV_SORCERY_BOOK: | |
126 | + case TV_NATURE_BOOK: | |
127 | + case TV_CHAOS_BOOK: | |
128 | + case TV_DEATH_BOOK: | |
129 | + case TV_TRUMP_BOOK: | |
130 | + case TV_ARCANE_BOOK: | |
131 | + case TV_CRAFT_BOOK: | |
132 | + case TV_DEMON_BOOK: | |
133 | + case TV_CRUSADE_BOOK: | |
134 | + case TV_MUSIC_BOOK: | |
135 | + case TV_HISSATSU_BOOK: | |
136 | + case TV_HEX_BOOK: { | |
137 | + return TRUE; | |
138 | + } | |
139 | + | |
140 | + /* Chests */ | |
141 | + case TV_CHEST: { | |
142 | + return TRUE; | |
143 | + } | |
144 | + | |
145 | + /* Staffs/Scrolls burn */ | |
146 | + case TV_STAFF: | |
147 | + case TV_SCROLL: { | |
148 | + return TRUE; | |
149 | + } | |
150 | + | |
151 | + default: | |
152 | + break; | |
153 | + } | |
154 | + | |
155 | + return FALSE; | |
170 | 156 | } |
171 | 157 | |
172 | - | |
173 | 158 | /*! |
174 | -* @brief アイテムが冷気で破損するかどうかを判定する / | |
175 | -* Does a given object (usually) hate cold? | |
176 | -* @param o_ptr アイテムの情報参照ポインタ | |
177 | -* @return 破損するならばTRUEを返す | |
178 | -*/ | |
159 | + * @brief アイテムが冷気で破損するかどうかを判定する / | |
160 | + * Does a given object (usually) hate cold? | |
161 | + * @param o_ptr アイテムの情報参照ポインタ | |
162 | + * @return 破損するならばTRUEを返す | |
163 | + */ | |
179 | 164 | bool hates_cold(object_type *o_ptr) |
180 | 165 | { |
181 | - switch (o_ptr->tval) | |
182 | - { | |
183 | - case TV_POTION: | |
184 | - case TV_FLASK: | |
185 | - case TV_BOTTLE: | |
186 | - { | |
187 | - return TRUE; | |
188 | - } | |
189 | - | |
190 | - default: | |
191 | - break; | |
192 | - } | |
193 | - | |
194 | - return FALSE; | |
166 | + switch (o_ptr->tval) { | |
167 | + case TV_POTION: | |
168 | + case TV_FLASK: | |
169 | + case TV_BOTTLE: { | |
170 | + return TRUE; | |
171 | + } | |
172 | + | |
173 | + default: | |
174 | + break; | |
175 | + } | |
176 | + | |
177 | + return FALSE; | |
195 | 178 | } |
196 | 179 | |
197 | - | |
198 | 180 | /*! |
199 | -* @brief アイテムが酸で破損するかどうかを判定する(メインルーチン) / | |
200 | -* Melt something | |
201 | -* @param o_ptr アイテムの情報参照ポインタ | |
202 | -* @return 破損するならばTRUEを返す | |
203 | -* @todo 統合を検討 | |
204 | -*/ | |
181 | + * @brief アイテムが酸で破損するかどうかを判定する(メインルーチン) / | |
182 | + * Melt something | |
183 | + * @param o_ptr アイテムの情報参照ポインタ | |
184 | + * @return 破損するならばTRUEを返す | |
185 | + * @todo 統合を検討 | |
186 | + */ | |
205 | 187 | int set_acid_destroy(player_type *owner_ptr, object_type *o_ptr) |
206 | 188 | { |
207 | - BIT_FLAGS flgs[TR_FLAG_SIZE]; | |
208 | - if (!hates_acid(o_ptr)) return FALSE; | |
209 | - object_flags(owner_ptr, o_ptr, flgs); | |
210 | - if (has_flag(flgs, TR_IGNORE_ACID)) return FALSE; | |
211 | - return TRUE; | |
189 | + BIT_FLAGS flgs[TR_FLAG_SIZE]; | |
190 | + if (!hates_acid(o_ptr)) | |
191 | + return FALSE; | |
192 | + object_flags(owner_ptr, o_ptr, flgs); | |
193 | + if (has_flag(flgs, TR_IGNORE_ACID)) | |
194 | + return FALSE; | |
195 | + return TRUE; | |
212 | 196 | } |
213 | 197 | |
214 | - | |
215 | 198 | /*! |
216 | -* @brief アイテムが電撃で破損するかどうかを判定する(メインルーチン) / | |
217 | -* Electrical damage | |
218 | -* @param o_ptr アイテムの情報参照ポインタ | |
219 | -* @return 破損するならばTRUEを返す | |
220 | -* @todo 統合を検討 | |
221 | -*/ | |
199 | + * @brief アイテムが電撃で破損するかどうかを判定する(メインルーチン) / | |
200 | + * Electrical damage | |
201 | + * @param o_ptr アイテムの情報参照ポインタ | |
202 | + * @return 破損するならばTRUEを返す | |
203 | + * @todo 統合を検討 | |
204 | + */ | |
222 | 205 | int set_elec_destroy(player_type *owner_ptr, object_type *o_ptr) |
223 | 206 | { |
224 | - BIT_FLAGS flgs[TR_FLAG_SIZE]; | |
225 | - if (!hates_elec(o_ptr)) return FALSE; | |
226 | - object_flags(owner_ptr, o_ptr, flgs); | |
227 | - if (has_flag(flgs, TR_IGNORE_ELEC)) return FALSE; | |
228 | - return TRUE; | |
207 | + BIT_FLAGS flgs[TR_FLAG_SIZE]; | |
208 | + if (!hates_elec(o_ptr)) | |
209 | + return FALSE; | |
210 | + object_flags(owner_ptr, o_ptr, flgs); | |
211 | + if (has_flag(flgs, TR_IGNORE_ELEC)) | |
212 | + return FALSE; | |
213 | + return TRUE; | |
229 | 214 | } |
230 | 215 | |
231 | - | |
232 | 216 | /*! |
233 | -* @brief アイテムが火炎で破損するかどうかを判定する(メインルーチン) / | |
234 | -* Burn something | |
235 | -* @param o_ptr アイテムの情報参照ポインタ | |
236 | -* @return 破損するならばTRUEを返す | |
237 | -* @todo 統合を検討 | |
238 | -*/ | |
217 | + * @brief アイテムが火炎で破損するかどうかを判定する(メインルーチン) / | |
218 | + * Burn something | |
219 | + * @param o_ptr アイテムの情報参照ポインタ | |
220 | + * @return 破損するならばTRUEを返す | |
221 | + * @todo 統合を検討 | |
222 | + */ | |
239 | 223 | int set_fire_destroy(player_type *owner_ptr, object_type *o_ptr) |
240 | 224 | { |
241 | - BIT_FLAGS flgs[TR_FLAG_SIZE]; | |
242 | - if (!hates_fire(o_ptr)) return FALSE; | |
243 | - object_flags(owner_ptr, o_ptr, flgs); | |
244 | - if (has_flag(flgs, TR_IGNORE_FIRE)) return FALSE; | |
245 | - return TRUE; | |
225 | + BIT_FLAGS flgs[TR_FLAG_SIZE]; | |
226 | + if (!hates_fire(o_ptr)) | |
227 | + return FALSE; | |
228 | + object_flags(owner_ptr, o_ptr, flgs); | |
229 | + if (has_flag(flgs, TR_IGNORE_FIRE)) | |
230 | + return FALSE; | |
231 | + return TRUE; | |
246 | 232 | } |
247 | 233 | |
248 | - | |
249 | 234 | /*! |
250 | -* @brief アイテムが冷気で破損するかどうかを判定する(メインルーチン) / | |
251 | -* Freeze things | |
252 | -* @param o_ptr アイテムの情報参照ポインタ | |
253 | -* @return 破損するならばTRUEを返す | |
254 | -* @todo 統合を検討 | |
255 | -*/ | |
235 | + * @brief アイテムが冷気で破損するかどうかを判定する(メインルーチン) / | |
236 | + * Freeze things | |
237 | + * @param o_ptr アイテムの情報参照ポインタ | |
238 | + * @return 破損するならばTRUEを返す | |
239 | + * @todo 統合を検討 | |
240 | + */ | |
256 | 241 | int set_cold_destroy(player_type *owner_ptr, object_type *o_ptr) |
257 | 242 | { |
258 | - BIT_FLAGS flgs[TR_FLAG_SIZE]; | |
259 | - if (!hates_cold(o_ptr)) return FALSE; | |
260 | - object_flags(owner_ptr, o_ptr, flgs); | |
261 | - if (has_flag(flgs, TR_IGNORE_COLD)) return FALSE; | |
262 | - return TRUE; | |
243 | + BIT_FLAGS flgs[TR_FLAG_SIZE]; | |
244 | + if (!hates_cold(o_ptr)) | |
245 | + return FALSE; | |
246 | + object_flags(owner_ptr, o_ptr, flgs); | |
247 | + if (has_flag(flgs, TR_IGNORE_COLD)) | |
248 | + return FALSE; | |
249 | + return TRUE; | |
263 | 250 | } |
264 | 251 | |
265 | - | |
266 | 252 | /*! |
267 | 253 | * @brief 薬の破損効果処理 / |
268 | 254 | * Potions "smash open" and cause an area effect when |
@@ -292,137 +278,141 @@ int set_cold_destroy(player_type *owner_ptr, object_type *o_ptr) | ||
292 | 278 | */ |
293 | 279 | bool potion_smash_effect(player_type *owner_ptr, MONSTER_IDX who, POSITION y, POSITION x, KIND_OBJECT_IDX k_idx) |
294 | 280 | { |
295 | - int radius = 2; | |
296 | - int dt = 0; | |
297 | - int dam = 0; | |
298 | - bool angry = FALSE; | |
299 | - object_kind *k_ptr = &k_info[k_idx]; | |
300 | - switch (k_ptr->sval) | |
301 | - { | |
302 | - case SV_POTION_SALT_WATER: | |
303 | - case SV_POTION_SLIME_MOLD: | |
304 | - case SV_POTION_LOSE_MEMORIES: | |
305 | - case SV_POTION_DEC_STR: | |
306 | - case SV_POTION_DEC_INT: | |
307 | - case SV_POTION_DEC_WIS: | |
308 | - case SV_POTION_DEC_DEX: | |
309 | - case SV_POTION_DEC_CON: | |
310 | - case SV_POTION_DEC_CHR: | |
311 | - case SV_POTION_WATER: /* perhaps a 'water' attack? */ | |
312 | - case SV_POTION_APPLE_JUICE: | |
313 | - return TRUE; | |
314 | - | |
315 | - case SV_POTION_INFRAVISION: | |
316 | - case SV_POTION_DETECT_INVIS: | |
317 | - case SV_POTION_SLOW_POISON: | |
318 | - case SV_POTION_CURE_POISON: | |
319 | - case SV_POTION_BOLDNESS: | |
320 | - case SV_POTION_RESIST_HEAT: | |
321 | - case SV_POTION_RESIST_COLD: | |
322 | - case SV_POTION_HEROISM: | |
323 | - case SV_POTION_BESERK_STRENGTH: | |
324 | - case SV_POTION_RES_STR: | |
325 | - case SV_POTION_RES_INT: | |
326 | - case SV_POTION_RES_WIS: | |
327 | - case SV_POTION_RES_DEX: | |
328 | - case SV_POTION_RES_CON: | |
329 | - case SV_POTION_RES_CHR: | |
330 | - case SV_POTION_INC_STR: | |
331 | - case SV_POTION_INC_INT: | |
332 | - case SV_POTION_INC_WIS: | |
333 | - case SV_POTION_INC_DEX: | |
334 | - case SV_POTION_INC_CON: | |
335 | - case SV_POTION_INC_CHR: | |
336 | - case SV_POTION_AUGMENTATION: | |
337 | - case SV_POTION_ENLIGHTENMENT: | |
338 | - case SV_POTION_STAR_ENLIGHTENMENT: | |
339 | - case SV_POTION_SELF_KNOWLEDGE: | |
340 | - case SV_POTION_EXPERIENCE: | |
341 | - case SV_POTION_RESISTANCE: | |
342 | - case SV_POTION_INVULNERABILITY: | |
343 | - case SV_POTION_NEW_LIFE: | |
344 | - /* All of the above potions have no effect when shattered */ | |
345 | - return FALSE; | |
346 | - case SV_POTION_SLOWNESS: | |
347 | - dt = GF_OLD_SLOW; | |
348 | - dam = 5; | |
349 | - angry = TRUE; | |
350 | - break; | |
351 | - case SV_POTION_POISON: | |
352 | - dt = GF_POIS; | |
353 | - dam = 3; | |
354 | - angry = TRUE; | |
355 | - break; | |
356 | - case SV_POTION_BLINDNESS: | |
357 | - dt = GF_DARK; | |
358 | - angry = TRUE; | |
359 | - break; | |
360 | - case SV_POTION_BOOZE: | |
361 | - dt = GF_OLD_CONF; | |
362 | - angry = TRUE; | |
363 | - break; | |
364 | - case SV_POTION_SLEEP: | |
365 | - dt = GF_OLD_SLEEP; | |
366 | - angry = TRUE; | |
367 | - break; | |
368 | - case SV_POTION_RUINATION: | |
369 | - case SV_POTION_DETONATIONS: | |
370 | - dt = GF_SHARDS; | |
371 | - dam = damroll(25, 25); | |
372 | - angry = TRUE; | |
373 | - break; | |
374 | - case SV_POTION_DEATH: | |
375 | - dt = GF_DEATH_RAY; | |
376 | - dam = k_ptr->level * 10; | |
377 | - angry = TRUE; | |
378 | - radius = 1; | |
379 | - break; | |
380 | - case SV_POTION_SPEED: | |
381 | - dt = GF_OLD_SPEED; | |
382 | - break; | |
383 | - case SV_POTION_CURE_LIGHT: | |
384 | - dt = GF_OLD_HEAL; | |
385 | - dam = damroll(2, 3); | |
386 | - break; | |
387 | - case SV_POTION_CURE_SERIOUS: | |
388 | - dt = GF_OLD_HEAL; | |
389 | - dam = damroll(4, 3); | |
390 | - break; | |
391 | - case SV_POTION_CURE_CRITICAL: | |
392 | - case SV_POTION_CURING: | |
393 | - dt = GF_OLD_HEAL; | |
394 | - dam = damroll(6, 3); | |
395 | - break; | |
396 | - case SV_POTION_HEALING: | |
397 | - dt = GF_OLD_HEAL; | |
398 | - dam = damroll(10, 10); | |
399 | - break; | |
400 | - case SV_POTION_RESTORE_EXP: | |
401 | - dt = GF_STAR_HEAL; | |
402 | - dam = 0; | |
403 | - radius = 1; | |
404 | - break; | |
405 | - case SV_POTION_LIFE: | |
406 | - dt = GF_STAR_HEAL; | |
407 | - dam = damroll(50, 50); | |
408 | - radius = 1; | |
409 | - break; | |
410 | - case SV_POTION_STAR_HEALING: | |
411 | - dt = GF_OLD_HEAL; | |
412 | - dam = damroll(50, 50); | |
413 | - radius = 1; | |
414 | - break; | |
415 | - case SV_POTION_RESTORE_MANA: | |
416 | - dt = GF_MANA; | |
417 | - dam = damroll(10, 10); | |
418 | - radius = 1; | |
419 | - break; | |
420 | - default: | |
421 | - break; | |
422 | - } | |
423 | - | |
424 | - (void)project(owner_ptr, who, radius, y, x, dam, dt, (PROJECT_JUMP | PROJECT_ITEM | PROJECT_KILL)); | |
425 | - return angry; | |
281 | + int radius = 2; | |
282 | + int dt = 0; | |
283 | + int dam = 0; | |
284 | + bool angry = FALSE; | |
285 | + object_kind *k_ptr = &k_info[k_idx]; | |
286 | + switch (k_ptr->sval) { | |
287 | + case SV_POTION_SALT_WATER: | |
288 | + case SV_POTION_SLIME_MOLD: | |
289 | + case SV_POTION_LOSE_MEMORIES: | |
290 | + case SV_POTION_DEC_STR: | |
291 | + case SV_POTION_DEC_INT: | |
292 | + case SV_POTION_DEC_WIS: | |
293 | + case SV_POTION_DEC_DEX: | |
294 | + case SV_POTION_DEC_CON: | |
295 | + case SV_POTION_DEC_CHR: | |
296 | + case SV_POTION_WATER: /* perhaps a 'water' attack? */ | |
297 | + case SV_POTION_APPLE_JUICE: | |
298 | + return TRUE; | |
299 | + | |
300 | + case SV_POTION_INFRAVISION: | |
301 | + case SV_POTION_DETECT_INVIS: | |
302 | + case SV_POTION_SLOW_POISON: | |
303 | + case SV_POTION_CURE_POISON: | |
304 | + case SV_POTION_BOLDNESS: | |
305 | + case SV_POTION_RESIST_HEAT: | |
306 | + case SV_POTION_RESIST_COLD: | |
307 | + case SV_POTION_HEROISM: | |
308 | + case SV_POTION_BESERK_STRENGTH: | |
309 | + case SV_POTION_RES_STR: | |
310 | + case SV_POTION_RES_INT: | |
311 | + case SV_POTION_RES_WIS: | |
312 | + case SV_POTION_RES_DEX: | |
313 | + case SV_POTION_RES_CON: | |
314 | + case SV_POTION_RES_CHR: | |
315 | + case SV_POTION_INC_STR: | |
316 | + case SV_POTION_INC_INT: | |
317 | + case SV_POTION_INC_WIS: | |
318 | + case SV_POTION_INC_DEX: | |
319 | + case SV_POTION_INC_CON: | |
320 | + case SV_POTION_INC_CHR: | |
321 | + case SV_POTION_AUGMENTATION: | |
322 | + case SV_POTION_ENLIGHTENMENT: | |
323 | + case SV_POTION_STAR_ENLIGHTENMENT: | |
324 | + case SV_POTION_SELF_KNOWLEDGE: | |
325 | + case SV_POTION_EXPERIENCE: | |
326 | + case SV_POTION_RESISTANCE: | |
327 | + case SV_POTION_INVULNERABILITY: | |
328 | + case SV_POTION_NEW_LIFE: | |
329 | + /* All of the above potions have no effect when shattered */ | |
330 | + return FALSE; | |
331 | + case SV_POTION_SLOWNESS: | |
332 | + dt = GF_OLD_SLOW; | |
333 | + dam = 5; | |
334 | + angry = TRUE; | |
335 | + break; | |
336 | + case SV_POTION_POISON: | |
337 | + dt = GF_POIS; | |
338 | + dam = 3; | |
339 | + angry = TRUE; | |
340 | + break; | |
341 | + case SV_POTION_BLINDNESS: | |
342 | + dt = GF_DARK; | |
343 | + angry = TRUE; | |
344 | + break; | |
345 | + case SV_POTION_BOOZE: | |
346 | + dt = GF_OLD_CONF; | |
347 | + angry = TRUE; | |
348 | + break; | |
349 | + case SV_POTION_SLEEP: | |
350 | + dt = GF_OLD_SLEEP; | |
351 | + angry = TRUE; | |
352 | + break; | |
353 | + case SV_POTION_RUINATION: | |
354 | + case SV_POTION_DETONATIONS: | |
355 | + dt = GF_SHARDS; | |
356 | + dam = damroll(25, 25); | |
357 | + angry = TRUE; | |
358 | + break; | |
359 | + case SV_POTION_DEATH: | |
360 | + dt = GF_DEATH_RAY; | |
361 | + dam = k_ptr->level * 10; | |
362 | + angry = TRUE; | |
363 | + radius = 1; | |
364 | + break; | |
365 | + case SV_POTION_SPEED: | |
366 | + dt = GF_OLD_SPEED; | |
367 | + break; | |
368 | + case SV_POTION_CURE_LIGHT: | |
369 | + dt = GF_OLD_HEAL; | |
370 | + dam = damroll(2, 3); | |
371 | + break; | |
372 | + case SV_POTION_CURE_SERIOUS: | |
373 | + dt = GF_OLD_HEAL; | |
374 | + dam = damroll(4, 3); | |
375 | + break; | |
376 | + case SV_POTION_CURE_CRITICAL: | |
377 | + case SV_POTION_CURING: | |
378 | + dt = GF_OLD_HEAL; | |
379 | + dam = damroll(6, 3); | |
380 | + break; | |
381 | + case SV_POTION_HEALING: | |
382 | + dt = GF_OLD_HEAL; | |
383 | + dam = damroll(10, 10); | |
384 | + break; | |
385 | + case SV_POTION_RESTORE_EXP: | |
386 | + dt = GF_STAR_HEAL; | |
387 | + dam = 0; | |
388 | + radius = 1; | |
389 | + break; | |
390 | + case SV_POTION_LIFE: | |
391 | + dt = GF_STAR_HEAL; | |
392 | + dam = damroll(50, 50); | |
393 | + radius = 1; | |
394 | + break; | |
395 | + case SV_POTION_STAR_HEALING: | |
396 | + dt = GF_OLD_HEAL; | |
397 | + dam = damroll(50, 50); | |
398 | + radius = 1; | |
399 | + break; | |
400 | + case SV_POTION_RESTORE_MANA: | |
401 | + dt = GF_MANA; | |
402 | + dam = damroll(10, 10); | |
403 | + radius = 1; | |
404 | + break; | |
405 | + case SV_POTION_POLY_SELF: | |
406 | + dt = GF_NEXUS; | |
407 | + dam = damroll(20, 20); | |
408 | + radius = 1; | |
409 | + break; | |
410 | + default: | |
411 | + break; | |
412 | + } | |
413 | + | |
414 | + (void)project(owner_ptr, who, radius, y, x, dam, dt, (PROJECT_JUMP | PROJECT_ITEM | PROJECT_KILL)); | |
415 | + return angry; | |
426 | 416 | } |
427 | 417 | |
428 | 418 | /*! |
@@ -435,48 +425,53 @@ bool potion_smash_effect(player_type *owner_ptr, MONSTER_IDX who, POSITION y, PO | ||
435 | 425 | */ |
436 | 426 | PERCENTAGE breakage_chance(player_type *owner_ptr, object_type *o_ptr, bool has_archer_bonus, SPELL_IDX snipe_type) |
437 | 427 | { |
438 | - /* Examine the snipe type */ | |
439 | - if (snipe_type) | |
440 | - { | |
441 | - if (snipe_type == SP_KILL_WALL) return 100; | |
442 | - if (snipe_type == SP_EXPLODE) return 100; | |
443 | - if (snipe_type == SP_PIERCE) return 100; | |
444 | - if (snipe_type == SP_FINAL) return 100; | |
445 | - if (snipe_type == SP_NEEDLE) return 100; | |
446 | - if (snipe_type == SP_EVILNESS) return 40; | |
447 | - if (snipe_type == SP_HOLYNESS) return 40; | |
448 | - } | |
449 | - | |
450 | - /* Examine the item type */ | |
451 | - PERCENTAGE archer_bonus = (has_archer_bonus ? (PERCENTAGE)(owner_ptr->lev - 1) / 7 + 4 : 0); | |
452 | - switch (o_ptr->tval) | |
453 | - { | |
454 | - /* Always break */ | |
455 | - case TV_FLASK: | |
456 | - case TV_POTION: | |
457 | - case TV_BOTTLE: | |
458 | - case TV_FOOD: | |
459 | - case TV_JUNK: | |
460 | - return 100; | |
461 | - | |
462 | - /* Often break */ | |
463 | - case TV_LITE: | |
464 | - case TV_SCROLL: | |
465 | - case TV_SKELETON: | |
466 | - return 50; | |
467 | - | |
468 | - /* Sometimes break */ | |
469 | - case TV_WAND: | |
470 | - case TV_SPIKE: | |
471 | - return 25; | |
472 | - case TV_ARROW: | |
473 | - return 20 - archer_bonus * 2; | |
474 | - | |
475 | - /* Rarely break */ | |
476 | - case TV_SHOT: | |
477 | - case TV_BOLT: | |
478 | - return 10 - archer_bonus; | |
479 | - default: | |
480 | - return 10; | |
481 | - } | |
428 | + /* Examine the snipe type */ | |
429 | + if (snipe_type) { | |
430 | + if (snipe_type == SP_KILL_WALL) | |
431 | + return 100; | |
432 | + if (snipe_type == SP_EXPLODE) | |
433 | + return 100; | |
434 | + if (snipe_type == SP_PIERCE) | |
435 | + return 100; | |
436 | + if (snipe_type == SP_FINAL) | |
437 | + return 100; | |
438 | + if (snipe_type == SP_NEEDLE) | |
439 | + return 100; | |
440 | + if (snipe_type == SP_EVILNESS) | |
441 | + return 40; | |
442 | + if (snipe_type == SP_HOLYNESS) | |
443 | + return 40; | |
444 | + } | |
445 | + | |
446 | + /* Examine the item type */ | |
447 | + PERCENTAGE archer_bonus = (has_archer_bonus ? (PERCENTAGE)(owner_ptr->lev - 1) / 7 + 4 : 0); | |
448 | + switch (o_ptr->tval) { | |
449 | + /* Always break */ | |
450 | + case TV_FLASK: | |
451 | + case TV_POTION: | |
452 | + case TV_BOTTLE: | |
453 | + case TV_FOOD: | |
454 | + case TV_JUNK: | |
455 | + return 100; | |
456 | + | |
457 | + /* Often break */ | |
458 | + case TV_LITE: | |
459 | + case TV_SCROLL: | |
460 | + case TV_SKELETON: | |
461 | + return 50; | |
462 | + | |
463 | + /* Sometimes break */ | |
464 | + case TV_WAND: | |
465 | + case TV_SPIKE: | |
466 | + return 25; | |
467 | + case TV_ARROW: | |
468 | + return 20 - archer_bonus * 2; | |
469 | + | |
470 | + /* Rarely break */ | |
471 | + case TV_SHOT: | |
472 | + case TV_BOLT: | |
473 | + return 10 - archer_bonus; | |
474 | + default: | |
475 | + return 10; | |
476 | + } | |
482 | 477 | } |
@@ -56,7 +56,7 @@ enum sv_potion_type { | ||
56 | 56 | SV_POTION_INC_DEX = 51, |
57 | 57 | SV_POTION_INC_CON = 52, |
58 | 58 | SV_POTION_INC_CHR = 53, |
59 | - /* xxx */ | |
59 | + SV_POTION_POLY_SELF = 54, | |
60 | 60 | SV_POTION_AUGMENTATION = 55, |
61 | 61 | SV_POTION_ENLIGHTENMENT = 56, |
62 | 62 | SV_POTION_STAR_ENLIGHTENMENT = 57, |