OSDN Git Service

Add permanent drain_hp/mp flag.
authordis- <dis-@0568b783-4c39-0410-ac80-bf13821ea2a2>
Mon, 20 May 2013 14:51:39 +0000 (14:51 +0000)
committerdis- <dis-@0568b783-4c39-0410-ac80-bf13821ea2a2>
Mon, 20 May 2013 14:51:39 +0000 (14:51 +0000)
Demon Ego now has drain_hp or mp or exp.

lib/edit/e_info.txt
src/artifact.c
src/defines.h
src/dungeon.c
src/init1.c
src/object1.c
src/object2.c
src/wizard1.c
src/xtra1.c

index 71303f0..ce7a58a 100644 (file)
@@ -772,7 +772,7 @@ E:(Demonic)
 X:24:25
 W:0:30:0:15000
 C:6:6:-20:4
-F:INT | BRAND_FIRE |  
+F:INT | BRAND_FIRE | 
 F:RES_FIRE | RES_NETHER | SEE_INVIS | ESP_DEMON | XTRA_DICE
 
 N:102:¥â¥ë¥°¥ë¤Î
@@ -782,8 +782,8 @@ W:0:36:0:0
 C:20:20:10:0
 F:SEE_INVIS | AGGRAVATE | HEAVY_CURSE | CURSED | SH_COLD |
 F:SLAY_UNDEAD | SLAY_HUMAN | BRAND_POIS | ESP_UNDEAD |
-F:RES_COLD | RES_NETHER |
-F:RANDOM_CURSE2 | XTRA_DICE
+F:RES_COLD | RES_NETHER | 
+F:RANDOM_CURSE2 | XTRA_DICE 
 
 N:103:¿Í¶ô¤¤¤Î
 E:of Slay Human
index 364815f..dd01974 100644 (file)
@@ -317,6 +317,8 @@ static void curse_artifact(object_type * o_ptr)
        if (one_in_(3)) add_flag(o_ptr->art_flags, TR_DRAIN_EXP);
        if (one_in_(6)) add_flag(o_ptr->art_flags, TR_ADD_L_CURSE);
        if (one_in_(9)) add_flag(o_ptr->art_flags, TR_ADD_H_CURSE);
+       if (one_in_(9)) add_flag(o_ptr->art_flags, TR_DRAIN_HP);
+       if (one_in_(9)) add_flag(o_ptr->art_flags, TR_DRAIN_MANA);
        if (one_in_(2)) add_flag(o_ptr->art_flags, TR_TELEPORT);
        else if (one_in_(3)) add_flag(o_ptr->art_flags, TR_NO_TELE);
 
index 2ead087..27d156f 100644 (file)
 #define TR_FIXED_FLAVOR        117
 #define TR_ADD_L_CURSE         118
 #define TR_ADD_H_CURSE         119
+#define TR_DRAIN_HP            120
+#define TR_DRAIN_MANA          121
 
-#define TR_FLAG_MAX            120
+#define TR_FLAG_MAX            122
 #define TR_FLAG_SIZE           4
 
 
index b34acf3..8b082d7 100644 (file)
@@ -1519,9 +1519,17 @@ static object_type *choose_cursed_obj_name(u32b flag)
                        choices[number] = i;
                        number++;
                }
-               else if ((flag == TRC_ADD_L_CURSE) || (flag == TRC_ADD_H_CURSE))
+               else if ((flag == TRC_ADD_L_CURSE) || (flag == TRC_ADD_H_CURSE) || 
+                                       (flag == TRC_DRAIN_HP) || (flag == TRC_DRAIN_MANA) )
                {
-                       u32b cf = (flag == TRC_ADD_L_CURSE) ? TR_ADD_L_CURSE : TR_ADD_H_CURSE;
+                       u32b cf;
+                       switch (flag)
+                       {
+                         case TRC_ADD_L_CURSE  : cf = TR_ADD_L_CURSE; break;
+                         case TRC_ADD_H_CURSE  : cf = TR_ADD_H_CURSE; break;
+                         case TRC_DRAIN_HP             : cf = TR_DRAIN_HP; break;
+                         default                               : cf = TR_DRAIN_MANA; break;
+                       }
                        u32b flgs[4];
                        object_flags(o_ptr, flgs);
                        if (have_flag(flgs, cf))
index 33d2edb..a072d55 100644 (file)
@@ -776,6 +776,8 @@ static cptr k_info_flags[] =
        "FIXED_FLAVOR",
        "ADD_L_CURSE",
        "ADD_H_CURSE",
+       "DRAIN_HP",
+       "DRAIN_MANA",
 };
 
 
