OSDN Git Service

Add Item flags.
authordis- <dis-@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 9 Jun 2013 14:22:39 +0000 (14:22 +0000)
committerdis- <dis-@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 9 Jun 2013 14:22:39 +0000 (14:22 +0000)
  TR_CALL_ANIMAL
  TR_CALL_DEMON
  TR_CALL_DRAGON
  TR_CALL_UNDEAD
  TR_COWARDICE
  TR_LOW_MELEE
  TR_LOW_AC
  TR_LOW_MAGIC
  TR_FAST_DIGEST
  TR_SLOW_REGEN

src/defines.h
src/dungeon.c
src/init1.c
src/object1.c
src/xtra1.c

index f112059..e895ee0 100644 (file)
@@ -76,7 +76,7 @@
 #define H_VER_MAJOR 2
 #define H_VER_MINOR 1
 #define H_VER_PATCH 2
-#define H_VER_EXTRA 2
+#define H_VER_EXTRA 3
 
 
 #define ANGBAND_2_8_1
 #define TR_SHOW_MODS           74     /* Always show Tohit/Todam */
 #define TR_SLAY_GOOD           75
 #define TR_LEVITATION          76     /* Feather Falling */
+#define TR_LITE_1              77     /* Light Radius 1*/
 #define TR_SEE_INVIS           78     /* See Invisible */
 #define TR_TELEPATHY           79     /* Telepathy */
 #define TR_SLOW_DIGEST         80     /* Item slows down digestion */
 #define TR_ADD_H_CURSE         119
 #define TR_DRAIN_HP            120
 #define TR_DRAIN_MANA          121
-
-#define TR_LITE_1              77     /* Light Radius 1*/
 #define TR_LITE_2                         122
 #define TR_LITE_3                         123
 #define TR_LITE_M1                        124    /* Permanent decrease Light Area (-1) */
 #define TR_LITE_M3                        126    /* Permanent decrease Light Area (-1) */
 #define TR_LITE_FUEL              127    /* Lights need Fuels */
 
-#define TR_FLAG_MAX            128
+#define TR_CALL_ANIMAL         128
+#define TR_CALL_DEMON          129
+#define TR_CALL_DRAGON         130
+#define TR_CALL_UNDEAD         131
+#define TR_COWARDICE           132
+#define TR_LOW_MELEE           133
+#define TR_LOW_AC              134
+#define TR_LOW_MAGIC           135
+#define TR_FAST_DIGEST         136
+#define TR_SLOW_REGEN          137
+
+#define TR_FLAG_MAX            138
 #define TR_FLAG_SIZE           4
 
 
 #define TRC_FAST_DIGEST         0x00040000L
 #define TRC_DRAIN_HP            0x00080000L
 #define TRC_DRAIN_MANA          0x00100000L
+#define TRC_CALL_UNDEAD         0x00200000L
 
 #define TRC_TELEPORT_SELF       0x00000001L
 #define TRC_CHAINSWORD          0x00000002L
index 2f404ad..ee1e482 100644 (file)
@@ -2992,11 +2992,7 @@ static void process_world_aux_curse(void)
                if ((p_ptr->cursed & TRC_CHAINSWORD) && one_in_(CHAINSWORD_NOISE))
                {
                        char noise[1024];
-#ifdef JP
-                       if (!get_rnd_line("chainswd_j.txt", 0, noise))
-#else
-                       if (!get_rnd_line("chainswd.txt", 0, noise))
-#endif
+                       if (!get_rnd_line(_("chainswd_j.txt", "chainswd.txt"), 0, noise))
                                msg_print(noise);
                        disturb(FALSE, FALSE);
                }
@@ -3032,11 +3028,7 @@ static void process_world_aux_curse(void)
                                object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
 
                                o_ptr->curse_flags |= new_curse;
-#ifdef JP
-                               msg_format("°­°Õ¤ËËþ¤Á¤¿¹õ¤¤¥ª¡¼¥é¤¬%s¤ò¤È¤ê¤Þ¤¤¤¿...", o_name);
-#else
-                               msg_format("There is a malignant black aura surrounding your %s...", o_name);
-#endif
+                               msg_format(_("°­°Õ¤ËËþ¤Á¤¿¹õ¤¤¥ª¡¼¥é¤¬%s¤ò¤È¤ê¤Þ¤¤¤¿...", "There is a malignant black aura surrounding your %s..."), o_name);
 
                                o_ptr->feeling = FEEL_NONE;
 
