リビジョン | 3fb67749dde26221865bf2a7cbc816bf6b7ab646 (tree) |
---|---|
日時 | 2019-02-16 19:19:47 |
作者 | Deskull <deskull@user...> |
コミッター | Deskull |
[Refactor] #37353 spells3.c から関数をいくつか spell-object.c へ移動。 / Move some functions in spells3.c to spell-object.c.
@@ -15,6 +15,7 @@ | ||
15 | 15 | #include "artifact.h" |
16 | 16 | #include "avatar.h" |
17 | 17 | #include "spells-status.h" |
18 | +#include "spells-object.h" | |
18 | 19 | #include "realm-hex.h" |
19 | 20 | #include "player-status.h" |
20 | 21 |
@@ -1033,11 +1033,6 @@ extern PERCENTAGE mod_spell_chance_2(PERCENTAGE chance); | ||
1033 | 1033 | extern PERCENTAGE spell_chance(SPELL_IDX spell, REALM_IDX realm); |
1034 | 1034 | extern bool spell_okay(int spell, bool learned, bool study_pray, int realm); |
1035 | 1035 | extern void print_spells(SPELL_IDX target_spell, SPELL_IDX *spells, int num, TERM_LEN y, TERM_LEN x, REALM_IDX realm); |
1036 | -extern bool rustproof(void); | |
1037 | -extern bool curse_armor(void); | |
1038 | -extern bool curse_weapon_object(bool force, object_type *o_ptr); | |
1039 | -extern bool curse_weapon(bool force, int slot); | |
1040 | -extern bool brand_bolts(void); | |
1041 | 1036 | extern bool polymorph_monster(POSITION y, POSITION x); |
1042 | 1037 | extern bool dimension_door(void); |
1043 | 1038 | extern bool mirror_tunnel(void); |
@@ -3,6 +3,7 @@ | ||
3 | 3 | #include "projection.h" |
4 | 4 | #include "spells-summon.h" |
5 | 5 | #include "spells-status.h" |
6 | +#include "spells-object.h" | |
6 | 7 | #include "avatar.h" |
7 | 8 | |
8 | 9 |
@@ -3,6 +3,7 @@ | ||
3 | 3 | #include "spells-object.h" |
4 | 4 | #include "object-hook.h" |
5 | 5 | #include "player-status.h" |
6 | +#include "avatar.h" | |
6 | 7 | |
7 | 8 | |
8 | 9 | typedef struct |
@@ -421,7 +422,6 @@ void amusement(POSITION y1, POSITION x1, int num, bool known) | ||
421 | 422 | /* Paranoia - reroll if nothing */ |
422 | 423 | if (!(i_ptr->k_idx)) continue; |
423 | 424 | |
424 | - /* Drop the object */ | |
425 | 425 | (void)drop_near(i_ptr, -1, y1, x1); |
426 | 426 | |
427 | 427 | num--; |
@@ -462,7 +462,234 @@ void acquirement(POSITION y1, POSITION x1, int num, bool great, bool special, bo | ||
462 | 462 | object_known(i_ptr); |
463 | 463 | } |
464 | 464 | |
465 | - /* Drop the object */ | |
466 | 465 | (void)drop_near(i_ptr, -1, y1, x1); |
467 | 466 | } |
468 | 467 | } |
468 | + | |
469 | +/*! | |
470 | + * @brief 防具呪縛処理 / | |
471 | + * Curse the players armor | |
472 | + * @return 実際に呪縛されたらTRUEを返す | |
473 | + */ | |
474 | +bool curse_armor(void) | |
475 | +{ | |
476 | + int i; | |
477 | + object_type *o_ptr; | |
478 | + | |
479 | + GAME_TEXT o_name[MAX_NLEN]; | |
480 | + | |
481 | + /* Curse the body armor */ | |
482 | + o_ptr = &inventory[INVEN_BODY]; | |
483 | + | |
484 | + /* Nothing to curse */ | |
485 | + if (!o_ptr->k_idx) return (FALSE); | |
486 | + | |
487 | + object_desc(o_name, o_ptr, OD_OMIT_PREFIX); | |
488 | + | |
489 | + /* Attempt a saving throw for artifacts */ | |
490 | + if (object_is_artifact(o_ptr) && (randint0(100) < 50)) | |
491 | + { | |
492 | + /* Cool */ | |
493 | +#ifdef JP | |
494 | + msg_format("%sが%sを包み込もうとしたが、%sはそれを跳ね返した!", | |
495 | + "恐怖の暗黒オーラ", "防具", o_name); | |
496 | +#else | |
497 | + msg_format("A %s tries to %s, but your %s resists the effects!", | |
498 | + "terrible black aura", "surround your armor", o_name); | |
499 | +#endif | |
500 | + | |
501 | + } | |
502 | + | |
503 | + /* not artifact or failed save... */ | |
504 | + else | |
505 | + { | |
506 | + msg_format(_("恐怖の暗黒オーラがあなたの%sを包み込んだ!", "A terrible black aura blasts your %s!"), o_name); | |
507 | + chg_virtue(V_ENCHANT, -5); | |
508 | + | |
509 | + /* Blast the armor */ | |
510 | + o_ptr->name1 = 0; | |
511 | + o_ptr->name2 = EGO_BLASTED; | |
512 | + o_ptr->to_a = 0 - randint1(5) - randint1(5); | |
513 | + o_ptr->to_h = 0; | |
514 | + o_ptr->to_d = 0; | |
515 | + o_ptr->ac = 0; | |
516 | + o_ptr->dd = 0; | |
517 | + o_ptr->ds = 0; | |
518 | + | |
519 | + for (i = 0; i < TR_FLAG_SIZE; i++) | |
520 | + o_ptr->art_flags[i] = 0; | |
521 | + | |
522 | + /* Curse it */ | |
523 | + o_ptr->curse_flags = TRC_CURSED; | |
524 | + | |
525 | + /* Break it */ | |
526 | + o_ptr->ident |= (IDENT_BROKEN); | |
527 | + p_ptr->update |= (PU_BONUS | PU_MANA); | |
528 | + p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER); | |
529 | + } | |
530 | + | |
531 | + return (TRUE); | |
532 | +} | |
533 | + | |
534 | +/*! | |
535 | + * @brief 武器呪縛処理 / | |
536 | + * Curse the players weapon | |
537 | + * @param force 無条件に呪縛を行うならばTRUE | |
538 | + * @param o_ptr 呪縛する武器のアイテム情報参照ポインタ | |
539 | + * @return 実際に呪縛されたらTRUEを返す | |
540 | + */ | |
541 | +bool curse_weapon_object(bool force, object_type *o_ptr) | |
542 | +{ | |
543 | + int i; | |
544 | + GAME_TEXT o_name[MAX_NLEN]; | |
545 | + | |
546 | + /* Nothing to curse */ | |
547 | + if (!o_ptr->k_idx) return (FALSE); | |
548 | + object_desc(o_name, o_ptr, OD_OMIT_PREFIX); | |
549 | + | |
550 | + /* Attempt a saving throw */ | |
551 | + if (object_is_artifact(o_ptr) && (randint0(100) < 50) && !force) | |
552 | + { | |
553 | + /* Cool */ | |
554 | +#ifdef JP | |
555 | + msg_format("%sが%sを包み込もうとしたが、%sはそれを跳ね返した!", | |
556 | + "恐怖の暗黒オーラ", "武器", o_name); | |
557 | +#else | |
558 | + msg_format("A %s tries to %s, but your %s resists the effects!", | |
559 | + "terrible black aura", "surround your weapon", o_name); | |
560 | +#endif | |
561 | + } | |
562 | + | |
563 | + /* not artifact or failed save... */ | |
564 | + else | |
565 | + { | |
566 | + if (!force) msg_format(_("恐怖の暗黒オーラがあなたの%sを包み込んだ!", "A terrible black aura blasts your %s!"), o_name); | |
567 | + chg_virtue(V_ENCHANT, -5); | |
568 | + | |
569 | + /* Shatter the weapon */ | |
570 | + o_ptr->name1 = 0; | |
571 | + o_ptr->name2 = EGO_SHATTERED; | |
572 | + o_ptr->to_h = 0 - randint1(5) - randint1(5); | |
573 | + o_ptr->to_d = 0 - randint1(5) - randint1(5); | |
574 | + o_ptr->to_a = 0; | |
575 | + o_ptr->ac = 0; | |
576 | + o_ptr->dd = 0; | |
577 | + o_ptr->ds = 0; | |
578 | + | |
579 | + for (i = 0; i < TR_FLAG_SIZE; i++) | |
580 | + o_ptr->art_flags[i] = 0; | |
581 | + | |
582 | + /* Curse it */ | |
583 | + o_ptr->curse_flags = TRC_CURSED; | |
584 | + | |
585 | + /* Break it */ | |
586 | + o_ptr->ident |= (IDENT_BROKEN); | |
587 | + p_ptr->update |= (PU_BONUS | PU_MANA); | |
588 | + p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER); | |
589 | + } | |
590 | + | |
591 | + return (TRUE); | |
592 | +} | |
593 | + | |
594 | +/*! | |
595 | + * @brief 武器呪縛処理のメインルーチン / | |
596 | + * Curse the players weapon | |
597 | + * @param force 無条件に呪縛を行うならばTRUE | |
598 | + * @param slot 呪縛する武器の装備スロット | |
599 | + * @return 実際に呪縛されたらTRUEを返す | |
600 | + */ | |
601 | +bool curse_weapon(bool force, int slot) | |
602 | +{ | |
603 | + /* Curse the weapon */ | |
604 | + return curse_weapon_object(force, &inventory[slot]); | |
605 | +} | |
606 | + | |
607 | + | |
608 | +/*! | |
609 | + * @brief 防具の錆止め防止処理 | |
610 | + * @return ターン消費を要する処理を行ったならばTRUEを返す | |
611 | + */ | |
612 | +bool rustproof(void) | |
613 | +{ | |
614 | + OBJECT_IDX item; | |
615 | + object_type *o_ptr; | |
616 | + GAME_TEXT o_name[MAX_NLEN]; | |
617 | + concptr q, s; | |
618 | + | |
619 | + /* Select a piece of armour */ | |
620 | + item_tester_hook = object_is_armour; | |
621 | + | |
622 | + q = _("どの防具に錆止めをしますか?", "Rustproof which piece of armour? "); | |
623 | + s = _("錆止めできるものがありません。", "You have nothing to rustproof."); | |
624 | + | |
625 | + o_ptr = choose_object(&item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT)); | |
626 | + if (!o_ptr) return FALSE; | |
627 | + | |
628 | + object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY)); | |
629 | + | |
630 | + add_flag(o_ptr->art_flags, TR_IGNORE_ACID); | |
631 | + | |
632 | + if ((o_ptr->to_a < 0) && !object_is_cursed(o_ptr)) | |
633 | + { | |
634 | +#ifdef JP | |
635 | + msg_format("%sは新品同様になった!", o_name); | |
636 | +#else | |
637 | + msg_format("%s %s look%s as good as new!", ((item >= 0) ? "Your" : "The"), o_name, ((o_ptr->number > 1) ? "" : "s")); | |
638 | +#endif | |
639 | + | |
640 | + o_ptr->to_a = 0; | |
641 | + } | |
642 | + | |
643 | +#ifdef JP | |
644 | + msg_format("%sは腐食しなくなった。", o_name); | |
645 | +#else | |
646 | + msg_format("%s %s %s now protected against corrosion.", ((item >= 0) ? "Your" : "The"), o_name, ((o_ptr->number > 1) ? "are" : "is")); | |
647 | +#endif | |
648 | + | |
649 | + calc_android_exp(); | |
650 | + return TRUE; | |
651 | +} | |
652 | + | |
653 | +/*! | |
654 | + * @brief ボルトのエゴ化処理(火炎エゴのみ) / | |
655 | + * Enchant some bolts | |
656 | + * @return 常にTRUEを返す | |
657 | + */ | |
658 | +bool brand_bolts(void) | |
659 | +{ | |
660 | + int i; | |
661 | + | |
662 | + /* Use the first acceptable bolts */ | |
663 | + for (i = 0; i < INVEN_PACK; i++) | |
664 | + { | |
665 | + object_type *o_ptr = &inventory[i]; | |
666 | + | |
667 | + /* Skip non-bolts */ | |
668 | + if (o_ptr->tval != TV_BOLT) continue; | |
669 | + | |
670 | + /* Skip artifacts and ego-items */ | |
671 | + if (object_is_artifact(o_ptr) || object_is_ego(o_ptr)) | |
672 | + continue; | |
673 | + | |
674 | + /* Skip cursed/broken items */ | |
675 | + if (object_is_cursed(o_ptr) || object_is_broken(o_ptr)) continue; | |
676 | + | |
677 | + /* Randomize */ | |
678 | + if (randint0(100) < 75) continue; | |
679 | + | |
680 | + msg_print(_("クロスボウの矢が炎のオーラに包まれた!", "Your bolts are covered in a fiery aura!")); | |
681 | + | |
682 | + /* Ego-item */ | |
683 | + o_ptr->name2 = EGO_FLAME; | |
684 | + enchant(o_ptr, randint0(3) + 4, ENCH_TOHIT | ENCH_TODAM); | |
685 | + return (TRUE); | |
686 | + } | |
687 | + | |
688 | + if (flush_failure) flush(); | |
689 | + | |
690 | + /* Fail */ | |
691 | + msg_print(_("炎で強化するのに失敗した。", "The fiery enchantment failed.")); | |
692 | + | |
693 | + return (TRUE); | |
694 | +} | |
695 | + |
@@ -4,3 +4,8 @@ extern bool create_ammo(void); | ||
4 | 4 | extern bool import_magic_device(void); |
5 | 5 | extern void amusement(POSITION y1, POSITION x1, int num, bool known); |
6 | 6 | extern void acquirement(POSITION y1, POSITION x1, int num, bool great, bool special, bool known); |
7 | +extern bool curse_armor(void); | |
8 | +extern bool curse_weapon_object(bool force, object_type *o_ptr); | |
9 | +extern bool curse_weapon(bool force, int slot); | |
10 | +extern bool rustproof(void); | |
11 | +extern bool brand_bolts(void); |
@@ -3851,237 +3851,6 @@ void print_spells(SPELL_IDX target_spell, SPELL_IDX *spells, int num, TERM_LEN y | ||
3851 | 3851 | prt("", y + i + 1, x); |
3852 | 3852 | } |
3853 | 3853 | |
3854 | - | |
3855 | - | |
3856 | -/*! | |
3857 | - * @brief 防具の錆止め防止処理 | |
3858 | - * @return ターン消費を要する処理を行ったならばTRUEを返す | |
3859 | - */ | |
3860 | -bool rustproof(void) | |
3861 | -{ | |
3862 | - OBJECT_IDX item; | |
3863 | - object_type *o_ptr; | |
3864 | - GAME_TEXT o_name[MAX_NLEN]; | |
3865 | - concptr q, s; | |
3866 | - | |
3867 | - /* Select a piece of armour */ | |
3868 | - item_tester_hook = object_is_armour; | |
3869 | - | |
3870 | - q = _("どの防具に錆止めをしますか?", "Rustproof which piece of armour? "); | |
3871 | - s = _("錆止めできるものがありません。", "You have nothing to rustproof."); | |
3872 | - | |
3873 | - o_ptr = choose_object(&item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT)); | |
3874 | - if (!o_ptr) return FALSE; | |
3875 | - | |
3876 | - object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY)); | |
3877 | - | |
3878 | - add_flag(o_ptr->art_flags, TR_IGNORE_ACID); | |
3879 | - | |
3880 | - if ((o_ptr->to_a < 0) && !object_is_cursed(o_ptr)) | |
3881 | - { | |
3882 | -#ifdef JP | |
3883 | - msg_format("%sは新品同様になった!",o_name); | |
3884 | -#else | |
3885 | - msg_format("%s %s look%s as good as new!", ((item >= 0) ? "Your" : "The"), o_name, ((o_ptr->number > 1) ? "" : "s")); | |
3886 | -#endif | |
3887 | - | |
3888 | - o_ptr->to_a = 0; | |
3889 | - } | |
3890 | - | |
3891 | -#ifdef JP | |
3892 | - msg_format("%sは腐食しなくなった。", o_name); | |
3893 | -#else | |
3894 | - msg_format("%s %s %s now protected against corrosion.", ((item >= 0) ? "Your" : "The"), o_name, ((o_ptr->number > 1) ? "are" : "is")); | |
3895 | -#endif | |
3896 | - | |
3897 | - calc_android_exp(); | |
3898 | - return TRUE; | |
3899 | -} | |
3900 | - | |
3901 | - | |
3902 | -/*! | |
3903 | - * @brief 防具呪縛処理 / | |
3904 | - * Curse the players armor | |
3905 | - * @return 実際に呪縛されたらTRUEを返す | |
3906 | - */ | |
3907 | -bool curse_armor(void) | |
3908 | -{ | |
3909 | - int i; | |
3910 | - object_type *o_ptr; | |
3911 | - | |
3912 | - GAME_TEXT o_name[MAX_NLEN]; | |
3913 | - | |
3914 | - /* Curse the body armor */ | |
3915 | - o_ptr = &inventory[INVEN_BODY]; | |
3916 | - | |
3917 | - /* Nothing to curse */ | |
3918 | - if (!o_ptr->k_idx) return (FALSE); | |
3919 | - | |
3920 | - object_desc(o_name, o_ptr, OD_OMIT_PREFIX); | |
3921 | - | |
3922 | - /* Attempt a saving throw for artifacts */ | |
3923 | - if (object_is_artifact(o_ptr) && (randint0(100) < 50)) | |
3924 | - { | |
3925 | - /* Cool */ | |
3926 | -#ifdef JP | |
3927 | - msg_format("%sが%sを包み込もうとしたが、%sはそれを跳ね返した!", | |
3928 | - "恐怖の暗黒オーラ", "防具", o_name); | |
3929 | -#else | |
3930 | - msg_format("A %s tries to %s, but your %s resists the effects!", | |
3931 | - "terrible black aura", "surround your armor", o_name); | |
3932 | -#endif | |
3933 | - | |
3934 | - } | |
3935 | - | |
3936 | - /* not artifact or failed save... */ | |
3937 | - else | |
3938 | - { | |
3939 | - msg_format(_("恐怖の暗黒オーラがあなたの%sを包み込んだ!", "A terrible black aura blasts your %s!"), o_name); | |
3940 | - chg_virtue(V_ENCHANT, -5); | |
3941 | - | |
3942 | - /* Blast the armor */ | |
3943 | - o_ptr->name1 = 0; | |
3944 | - o_ptr->name2 = EGO_BLASTED; | |
3945 | - o_ptr->to_a = 0 - randint1(5) - randint1(5); | |
3946 | - o_ptr->to_h = 0; | |
3947 | - o_ptr->to_d = 0; | |
3948 | - o_ptr->ac = 0; | |
3949 | - o_ptr->dd = 0; | |
3950 | - o_ptr->ds = 0; | |
3951 | - | |
3952 | - for (i = 0; i < TR_FLAG_SIZE; i++) | |
3953 | - o_ptr->art_flags[i] = 0; | |
3954 | - | |
3955 | - /* Curse it */ | |
3956 | - o_ptr->curse_flags = TRC_CURSED; | |
3957 | - | |
3958 | - /* Break it */ | |
3959 | - o_ptr->ident |= (IDENT_BROKEN); | |
3960 | - p_ptr->update |= (PU_BONUS | PU_MANA); | |
3961 | - p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER); | |
3962 | - } | |
3963 | - | |
3964 | - return (TRUE); | |
3965 | -} | |
3966 | - | |
3967 | -/*! | |
3968 | - * @brief 武器呪縛処理 / | |
3969 | - * Curse the players weapon | |
3970 | - * @param force 無条件に呪縛を行うならばTRUE | |
3971 | - * @param o_ptr 呪縛する武器のアイテム情報参照ポインタ | |
3972 | - * @return 実際に呪縛されたらTRUEを返す | |
3973 | - */ | |
3974 | -bool curse_weapon_object(bool force, object_type *o_ptr) | |
3975 | -{ | |
3976 | - int i; | |
3977 | - GAME_TEXT o_name[MAX_NLEN]; | |
3978 | - | |
3979 | - /* Nothing to curse */ | |
3980 | - if (!o_ptr->k_idx) return (FALSE); | |
3981 | - object_desc(o_name, o_ptr, OD_OMIT_PREFIX); | |
3982 | - | |
3983 | - /* Attempt a saving throw */ | |
3984 | - if (object_is_artifact(o_ptr) && (randint0(100) < 50) && !force) | |
3985 | - { | |
3986 | - /* Cool */ | |
3987 | -#ifdef JP | |
3988 | - msg_format("%sが%sを包み込もうとしたが、%sはそれを跳ね返した!", | |
3989 | - "恐怖の暗黒オーラ", "武器", o_name); | |
3990 | -#else | |
3991 | - msg_format("A %s tries to %s, but your %s resists the effects!", | |
3992 | - "terrible black aura", "surround your weapon", o_name); | |
3993 | -#endif | |
3994 | - } | |
3995 | - | |
3996 | - /* not artifact or failed save... */ | |
3997 | - else | |
3998 | - { | |
3999 | - if (!force) msg_format(_("恐怖の暗黒オーラがあなたの%sを包み込んだ!", "A terrible black aura blasts your %s!"), o_name); | |
4000 | - chg_virtue(V_ENCHANT, -5); | |
4001 | - | |
4002 | - /* Shatter the weapon */ | |
4003 | - o_ptr->name1 = 0; | |
4004 | - o_ptr->name2 = EGO_SHATTERED; | |
4005 | - o_ptr->to_h = 0 - randint1(5) - randint1(5); | |
4006 | - o_ptr->to_d = 0 - randint1(5) - randint1(5); | |
4007 | - o_ptr->to_a = 0; | |
4008 | - o_ptr->ac = 0; | |
4009 | - o_ptr->dd = 0; | |
4010 | - o_ptr->ds = 0; | |
4011 | - | |
4012 | - for (i = 0; i < TR_FLAG_SIZE; i++) | |
4013 | - o_ptr->art_flags[i] = 0; | |
4014 | - | |
4015 | - /* Curse it */ | |
4016 | - o_ptr->curse_flags = TRC_CURSED; | |
4017 | - | |
4018 | - /* Break it */ | |
4019 | - o_ptr->ident |= (IDENT_BROKEN); | |
4020 | - p_ptr->update |= (PU_BONUS | PU_MANA); | |
4021 | - p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER); | |
4022 | - } | |
4023 | - | |
4024 | - return (TRUE); | |
4025 | -} | |
4026 | - | |
4027 | -/*! | |
4028 | - * @brief 武器呪縛処理のメインルーチン / | |
4029 | - * Curse the players weapon | |
4030 | - * @param force 無条件に呪縛を行うならばTRUE | |
4031 | - * @param slot 呪縛する武器の装備スロット | |
4032 | - * @return 実際に呪縛されたらTRUEを返す | |
4033 | - */ | |
4034 | -bool curse_weapon(bool force, int slot) | |
4035 | -{ | |
4036 | - /* Curse the weapon */ | |
4037 | - return curse_weapon_object(force, &inventory[slot]); | |
4038 | -} | |
4039 | - | |
4040 | - | |
4041 | -/*! | |
4042 | - * @brief ボルトのエゴ化処理(火炎エゴのみ) / | |
4043 | - * Enchant some bolts | |
4044 | - * @return 常にTRUEを返す | |
4045 | - */ | |
4046 | -bool brand_bolts(void) | |
4047 | -{ | |
4048 | - int i; | |
4049 | - | |
4050 | - /* Use the first acceptable bolts */ | |
4051 | - for (i = 0; i < INVEN_PACK; i++) | |
4052 | - { | |
4053 | - object_type *o_ptr = &inventory[i]; | |
4054 | - | |
4055 | - /* Skip non-bolts */ | |
4056 | - if (o_ptr->tval != TV_BOLT) continue; | |
4057 | - | |
4058 | - /* Skip artifacts and ego-items */ | |
4059 | - if (object_is_artifact(o_ptr) || object_is_ego(o_ptr)) | |
4060 | - continue; | |
4061 | - | |
4062 | - /* Skip cursed/broken items */ | |
4063 | - if (object_is_cursed(o_ptr) || object_is_broken(o_ptr)) continue; | |
4064 | - | |
4065 | - /* Randomize */ | |
4066 | - if (randint0(100) < 75) continue; | |
4067 | - | |
4068 | - msg_print(_("クロスボウの矢が炎のオーラに包まれた!", "Your bolts are covered in a fiery aura!")); | |
4069 | - | |
4070 | - /* Ego-item */ | |
4071 | - o_ptr->name2 = EGO_FLAME; | |
4072 | - enchant(o_ptr, randint0(3) + 4, ENCH_TOHIT | ENCH_TODAM); | |
4073 | - return (TRUE); | |
4074 | - } | |
4075 | - | |
4076 | - if (flush_failure) flush(); | |
4077 | - | |
4078 | - /* Fail */ | |
4079 | - msg_print(_("炎で強化するのに失敗した。", "The fiery enchantment failed.")); | |
4080 | - | |
4081 | - return (TRUE); | |
4082 | -} | |
4083 | - | |
4084 | - | |
4085 | 3854 | /*! |
4086 | 3855 | * @brief 変身処理向けにモンスターの近隣レベル帯モンスターを返す / |
4087 | 3856 | * Helper function -- return a "nearby" race for polymorphing |