index 5659ec8..736cd8a 100644 (file)
@@ -1767,156 +1767,71 @@ info[i++] = "
 
        if ((have_flag(flgs, TR_TY_CURSE)) || (o_ptr->curse_flags & TRC_TY_CURSE))
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤ÏÂÀ¸Å¤Î²Ò¡¹¤·¤¤±åÇ°¤¬½É¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "It carries an ancient foul curse.";
-#endif
-
+               info[i++] = _("¤½¤ì¤ÏÂÀ¸Å¤Î²Ò¡¹¤·¤¤±åÇ°¤¬½É¤Ã¤Æ¤¤¤ë¡£", "It carries an ancient foul curse.");
        }
        if ((have_flag(flgs, TR_AGGRAVATE)) || (o_ptr->curse_flags & TRC_AGGRAVATE))
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤ÏÉÕ¶á¤Î¥â¥ó¥¹¥¿¡¼¤òÅܤ餻¤ë¡£";
-#else
-               info[i++] = "It aggravates nearby creatures.";
-#endif
-
+               info[i++] = _("¤½¤ì¤ÏÉÕ¶á¤Î¥â¥ó¥¹¥¿¡¼¤òÅܤ餻¤ë¡£", "It aggravates nearby creatures.");
        }
        if ((have_flag(flgs, TR_DRAIN_EXP)) || (o_ptr->curse_flags & TRC_DRAIN_EXP))
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï·Ð¸³ÃͤòµÛ¤¤¼è¤ë¡£";
-#else
-               info[i++] = "It drains experience.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ï·Ð¸³ÃͤòµÛ¤¤¼è¤ë¡£", "It drains experience.");
        }
        if (o_ptr->curse_flags & TRC_SLOW_REGEN)
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï²óÉüÎϤò¼å¤á¤ë¡£";
-#else
-               info[i++] = "It slows your regenerative powers.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ï²óÉüÎϤò¼å¤á¤ë¡£", "It slows your regenerative powers.");
        }
        if ((o_ptr->curse_flags & TRC_ADD_L_CURSE) || have_flag(flgs, TR_ADD_L_CURSE))
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï¼å¤¤¼ö¤¤¤òÁý¤ä¤¹¡£";
-#else
-               info[i++] = "It adds weak curses.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ï¼å¤¤¼ö¤¤¤òÁý¤ä¤¹¡£","It adds weak curses.");
        }
        if ((o_ptr->curse_flags & TRC_ADD_H_CURSE) || have_flag(flgs, TR_ADD_H_CURSE))
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï¶¯ÎϤʼö¤¤¤òÁý¤ä¤¹¡£";
-#else
-               info[i++] = "It adds heavy curses.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ï¶¯ÎϤʼö¤¤¤òÁý¤ä¤¹¡£","It adds heavy curses.");
        }
        if (o_ptr->curse_flags & TRC_CALL_ANIMAL)
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ïưʪ¤ò¸Æ¤Ó´ó¤»¤ë¡£";
-#else
-               info[i++] = "It attracts animals.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ïưʪ¤ò¸Æ¤Ó´ó¤»¤ë¡£", "It attracts animals.");
        }
        if (o_ptr->curse_flags & TRC_CALL_DEMON)
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï°­Ëâ¤ò¸Æ¤Ó´ó¤»¤ë¡£";
-#else
-               info[i++] = "It attracts demons.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ï°­Ëâ¤ò¸Æ¤Ó´ó¤»¤ë¡£", "It attracts demons.");
        }
        if (o_ptr->curse_flags & TRC_CALL_DRAGON)
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï¥É¥é¥´¥ó¤ò¸Æ¤Ó´ó¤»¤ë¡£";
-#else
-               info[i++] = "It attracts dragons.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ï¥É¥é¥´¥ó¤ò¸Æ¤Ó´ó¤»¤ë¡£", "It attracts dragons.");
        }
        if (o_ptr->curse_flags & TRC_COWARDICE)
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï¶²ÉÝ´¶¤ò°ú¤­µ¯¤³¤¹¡£";
-#else
-               info[i++] = "It makes you subject to cowardice.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ï¶²ÉÝ´¶¤ò°ú¤­µ¯¤³¤¹¡£", "It makes you subject to cowardice.");
        }
        if ((have_flag(flgs, TR_TELEPORT)) || (o_ptr->curse_flags & TRC_TELEPORT))
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï¥é¥ó¥À¥à¤Ê¥Æ¥ì¥Ý¡¼¥È¤ò°ú¤­µ¯¤³¤¹¡£";
-#else
-               info[i++] = "It induces random teleportation.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ï¥é¥ó¥À¥à¤Ê¥Æ¥ì¥Ý¡¼¥È¤ò°ú¤­µ¯¤³¤¹¡£", "It induces random teleportation.");
        }
        if (o_ptr->curse_flags & TRC_LOW_MELEE)
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï¹¶·â¤ò³°¤·¤ä¤¹¤¤¡£";
-#else
-               info[i++] = "It causes you to miss blows.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ï¹¶·â¤ò³°¤·¤ä¤¹¤¤¡£", "It causes you to miss blows.");
        }
        if (o_ptr->curse_flags & TRC_LOW_AC)
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï¹¶·â¤ò¼õ¤±¤ä¤¹¤¤¡£";
-#else
-               info[i++] = "It helps your enemies' blows.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ï¹¶·â¤ò¼õ¤±¤ä¤¹¤¤¡£", "It helps your enemies' blows.");
        }
        if (o_ptr->curse_flags & TRC_LOW_MAGIC)
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤ÏËâË¡¤ò¾§¤¨¤Ë¤¯¤¯¤¹¤ë¡£";
-#else
-               info[i++] = "It encumbers you while spellcasting.";
-#endif
-
+               info[i++] = _("¤½¤ì¤ÏËâË¡¤ò¾§¤¨¤Ë¤¯¤¯¤¹¤ë¡£", "It encumbers you while spellcasting.");
        }
        if (o_ptr->curse_flags & TRC_FAST_DIGEST)
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤Î¿·ÄÄÂå¼Õ¤ò®¤¯¤¹¤ë¡£";
-#else
-               info[i++] = "It speeds your metabolism.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ï¤¢¤Ê¤¿¤Î¿·ÄÄÂå¼Õ¤ò®¤¯¤¹¤ë¡£", "It speeds your metabolism.");
        }