@@ -3059,12 +3051,7 @@ static void process_world_aux_curse(void)
                                object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
 
                                o_ptr->curse_flags |= new_curse;
-#ifdef JP
-                               msg_format("°­°Õ¤ËËþ¤Á¤¿¹õ¤¤¥ª¡¼¥é¤¬%s¤ò¤È¤ê¤Þ¤¤¤¿...", o_name);
-#else
-                               msg_format("There is a malignant black aura surrounding your %s...", o_name);
-#endif
-
+                               msg_format(_("°­°Õ¤ËËþ¤Á¤¿¹õ¤¤¥ª¡¼¥é¤¬%s¤ò¤È¤ê¤Þ¤¤¤¿...", "There is a malignant black aura surrounding your %s..."), o_name);
                                o_ptr->feeling = FEEL_NONE;
 
                                p_ptr->update |= (PU_BONUS);
@@ -3079,12 +3066,7 @@ static void process_world_aux_curse(void)
                                char o_name[MAX_NLEN];
 
                                object_desc(o_name, choose_cursed_obj_name(TRC_CALL_ANIMAL), (OD_OMIT_PREFIX | OD_NAME_ONLY));
-#ifdef JP
-                               msg_format("%s¤¬Æ°Êª¤ò°ú¤­´ó¤»¤¿¡ª", o_name);
-#else
-                               msg_format("Your %s have attracted an animal!", o_name);
-#endif
-
+                               msg_format(_("%s¤¬Æ°Êª¤ò°ú¤­´ó¤»¤¿¡ª", "Your %s have attracted an animal!"), o_name);
                                disturb(0, 1);
                        }
                }
@@ -3096,12 +3078,7 @@ static void process_world_aux_curse(void)
                                char o_name[MAX_NLEN];
 
                                object_desc(o_name, choose_cursed_obj_name(TRC_CALL_DEMON), (OD_OMIT_PREFIX | OD_NAME_ONLY));
-#ifdef JP
-                               msg_format("%s¤¬°­Ëâ¤ò°ú¤­´ó¤»¤¿¡ª", o_name);
-#else
-                               msg_format("Your %s have attracted a demon!", o_name);
-#endif
-
+                               msg_format(_("%s¤¬°­Ëâ¤ò°ú¤­´ó¤»¤¿¡ª", "Your %s have attracted a demon!"), o_name);
                                disturb(0, 1);
                        }
                }
@@ -3114,12 +3091,20 @@ static void process_world_aux_curse(void)
                                char o_name[MAX_NLEN];
 
                                object_desc(o_name, choose_cursed_obj_name(TRC_CALL_DRAGON), (OD_OMIT_PREFIX | OD_NAME_ONLY));
-#ifdef JP
-                               msg_format("%s¤¬¥É¥é¥´¥ó¤ò°ú¤­´ó¤»¤¿¡ª", o_name);
-#else
-                               msg_format("Your %s have attracted an animal!", o_name);
-#endif
+                               msg_format(_("%s¤¬¥É¥é¥´¥ó¤ò°ú¤­´ó¤»¤¿¡ª", "Your %s have attracted an dragon!"), o_name);
+                               disturb(0, 1);
+                       }
+               }
+               /* Call undead */
+               if ((p_ptr->cursed & TRC_CALL_UNDEAD) && one_in_(1111))
+               {
+                       if (summon_specific(0, py, px, dun_level, SUMMON_UNDEAD,
+                           (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))
+                       {
+                               char o_name[MAX_NLEN];
 
+                               object_desc(o_name, choose_cursed_obj_name(TRC_CALL_DRAGON), (OD_OMIT_PREFIX | OD_NAME_ONLY));
+                               msg_format(_("%s¤¬»àÎî¤ò°ú¤­´ó¤»¤¿¡ª", "Your %s have attracted an undead!"), o_name);
                                disturb(0, 1);
                        }
                }
@@ -3128,12 +3113,7 @@ static void process_world_aux_curse(void)
                        if (!p_ptr->resist_fear)
                        {
                                disturb(0, 1);
-#ifdef JP
-                               msg_print("¤È¤Æ¤â°Å¤¤... ¤È¤Æ¤â¶²¤¤¡ª");
-#else
-                               msg_print("It's so dark... so scary!");
-#endif
-
+                               msg_print(_("¤È¤Æ¤â°Å¤¤... ¤È¤Æ¤â¶²¤¤¡ª", "It's so dark... so scary!"));
                                set_afraid(p_ptr->afraid + 13 + randint1(26));
                        }
                }
