OSDN Git Service

Add Elemental brand ego Activation. ball(100) and temp resistance like ring of flame
[hengband/hengband.git] / src / artifact.c
index 99967c1..364815f 100644 (file)
@@ -3198,12 +3198,8 @@ bool activate_random_artifact(object_type *o_ptr)
 
                case ACT_RESIST_ACID:
                {
-#ifdef JP
-                       msg_format("%s¤¬¹õ¤¯µ±¤¤¤¿...", name);
-#else
-                       msg_format("The %s grows black.", name);
-#endif
-                       if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ACID))
+                       msg_format(_("%s¤¬¹õ¤¯µ±¤¤¤¿...", "The %s grows black."), name);
+                       if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ACID)) || (o_ptr->name2 == EGO_BRAND_ACID))
                        {
                                if (!get_aim_dir(&dir)) return FALSE;
                                fire_ball(GF_ACID, dir, 100, 2);
@@ -3214,12 +3210,8 @@ bool activate_random_artifact(object_type *o_ptr)
 
                case ACT_RESIST_FIRE:
                {
-#ifdef JP
-                       msg_format("%s¤¬ÀÖ¤¯µ±¤¤¤¿...", name);
-#else
-                       msg_format("The %s grows red.", name);
-#endif
-                       if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES))
+                       msg_format(_("%s¤¬ÀÖ¤¯µ±¤¤¤¿...","The %s grows red."), name);
+                       if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES)) || (o_ptr->name2 == EGO_BRAND_FIRE))
                        {
                                if (!get_aim_dir(&dir)) return FALSE;
                                fire_ball(GF_FIRE, dir, 100, 2);
@@ -3230,12 +3222,8 @@ bool activate_random_artifact(object_type *o_ptr)
 
                case ACT_RESIST_COLD:
                {
-#ifdef JP
-                       msg_format("%s¤¬Çò¤¯µ±¤¤¤¿...", name);
-#else
-                       msg_format("The %s grows white.", name);
-#endif
-                       if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE))
+                       msg_format(_("%s¤¬Çò¤¯µ±¤¤¤¿...","The %s grows white.") , name);
+                       if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE)) || (o_ptr->name2 == EGO_BRAND_COLD))
                        {
                                if (!get_aim_dir(&dir)) return FALSE;
                                fire_ball(GF_COLD, dir, 100, 2);
@@ -3246,12 +3234,8 @@ bool activate_random_artifact(object_type *o_ptr)
 
                case ACT_RESIST_ELEC:
                {
-#ifdef JP
-                       msg_format("%s¤¬ÀĤ¯µ±¤¤¤¿...", name);
-#else
-                       msg_format("The %s grows blue.", name);
-#endif
-                       if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ELEC))
+                       msg_format(_("%s¤¬ÀĤ¯µ±¤¤¤¿...", "The %s grows blue."), name);
+                       if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ELEC)) || (o_ptr->name2 == EGO_BRAND_ELEC))
                        {
                                if (!get_aim_dir(&dir)) return FALSE;
                                fire_ball(GF_ELEC, dir, 100, 2);
@@ -3262,11 +3246,13 @@ bool activate_random_artifact(object_type *o_ptr)
 
                case ACT_RESIST_POIS:
                {
-#ifdef JP
-                       msg_format("%s¤¬ÎФ˵±¤¤¤¿...", name);
-#else
-                       msg_format("The %s grows green.", name);
-#endif
+                       msg_format(_("%s¤¬ÎФ˵±¤¤¤¿...", "The %s grows green."), name);
+                       if (o_ptr->name2 == EGO_BRAND_POIS)
+                       {
+                               if (!get_aim_dir(&dir)) return FALSE;
+                               fire_ball(GF_POIS, dir, 100, 2);
+                       }
+                       
                        (void)set_oppose_pois(randint1(20) + 20, FALSE);
                        break;
                }
@@ -3758,6 +3744,21 @@ bool activate_random_artifact(object_type *o_ptr)
                        break;
                }
 
+               case ACT_STRAIN_HASTE:
+               {
+                       int t;
+#ifdef JP
+                       msg_format("%s¤Ï¤¢¤Ê¤¿¤ÎÂÎÎϤòÃ¥¤Ã¤¿...", name);
+                       take_hit(DAMAGE_LOSELIFE, damroll(3, 8), "²Ã®¤·¤¿ÈèÏ«", -1);
+#else
+                       msg_format("The %s drains your vitality...", name);
+                       take_hit(DAMAGE_LOSELIFE, damroll(3, 8), "the strain of haste", -1);
+#endif
+                       t = 25 + randint1(25);
+                       (void)set_fast(p_ptr->fast + t, FALSE);
+                       break;
+               }
+
                case ACT_FISHING:
                {
                        int x, y;
@@ -4069,6 +4070,20 @@ void random_artifact_resistance(object_type * o_ptr, artifact_type *a_ptr)
                }
        }
 
+       if (o_ptr->name1 == ART_MILIM)
+       {
+               if (p_ptr->pseikaku == SEIKAKU_SEXY)
+               {
+                       o_ptr->pval = 3;
+                       add_flag(o_ptr->art_flags, TR_STR);
+                       add_flag(o_ptr->art_flags, TR_INT);
+                       add_flag(o_ptr->art_flags, TR_WIS);
+                       add_flag(o_ptr->art_flags, TR_DEX);
+                       add_flag(o_ptr->art_flags, TR_CON);
+                       add_flag(o_ptr->art_flags, TR_CHR);
+               }
+       }
+
        if (a_ptr->gen_flags & (TRG_XTRA_POWER)) give_power = TRUE;
        if (a_ptr->gen_flags & (TRG_XTRA_H_RES)) give_resistance = TRUE;
        if (a_ptr->gen_flags & (TRG_XTRA_RES_OR_POWER))