-       if (o_ptr->curse_flags & TRC_DRAIN_HP)
+       if ((have_flag(flgs, TR_DRAIN_HP)) || (o_ptr->curse_flags & TRC_DRAIN_HP))
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤ÎÂÎÎϤòµÛ¤¤¼è¤ë¡£";
-#else
-               info[i++] = "It drains you.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ï¤¢¤Ê¤¿¤ÎÂÎÎϤòµÛ¤¤¼è¤ë¡£", "It drains you.");
        }
-       if (o_ptr->curse_flags & TRC_DRAIN_MANA)
+       if ((have_flag(flgs, TR_DRAIN_MANA)) || (o_ptr->curse_flags & TRC_DRAIN_MANA))
        {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤ÎËâÎϤòµÛ¤¤¼è¤ë¡£";
-#else
-               info[i++] = "It drains your mana.";
-#endif
-
+               info[i++] = _("¤½¤ì¤Ï¤¢¤Ê¤¿¤ÎËâÎϤòµÛ¤¤¼è¤ë¡£", "It drains your mana.");
        }
 
        /* Describe about this kind of object instead of THIS fake object */
index baa719f..e56baff 100644 (file)
@@ -1018,6 +1018,8 @@ s32b flag_cost(object_type *o_ptr, int plusses)
        if (have_flag(flgs, TR_IGNORE_COLD)) total += 100;
        if (have_flag(flgs, TR_ACTIVATE)) total += 100;
        if (have_flag(flgs, TR_DRAIN_EXP)) total -= 12500;
+       if (have_flag(flgs, TR_DRAIN_HP)) total -= 12500;
+       if (have_flag(flgs, TR_DRAIN_MANA)) total -= 12500;
        if (have_flag(flgs, TR_TELEPORT))
        {
                if (object_is_cursed(o_ptr))
@@ -2398,10 +2400,21 @@ static void a_m_aux_1(object_type *o_ptr, int level, int power)
                                                add_flag(o_ptr->art_flags, TR_SLAY_HUMAN);
                                        break;
                                case EGO_DEMON:
+                                       if (one_in_(3)){
+                                               add_flag(o_ptr->art_flags, TR_DRAIN_EXP);
+                                       }
+                                       else if(one_in_(2))
+                                       {
+                                               add_flag(o_ptr->art_flags, TR_DRAIN_HP);
+                                       }
+                                       else
+                                       {
+                                               add_flag(o_ptr->art_flags, TR_DRAIN_MANA);
+                                       }
+                                       
                                        if (one_in_(3)) add_flag(o_ptr->art_flags, TR_CHAOTIC);
                                        if (one_in_(4)) add_flag(o_ptr->art_flags, TR_BLOWS);
-                                       if (one_in_(5)) add_flag(o_ptr->art_flags, TR_DRAIN_EXP);
-                                       if (one_in_(6)) add_flag(o_ptr->art_flags, TR_ADD_H_CURSE);                                     
+                                       if (one_in_(5)) add_flag(o_ptr->art_flags, TR_ADD_H_CURSE);
                                        break;
                                }
 