@@ -3151,11 +3131,7 @@ static void process_world_aux_curse(void)
                        char o_name[MAX_NLEN];
 
                        object_desc(o_name, choose_cursed_obj_name(TRC_DRAIN_HP), (OD_OMIT_PREFIX | OD_NAME_ONLY));
-#ifdef JP
-                       msg_format("%s¤Ï¤¢¤Ê¤¿¤ÎÂÎÎϤòµÛ¼ý¤·¤¿¡ª", o_name);
-#else
-                       msg_format("Your %s drains HP from you!", o_name);
-#endif
+                       msg_format(_("%s¤Ï¤¢¤Ê¤¿¤ÎÂÎÎϤòµÛ¼ý¤·¤¿¡ª", "Your %s drains HP from you!"), o_name);
                        take_hit(DAMAGE_LOSELIFE, MIN(p_ptr->lev*2, 100), o_name, -1);
                }
                /* Handle mana draining */
@@ -3164,11 +3140,7 @@ static void process_world_aux_curse(void)
                        char o_name[MAX_NLEN];
 
                        object_desc(o_name, choose_cursed_obj_name(TRC_DRAIN_MANA), (OD_OMIT_PREFIX | OD_NAME_ONLY));
-#ifdef JP
-                       msg_format("%s¤Ï¤¢¤Ê¤¿¤ÎËâÎϤòµÛ¼ý¤·¤¿¡ª", o_name);
-#else
-                       msg_format("Your %s drains mana from you!", o_name);
-#endif
+                       msg_format(_("%s¤Ï¤¢¤Ê¤¿¤ÎËâÎϤòµÛ¼ý¤·¤¿¡ª", "Your %s drains mana from you!"), o_name);
                        p_ptr->csp -= MIN(p_ptr->lev, 50);
                        if (p_ptr->csp < 0)
                        {
index 7cb96ba..a80a514 100644 (file)
@@ -785,9 +785,19 @@ static cptr k_info_flags[] =
        "LITE_M2",
        "LITE_M3",
        "LITE_FUEL",
+       
+       "CALL_ANIMAL",
+       "CALL_DEMON",
+       "CALL_DRAGON",
+       "CALL_UNDEAD",
+       "COWARDICE",
+       "LOW_MELEE",
+       "LOW_AC",
+       "LOW_MAGIC",
+       "FAST_DIGEST",
+       "SLOW_REGEN",
 };
 
-
 static cptr k_info_gen_flags[] =
 {
        "INSTA_ART",
index a194eaa..469aa10 100644 (file)
@@ -1672,19 +1672,23 @@ info[i++] = "
        {
                info[i++] = _("¤½¤ì¤Ï¶¯ÎϤʼö¤¤¤òÁý¤ä¤¹¡£","It adds heavy curses.");
        }
-       if (o_ptr->curse_flags & TRC_CALL_ANIMAL)
+       if ((have_flag(flgs, TR_CALL_ANIMAL)) || (o_ptr->curse_flags & TRC_CALL_ANIMAL))
        {
                info[i++] = _("¤½¤ì¤Ïưʪ¤ò¸Æ¤Ó´ó¤»¤ë¡£", "It attracts animals.");
        }
-       if (o_ptr->curse_flags & TRC_CALL_DEMON)
+       if ((have_flag(flgs, TR_CALL_DEMON)) || (o_ptr->curse_flags & TRC_CALL_DEMON))
        {
                info[i++] = _("¤½¤ì¤Ï°­Ëâ¤ò¸Æ¤Ó´ó¤»¤ë¡£", "It attracts demons.");
        }
-       if (o_ptr->curse_flags & TRC_CALL_DRAGON)
+       if ((have_flag(flgs, TR_CALL_DRAGON)) || (o_ptr->curse_flags & TRC_CALL_DRAGON))
        {
                info[i++] = _("¤½¤ì¤Ï¥É¥é¥´¥ó¤ò¸Æ¤Ó´ó¤»¤ë¡£", "It attracts dragons.");
        }
-       if (o_ptr->curse_flags & TRC_COWARDICE)
+       if ((have_flag(flgs, TR_CALL_UNDEAD)) || (o_ptr->curse_flags & TRC_CALL_UNDEAD))
+       {
+               info[i++] = _("¤½¤ì¤Ï»àÎî¤ò¸Æ¤Ó´ó¤»¤ë¡£", "It attracts undeads.");
+       }
+       if ((have_flag(flgs, TR_COWARDICE)) ||  (o_ptr->curse_flags & TRC_COWARDICE))
        {
                info[i++] = _("¤½¤ì¤Ï¶²ÉÝ´¶¤ò°ú¤­µ¯¤³¤¹¡£", "It makes you subject to cowardice.");
        }
@@ -1692,19 +1696,19 @@ info[i++] = "
        {
                info[i++] = _("¤½¤ì¤Ï¥é¥ó¥À¥à¤Ê¥Æ¥ì¥Ý¡¼¥È¤ò°ú¤­µ¯¤³¤¹¡£", "It induces random teleportation.");
        }
-       if (o_ptr->curse_flags & TRC_LOW_MELEE)
+       if ((have_flag(flgs, TR_LOW_MELEE)) || o_ptr->curse_flags & TRC_LOW_MELEE)
        {
                info[i++] = _("¤½¤ì¤Ï¹¶·â¤ò³°¤·¤ä¤¹¤¤¡£", "It causes you to miss blows.");
        }
-       if (o_ptr->curse_flags & TRC_LOW_AC)
+       if ((have_flag(flgs, TR_LOW_AC)) || (o_ptr->curse_flags & TRC_LOW_AC))
        {
                info[i++] = _("¤½¤ì¤Ï¹¶·â¤ò¼õ¤±¤ä¤¹¤¤¡£", "It helps your enemies' blows.");
        }
-       if (o_ptr->curse_flags & TRC_LOW_MAGIC)
+       if ((have_flag(flgs, TR_LOW_MAGIC)) || (o_ptr->curse_flags & TRC_LOW_MAGIC))
        {
                info[i++] = _("¤½¤ì¤ÏËâË¡¤ò¾§¤¨¤Ë¤¯¤¯¤¹¤ë¡£", "It encumbers you while spellcasting.");
        }
-       if (o_ptr->curse_flags & TRC_FAST_DIGEST)
+       if ((have_flag(flgs, TR_FAST_DIGEST)) || (o_ptr->curse_flags & TRC_FAST_DIGEST))
        {
                info[i++] = _("¤½¤ì¤Ï¤¢¤Ê¤¿¤Î¿·ÄÄÂå¼Õ¤ò®¤¯¤¹¤ë¡£", "It speeds your metabolism.");
        }
index 79d12d9..201a89a 100644 (file)
@@ -4195,6 +4195,16 @@ void calc_bonuses(void)
                if (have_flag(flgs, TR_ADD_H_CURSE)) p_ptr->cursed |= TRC_ADD_H_CURSE;
                if (have_flag(flgs, TR_DRAIN_HP))    p_ptr->cursed |= TRC_DRAIN_HP;
                if (have_flag(flgs, TR_DRAIN_MANA))  p_ptr->cursed |= TRC_DRAIN_MANA;
+               if (have_flag(flgs, TR_CALL_ANIMAL)) p_ptr->cursed |= TRC_CALL_ANIMAL;
+               if (have_flag(flgs, TR_CALL_DEMON))  p_ptr->cursed |= TRC_CALL_DEMON;
+               if (have_flag(flgs, TR_CALL_DRAGON)) p_ptr->cursed |= TRC_CALL_DRAGON;
+               if (have_flag(flgs, TR_CALL_UNDEAD)) p_ptr->cursed |= TRC_CALL_UNDEAD;
+               if (have_flag(flgs, TR_COWARDICE))   p_ptr->cursed |= TRC_COWARDICE;
+               if (have_flag(flgs, TR_LOW_MELEE))   p_ptr->cursed |= TRC_LOW_MELEE;
+               if (have_flag(flgs, TR_LOW_AC))      p_ptr->cursed |= TRC_LOW_AC;
+               if (have_flag(flgs, TR_LOW_MAGIC))   p_ptr->cursed |= TRC_LOW_MAGIC;
+               if (have_flag(flgs, TR_FAST_DIGEST)) p_ptr->cursed |= TRC_FAST_DIGEST;
+               if (have_flag(flgs, TR_SLOW_REGEN))  p_ptr->cursed |= TRC_SLOW_REGEN;
                if (have_flag(flgs, TR_DEC_MANA))    p_ptr->dec_mana = TRUE;
                if (have_flag(flgs, TR_BLESSED))     p_ptr->bless_blade = TRUE;
                if (have_flag(flgs, TR_XTRA_MIGHT))  p_ptr->xtra_might = TRUE;