@@ -7536,6 +7549,8 @@ static void drain_essence(void)
        if (have_flag(old_flgs, TR_AGGRAVATE)) dec--;
        if (have_flag(old_flgs, TR_NO_TELE)) dec--;
        if (have_flag(old_flgs, TR_DRAIN_EXP)) dec--;
+       if (have_flag(old_flgs, TR_DRAIN_HP)) dec--;
+       if (have_flag(old_flgs, TR_DRAIN_MANA)) dec--;
        if (have_flag(old_flgs, TR_TY_CURSE)) dec--;
 
        iy = o_ptr->iy;
index 7b79cbc..5eb8623 100644 (file)
@@ -1222,11 +1222,7 @@ static void analyze_misc_magic(object_type *o_ptr, cptr *misc_list)
         */
        if ((o_ptr->tval == TV_LITE) && object_is_fixed_artifact(o_ptr))
        {
-#ifdef JP
-               *misc_list++ = "±Êµ×¸÷¸»(Ⱦ·Â3)";
-#else
-               *misc_list++ = "Permanent Light(3)";
-#endif
+               *misc_list++ = _("±Êµ×¸÷¸»(Ⱦ·Â3)", "Permanent Light(3)");
        }
 
        /*
@@ -1234,11 +1230,7 @@ static void analyze_misc_magic(object_type *o_ptr, cptr *misc_list)
         */
        if (have_flag(flgs, TR_LITE))
        {
-#ifdef JP
-               *misc_list++ = "±Êµ×¸÷¸»(Ⱦ·Â1)";
-#else
-               *misc_list++ = "Permanent Light(1)";
-#endif
+               *misc_list++ = _("±Êµ×¸÷¸»(Ⱦ·Â1)", "Permanent Light(1)");
        }
 
        /*
@@ -1251,52 +1243,28 @@ static void analyze_misc_magic(object_type *o_ptr, cptr *misc_list)
        {
                if (have_flag(flgs, TR_TY_CURSE))
                {
-#ifdef JP
-                       *misc_list++ = "ÂÀ¸Å¤Î±åÇ°";
-#else
-                       *misc_list++ = "Ancient Curse";
-#endif
+                       *misc_list++ = _("ÂÀ¸Å¤Î±åÇ°", "Ancient Curse");
                }
                if (o_ptr->curse_flags & TRC_PERMA_CURSE)
                {
-#ifdef JP
-                       *misc_list++ = "±Ê±ó¤Î¼ö¤¤";
-#else
-                       *misc_list++ = "Permanently Cursed";
-#endif
+                       *misc_list++ = _("±Ê±ó¤Î¼ö¤¤", "Permanently Cursed");
                }
                else if (o_ptr->curse_flags & TRC_HEAVY_CURSE)
                {
-#ifdef JP
-                       *misc_list++ = "¶¯ÎϤʼö¤¤";
-#else
-                       *misc_list++ = "Heavily Cursed";
-#endif
+                       *misc_list++ = _("¶¯ÎϤʼö¤¤", "Heavily Cursed");
                }
 /*             else */
                else if (o_ptr->curse_flags & TRC_CURSED)
                {
-#ifdef JP
-                       *misc_list++ = "¼ö¤¤";
-#else
-                       *misc_list++ = "Cursed";
-#endif
+                       *misc_list++ = _("¼ö¤¤", "Cursed");
                }
                if (have_flag(flgs, TR_ADD_L_CURSE))
                {
-#ifdef JP
-                       *misc_list++ = "¼ö¤¤¤òÁý¤ä¤¹";
-#else
-                       *misc_list++ = "Cursing";
-#endif
+                       *misc_list++ = _("¼ö¤¤¤òÁý¤ä¤¹", "Cursing");
                }
                if (have_flag(flgs, TR_ADD_H_CURSE))
                {
-#ifdef JP
-                       *misc_list++ = "¶¯ÎϤʼö¤¤¤òÁý¤ä¤¹";
-#else
-                       *misc_list++ = "Heavily Cursing";
-#endif
+                       *misc_list++ = _("¶¯ÎϤʼö¤¤¤òÁý¤ä¤¹", "Heavily Cursing");
                }
        }
 
index adb1ea5..1ccad14 100644 (file)
@@ -4234,6 +4234,8 @@ void calc_bonuses(void)
                if (have_flag(flgs, TR_TY_CURSE))    p_ptr->cursed |= TRC_TY_CURSE;
                if (have_flag(flgs, TR_ADD_L_CURSE)) p_ptr->cursed |= TRC_ADD_L_CURSE;
                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_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;