OSDN Git Service

アニハャソネ、ヌイキ、ソ、マ、コ、ホケカキ筅ホノ釚隆ム、ア、ニ、、、ソ・ミ・ー、、タオ.
authornothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Mon, 19 Jul 2004 07:06:25 +0000 (07:06 +0000)
committernothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Mon, 19 Jul 2004 07:06:25 +0000 (07:06 +0000)
src/cmd1.c
src/defines.h
src/effects.c
src/melee1.c
src/spells1.c
src/spells3.c

index 6e4e287..16a64d7 100644 (file)
@@ -1386,8 +1386,13 @@ static void hit_trap(bool break_trap)
 #endif
 
                                dam = damroll(1, 4);
-                               take_hit(DAMAGE_ATTACK, dam, name, -1);
-                               (void)set_slow(p_ptr->slow + randint0(20) + 20, FALSE);
+#ifdef JP
+                               take_hit(DAMAGE_ATTACK, dam, "¥À¡¼¥Ä¤Îæ«", -1);
+#else
+                               take_hit(DAMAGE_ATTACK, dam, "a dart trap", -1);
+#endif
+
+                               if (!CHECK_MULTISHADOW()) (void)set_slow(p_ptr->slow + randint0(20) + 20, FALSE);
                        }
                        else
                        {
@@ -1418,7 +1423,7 @@ static void hit_trap(bool break_trap)
                                take_hit(DAMAGE_ATTACK, dam, "a dart trap", -1);
 #endif
 
-                               (void)do_dec_stat(A_STR);
+                               if (!CHECK_MULTISHADOW()) (void)do_dec_stat(A_STR);
                        }
                        else
                        {
@@ -1449,7 +1454,7 @@ static void hit_trap(bool break_trap)
                                take_hit(DAMAGE_ATTACK, dam, "a dart trap", -1);
 #endif
 
-                               (void)do_dec_stat(A_DEX);
+                               if (!CHECK_MULTISHADOW()) (void)do_dec_stat(A_DEX);
                        }
                        else
                        {
@@ -1480,7 +1485,7 @@ static void hit_trap(bool break_trap)
                                take_hit(DAMAGE_ATTACK, dam, "a dart trap", -1);
 #endif
 
-                               (void)do_dec_stat(A_CON);
+                               if (!CHECK_MULTISHADOW()) (void)do_dec_stat(A_CON);
                        }
                        else
                        {
index 53bb2ff..fc82af2 100644 (file)
@@ -5377,6 +5377,9 @@ extern int PlayerUID;
 #define IS_TIM_ESP() (p_ptr->tim_esp || music_singing(MUSIC_MIND))
 #define IS_TIM_STEALTH() (p_ptr->tim_stealth || music_singing(MUSIC_STEALTH))
 
+/* Multishadow effects is determined by turn */
+#define CHECK_MULTISHADOW() (p_ptr->multishadow && (turn & 1))
+
 /* Is "teleport level" ineffective to this target? */
 #define TELE_LEVEL_IS_INEFF(TARGET) \
        (p_ptr->inside_arena || p_ptr->inside_battle || \
index 42800f4..cfff2e4 100644 (file)
@@ -5125,8 +5125,7 @@ int take_hit(int damage_type, int damage, cptr hit_from, int monspell)
                        }
                }
 
-               /* Multishadow effects is determined by turn */
-               if (p_ptr->multishadow && (turn & 1))
+               if (CHECK_MULTISHADOW())
                {
                        if (damage_type == DAMAGE_FORCE)
                        {
index 2bd66f7..148e1e6 100644 (file)
@@ -710,8 +710,9 @@ bool make_attack_normal(int m_idx)
 
                                case RBE_SUPERHURT:
                                {
-                                       if ((randint1(rlev*2+300) > (ac+200)) || one_in_(13)) {
-                                               int tmp_damage = damage-(damage*((ac < 150) ? ac : 150)/250);
+                                       if (((randint1(rlev*2+300) > (ac+200)) || one_in_(13)) && !CHECK_MULTISHADOW())
+                                       {
+                                               int tmp_damage = damage - (damage * ((ac < 150) ? ac : 150) / 250);
 #ifdef JP
                                                msg_print("Ä˺¨¤Î°ì·â¡ª");
 #else
@@ -744,7 +745,7 @@ bool make_attack_normal(int m_idx)
                                        if (explode) break;
 
                                        /* Take "poison" effect */
-                                       if (!(p_ptr->resist_pois || IS_OPPOSE_POIS()))
+                                       if (!(p_ptr->resist_pois || IS_OPPOSE_POIS()) && !CHECK_MULTISHADOW())
                                        {
                                                if (set_poisoned(p_ptr->poisoned + randint1(rlev) + 5))
                                                {
@@ -766,7 +767,7 @@ bool make_attack_normal(int m_idx)
                                        if (explode) break;
 
                                        /* Allow complete resist */
-                                       if (!p_ptr->resist_disen)
+                                       if (!p_ptr->resist_disen && !CHECK_MULTISHADOW())
                                        {
                                                /* Apply disenchantment */
                                                if (apply_disenchant(0))
@@ -791,7 +792,7 @@ bool make_attack_normal(int m_idx)
                                        /* Take some damage */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        /* Find an item */
                                        for (k = 0; k < 10; k++)
@@ -861,7 +862,7 @@ bool make_attack_normal(int m_idx)
                                        /* Confused monsters cannot steal successfully. -LM-*/
                                        if (MON_CONFUSED(m_ptr)) break;
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        /* Obvious */
                                        obvious = TRUE;
@@ -945,7 +946,7 @@ bool make_attack_normal(int m_idx)
                                        /* Confused monsters cannot steal successfully. -LM-*/
                                        if (MON_CONFUSED(m_ptr)) break;
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        /* Saving throw (unless paralyzed) based on dex and level */
                                        if (!p_ptr->paralyzed &&
@@ -1066,7 +1067,7 @@ bool make_attack_normal(int m_idx)
                                        /* Take some damage */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        /* Steal some food */
                                        for (k = 0; k < 10; k++)
@@ -1120,7 +1121,7 @@ bool make_attack_normal(int m_idx)
                                        /* Take some damage */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        /* Drain fuel */
                                        if ((o_ptr->xtra4 > 0) && (!object_is_fixed_artifact(o_ptr)))
@@ -1251,12 +1252,12 @@ bool make_attack_normal(int m_idx)
                                        if (p_ptr->is_dead) break;
 
                                        /* Increase "blind" */
-                                       if (!p_ptr->resist_blind)
+                                       if (!p_ptr->resist_blind && !CHECK_MULTISHADOW())
                                        {
                                                if (set_blind(p_ptr->blind + 10 + randint1(rlev)))
                                                {
 #ifdef JP
-                                                       if(m_ptr->r_idx == MON_DIO) msg_print("¤É¤¦¤À¥Ã¡ª¤³¤Î·ì¤ÎÌÜÄÙ¤·¤Ï¥Ã¡ª");
+                                                       if (m_ptr->r_idx == MON_DIO) msg_print("¤É¤¦¤À¥Ã¡ª¤³¤Î·ì¤ÎÌÜÄÙ¤·¤Ï¥Ã¡ª");
 #else
                                                        /* nanka */
 #endif
@@ -1279,7 +1280,7 @@ bool make_attack_normal(int m_idx)
                                        if (p_ptr->is_dead) break;
 
                                        /* Increase "confused" */
-                                       if (!p_ptr->resist_conf)
+                                       if (!p_ptr->resist_conf && !CHECK_MULTISHADOW())
                                        {
                                                if (set_confused(p_ptr->confused + 3 + randint1(rlev)))
                                                {
@@ -1301,7 +1302,11 @@ bool make_attack_normal(int m_idx)
                                        if (p_ptr->is_dead) break;
 
                                        /* Increase "afraid" */
-                                       if (p_ptr->resist_fear)
+                                       if (CHECK_MULTISHADOW())
+                                       {
+                                               /* Do nothing */
+                                       }
+                                       else if (p_ptr->resist_fear)
                                        {
 #ifdef JP
                                                msg_print("¤·¤«¤·¶²Éݤ˿¯¤µ¤ì¤Ê¤«¤Ã¤¿¡ª");
@@ -1343,7 +1348,11 @@ bool make_attack_normal(int m_idx)
                                        if (p_ptr->is_dead) break;
 
                                        /* Increase "paralyzed" */
-                                       if (p_ptr->free_act)
+                                       if (CHECK_MULTISHADOW())
+                                       {
+                                               /* Do nothing */
+                                       }
+                                       else if (p_ptr->free_act)
                                        {
 #ifdef JP
                                                msg_print("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª");
@@ -1385,7 +1394,7 @@ bool make_attack_normal(int m_idx)
                                        /* Damage (physical) */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        /* Damage (stat) */
                                        if (do_dec_stat(A_STR)) obvious = TRUE;
@@ -1398,7 +1407,7 @@ bool make_attack_normal(int m_idx)
                                        /* Damage (physical) */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        /* Damage (stat) */
                                        if (do_dec_stat(A_INT)) obvious = TRUE;
@@ -1411,7 +1420,7 @@ bool make_attack_normal(int m_idx)
                                        /* Damage (physical) */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        /* Damage (stat) */
                                        if (do_dec_stat(A_WIS)) obvious = TRUE;
@@ -1424,7 +1433,7 @@ bool make_attack_normal(int m_idx)
                                        /* Damage (physical) */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        /* Damage (stat) */
                                        if (do_dec_stat(A_DEX)) obvious = TRUE;
@@ -1437,7 +1446,7 @@ bool make_attack_normal(int m_idx)
                                        /* Damage (physical) */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        /* Damage (stat) */
                                        if (do_dec_stat(A_CON)) obvious = TRUE;
@@ -1450,7 +1459,7 @@ bool make_attack_normal(int m_idx)
                                        /* Damage (physical) */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        /* Damage (stat) */
                                        if (do_dec_stat(A_CHR)) obvious = TRUE;
@@ -1463,7 +1472,7 @@ bool make_attack_normal(int m_idx)
                                        /* Damage (physical) */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        /* Damage (stats) */
                                        if (do_dec_stat(A_STR)) obvious = TRUE;
@@ -1506,7 +1515,7 @@ bool make_attack_normal(int m_idx)
                                        /* Take damage */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        (void)drain_exp(d, d / 10, 95);
                                        break;
@@ -1522,7 +1531,7 @@ bool make_attack_normal(int m_idx)
                                        /* Take damage */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        (void)drain_exp(d, d / 10, 90);
                                        break;
@@ -1538,7 +1547,7 @@ bool make_attack_normal(int m_idx)
                                        /* Take damage */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        (void)drain_exp(d, d / 10, 75);
                                        break;
@@ -1554,7 +1563,7 @@ bool make_attack_normal(int m_idx)
                                        /* Take damage */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        (void)drain_exp(d, d / 10, 50);
                                        break;
@@ -1565,7 +1574,7 @@ bool make_attack_normal(int m_idx)
                                        /* Take some damage */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        /* Take "poison" effect */
                                        if (!(p_ptr->resist_pois || IS_OPPOSE_POIS()))
@@ -1598,7 +1607,7 @@ bool make_attack_normal(int m_idx)
                                case RBE_TIME:
                                {
                                        if (explode) break;
-                                       if (!p_ptr->resist_time)
+                                       if (!p_ptr->resist_time && !CHECK_MULTISHADOW())
                                        {
                                                switch (randint1(10))
                                                {
@@ -1686,7 +1695,7 @@ bool make_attack_normal(int m_idx)
                                        /* Take damage */
                                        get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
 
-                                       if (p_ptr->is_dead) break;
+                                       if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
 
                                        resist_drain = !drain_exp(d, d / 10, 50);
 
@@ -1745,17 +1754,28 @@ msg_format("%s
                                        /* Obvious */
                                        obvious = TRUE;
 
-                                       do_cut = 0;
-
-                                       /* Take damage */
-                                       p_ptr->csp -= damage;
-                                       if (p_ptr->csp < 0)
+                                       if (CHECK_MULTISHADOW())
                                        {
-                                               p_ptr->csp = 0;
-                                               p_ptr->csp_frac = 0;
+#ifdef JP
+                                               msg_print("¹¶·â¤Ï¸¸±Æ¤ËÌ¿Ã椷¡¢¤¢¤Ê¤¿¤Ë¤ÏÆϤ«¤Ê¤«¤Ã¤¿¡£");
+#else
+                                               msg_print("The attack hits Shadow, you are unharmed!");
+#endif
                                        }
+                                       else
+                                       {
+                                               do_cut = 0;
 
-                                       p_ptr->redraw |= (PR_MANA);
+                                               /* Take damage */
+                                               p_ptr->csp -= damage;
+                                               if (p_ptr->csp < 0)
+                                               {
+                                                       p_ptr->csp = 0;
+                                                       p_ptr->csp_frac = 0;
+                                               }
+
+                                               p_ptr->redraw |= (PR_MANA);
+                                       }
 
                                        break;
                                }
index 4c716a9..2b5ddbf 100644 (file)
@@ -2803,7 +2803,7 @@ note_dies = "
 #endif
 
                                        /* Saving throw */
-                                       if (randint0(100 + r_ptr->level/2) < p_ptr->skill_sav)
+                                       if ((randint0(100 + r_ptr->level / 2) < p_ptr->skill_sav) && !CHECK_MULTISHADOW())
                                        {
 #ifdef JP
                                                msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
@@ -2817,7 +2817,7 @@ note_dies = "
                                                /* Injure +/- confusion */
                                                monster_desc(killer, m_ptr, MD_IGNORE_HALLU | MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE);
                                                take_hit(DAMAGE_ATTACK, dam, killer, -1);  /* has already been /3 */
-                                               if (one_in_(4))
+                                               if (one_in_(4) && !CHECK_MULTISHADOW())
                                                {
                                                        switch (randint1(4))
                                                        {
@@ -2939,29 +2939,31 @@ note_dies = "
 #endif
 
                                        /* Saving throw */
-                                       if (randint0(100 + r_ptr->level/2) < p_ptr->skill_sav)
+                                       if ((randint0(100 + r_ptr->level / 2) < p_ptr->skill_sav) && !CHECK_MULTISHADOW())
                                        {
 #ifdef JP
                                                msg_print("¤¢¤Ê¤¿¤Ï¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
 #else
                                                msg_print("You resist the effects!");
 #endif
-
                                        }
                                        else
                                        {
                                                /* Injure + mana drain */
                                                monster_desc(killer, m_ptr, MD_IGNORE_HALLU | MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE);
+                                               if (!CHECK_MULTISHADOW())
+                                               {
 #ifdef JP
-                                               msg_print("ĶǽÎϥѥ¤òµÛ¤¤¤È¤é¤ì¤¿¡ª");
+                                                       msg_print("ĶǽÎϥѥ¤òµÛ¤¤¤È¤é¤ì¤¿¡ª");
 #else
-                                               msg_print("Your psychic energy is drained!");
+                                                       msg_print("Your psychic energy is drained!");
 #endif
 
-                                               p_ptr->csp -= damroll(5, dam) / 2;
-                                               if (p_ptr->csp < 0) p_ptr->csp = 0;
-                                               p_ptr->redraw |= PR_MANA;
-                                               p_ptr->window |= (PW_SPELL);
+                                                       p_ptr->csp -= damroll(5, dam) / 2;
+                                                       if (p_ptr->csp < 0) p_ptr->csp = 0;
+                                                       p_ptr->redraw |= PR_MANA;
+                                                       p_ptr->window |= (PW_SPELL);
+                                               }
                                                take_hit(DAMAGE_ATTACK, dam, killer, -1);  /* has already been /3 */
                                        }
                                        dam = 0;
@@ -6481,7 +6483,7 @@ static bool project_p(int who, cptr who_name, int r, int y, int x, int dam, int
                case GF_ACID:
                {
 #ifdef JP
-if (fuzzy) msg_print("»À¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("»À¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by acid!");
 #endif
@@ -6494,7 +6496,7 @@ if (fuzzy) msg_print("
                case GF_FIRE:
                {
 #ifdef JP
-if (fuzzy) msg_print("²Ð±ê¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²Ð±ê¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by fire!");
 #endif
@@ -6507,7 +6509,7 @@ if (fuzzy) msg_print("
                case GF_COLD:
                {
 #ifdef JP
-if (fuzzy) msg_print("Î䵤¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("Î䵤¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by cold!");
 #endif
@@ -6520,7 +6522,7 @@ if (fuzzy) msg_print("
                case GF_ELEC:
                {
 #ifdef JP
-if (fuzzy) msg_print("ÅÅ·â¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("ÅÅ·â¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by lightning!");
 #endif
@@ -6534,7 +6536,7 @@ if (fuzzy) msg_print("
                {
                        bool double_resist = IS_OPPOSE_POIS();
 #ifdef JP
-if (fuzzy) msg_print("ÆǤǹ¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("ÆǤǹ¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by poison!");
 #endif
@@ -6543,14 +6545,14 @@ if (fuzzy) msg_print("
                        if (double_resist) dam = (dam + 2) / 3;
 
                        if ((!(double_resist || p_ptr->resist_pois)) &&
-                            one_in_(HURT_CHANCE))
+                            one_in_(HURT_CHANCE) && !CHECK_MULTISHADOW())
                        {
                                do_dec_stat(A_CON);
                        }
 
                        get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
 
-                       if (!(double_resist || p_ptr->resist_pois))
+                       if (!(double_resist || p_ptr->resist_pois) && !CHECK_MULTISHADOW())
                        {
                                set_poisoned(p_ptr->poisoned + randint0(dam) + 10);
                        }
@@ -6562,7 +6564,7 @@ if (fuzzy) msg_print("
                {
                        bool double_resist = IS_OPPOSE_POIS();
 #ifdef JP
-if (fuzzy) msg_print("Êü¼Íǽ¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("Êü¼Íǽ¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by radiation!");
 #endif
@@ -6570,14 +6572,14 @@ if (fuzzy) msg_print("
                        if (p_ptr->resist_pois) dam = (2 * dam + 2) / 5;
                        if (double_resist) dam = (2 * dam + 2) / 5;
                        get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
-                       if (!(double_resist || p_ptr->resist_pois))
+                       if (!(double_resist || p_ptr->resist_pois) && !CHECK_MULTISHADOW())
                        {
                                set_poisoned(p_ptr->poisoned + randint0(dam) + 10);
 
                                if (one_in_(5)) /* 6 */
                                {
 #ifdef JP
-msg_print("´ñ·ÁŪ¤ÊÊѿȤò¿ë¤²¤¿¡ª");
+                                       msg_print("´ñ·ÁŪ¤ÊÊѿȤò¿ë¤²¤¿¡ª");
 #else
                                        msg_print("You undergo a freakish metamorphosis!");
 #endif
@@ -6600,7 +6602,7 @@ msg_print("
                case GF_MISSILE:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something!");
 #endif
@@ -6613,7 +6615,7 @@ if (fuzzy) msg_print("
                case GF_HOLY_FIRE:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something!");
 #endif
@@ -6629,7 +6631,7 @@ if (fuzzy) msg_print("
                case GF_HELL_FIRE:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something!");
 #endif
@@ -6644,7 +6646,7 @@ if (fuzzy) msg_print("
                case GF_ARROW:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«±Ô¤¤¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«±Ô¤¤¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something sharp!");
 #endif
@@ -6673,7 +6675,7 @@ if (fuzzy) msg_print("
 
                        get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
 
-                       if (!p_ptr->resist_sound)
+                       if (!p_ptr->resist_sound && !CHECK_MULTISHADOW())
                        {
                                int k = (randint1((dam > 40) ? 35 : (dam * 3 / 4 + 5)));
                                (void)set_stun(p_ptr->stun + k);
@@ -6693,23 +6695,22 @@ if (fuzzy) msg_print("
                case GF_NETHER:
                {
 #ifdef JP
-if (fuzzy) msg_print("ÃϹö¤ÎÎϤǹ¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("ÃϹö¤ÎÎϤǹ¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by nether forces!");
 #endif
 
-
                        if (p_ptr->resist_neth)
                        {
                                if (!prace_is_(RACE_SPECTRE))
                                        dam *= 6; dam /= (randint1(4) + 7);
                        }
-                       else drain_exp(200 + (p_ptr->exp / 100), 200 + (p_ptr->exp / 1000), 75);
+                       else if (!CHECK_MULTISHADOW()) drain_exp(200 + (p_ptr->exp / 100), 200 + (p_ptr->exp / 1000), 75);
 
-                       if (prace_is_(RACE_SPECTRE))
+                       if (prace_is_(RACE_SPECTRE) && !CHECK_MULTISHADOW())
                        {
 #ifdef JP
-msg_print("µ¤Ê¬¤¬¤è¤¯¤Ê¤Ã¤¿¡£");
+                               msg_print("µ¤Ê¬¤¬¤è¤¯¤Ê¤Ã¤¿¡£");
 #else
                                msg_print("You feel invigorated!");
 #endif
@@ -6729,23 +6730,26 @@ msg_print("
                case GF_WATER:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«¼¾¤Ã¤¿¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«¼¾¤Ã¤¿¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something wet!");
 #endif
 
-                       if (!p_ptr->resist_sound)
-                       {
-                               set_stun(p_ptr->stun + randint1(40));
-                       }
-                       if (!p_ptr->resist_conf)
+                       if (!CHECK_MULTISHADOW())
                        {
-                               set_confused(p_ptr->confused + randint1(5) + 5);
-                       }
+                               if (!p_ptr->resist_sound)
+                               {
+                                       set_stun(p_ptr->stun + randint1(40));
+                               }
+                               if (!p_ptr->resist_conf)
+                               {
+                                       set_confused(p_ptr->confused + randint1(5) + 5);
+                               }
 
-                       if (one_in_(5))
-                       {
-                               inven_damage(set_cold_destroy, 3);
+                               if (one_in_(5))
+                               {
+                                       inven_damage(set_cold_destroy, 3);
+                               }
                        }
 
                        get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
@@ -6756,7 +6760,7 @@ if (fuzzy) msg_print("
                case GF_CHAOS:
                {
 #ifdef JP
-if (fuzzy) msg_print("̵Ãá½ø¤ÎÇÈÆ°¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("̵Ãá½ø¤ÎÇÈÆ°¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by a wave of anarchy!");
 #endif
@@ -6765,33 +6769,39 @@ if (fuzzy) msg_print("̵
                        {
                                dam *= 6; dam /= (randint1(4) + 7);
                        }
-                       if (!p_ptr->resist_conf)
-                       {
-                               (void)set_confused(p_ptr->confused + randint0(20) + 10);
-                       }
-                       if (!p_ptr->resist_chaos)
+
+                       if (!CHECK_MULTISHADOW())
                        {
-                               (void)set_image(p_ptr->image + randint1(10));
-                               if (one_in_(3))
+                               if (!p_ptr->resist_conf)
+                               {
+                                       (void)set_confused(p_ptr->confused + randint0(20) + 10);
+                               }
+                               if (!p_ptr->resist_chaos)
                                {
+                                       (void)set_image(p_ptr->image + randint1(10));
+                                       if (one_in_(3))
+                                       {
 #ifdef JP
-msg_print("¤¢¤Ê¤¿¤Î¿ÈÂΤϥ«¥ª¥¹¤ÎÎϤÇDZ¤¸¶Ê¤²¤é¤ì¤¿¡ª");
+                                               msg_print("¤¢¤Ê¤¿¤Î¿ÈÂΤϥ«¥ª¥¹¤ÎÎϤÇDZ¤¸¶Ê¤²¤é¤ì¤¿¡ª");
 #else
-                                       msg_print("Your body is twisted by chaos!");
+                                               msg_print("Your body is twisted by chaos!");
 #endif
 
-                                       (void)gain_random_mutation(0);
+                                               (void)gain_random_mutation(0);
+                                       }
+                               }
+                               if (!p_ptr->resist_neth && !p_ptr->resist_chaos)
+                               {
+                                       drain_exp(5000 + (p_ptr->exp / 100), 500 + (p_ptr->exp / 1000), 75);
+                               }
+
+                               if (!p_ptr->resist_chaos || one_in_(9))
+                               {
+                                       inven_damage(set_elec_destroy, 2);
+                                       inven_damage(set_fire_destroy, 2);
                                }
                        }
-                       if (!p_ptr->resist_neth && !p_ptr->resist_chaos)
-                       {
-                               drain_exp(5000 + (p_ptr->exp / 100), 500 + (p_ptr->exp / 1000), 75);
-                       }
-                       if (!p_ptr->resist_chaos || one_in_(9))
-                       {
-                               inven_damage(set_elec_destroy, 2);
-                               inven_damage(set_fire_destroy, 2);
-                       }
+
                        get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
                        break;
                }
@@ -6800,7 +6810,7 @@ msg_print("
                case GF_SHARDS:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«±Ô¤¤¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«±Ô¤¤¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something sharp!");
 #endif
@@ -6809,7 +6819,7 @@ if (fuzzy) msg_print("
                        {
                                dam *= 6; dam /= (randint1(4) + 7);
                        }
-                       else
+                       else if (!CHECK_MULTISHADOW())
                        {
                                (void)set_cut(p_ptr->cut + dam);
                        }
@@ -6827,7 +6837,7 @@ if (fuzzy) msg_print("
                case GF_SOUND:
                {
 #ifdef JP
-if (fuzzy) msg_print("¹ì²»¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("¹ì²»¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by a loud noise!");
 #endif
@@ -6836,7 +6846,7 @@ if (fuzzy) msg_print("
                        {
                                dam *= 5; dam /= (randint1(4) + 7);
                        }
-                       else
+                       else if (!CHECK_MULTISHADOW())
                        {
                                int k = (randint1((dam > 90) ? 35 : (dam / 3 + 5)));
                                (void)set_stun(p_ptr->stun + k);
@@ -6855,7 +6865,7 @@ if (fuzzy) msg_print("
                case GF_CONFUSION:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«º®Í𤹤ë¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«º®Í𤹤ë¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something puzzling!");
 #endif
@@ -6864,7 +6874,7 @@ if (fuzzy) msg_print("
                        {
                                dam *= 5; dam /= (randint1(4) + 7);
                        }
-                       if (!p_ptr->resist_conf)
+                       else if (!CHECK_MULTISHADOW())
                        {
                                (void)set_confused(p_ptr->confused + randint1(20) + 10);
                        }
@@ -6885,7 +6895,7 @@ if (fuzzy) msg_print("
                        {
                                dam *= 6; dam /= (randint1(4) + 7);
                        }
-                       else
+                       else if (!CHECK_MULTISHADOW())
                        {
                                (void)apply_disenchant(0);
                        }
@@ -6897,7 +6907,7 @@ if (fuzzy) msg_print("
                case GF_NEXUS:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«´ñ̯¤Ê¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«´ñ̯¤Ê¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something strange!");
 #endif
@@ -6906,7 +6916,7 @@ if (fuzzy) msg_print("
                        {
                                dam *= 6; dam /= (randint1(4) + 7);
                        }
-                       else
+                       else if (!CHECK_MULTISHADOW())
                        {
                                apply_nexus(m_ptr);
                        }
@@ -6918,12 +6928,12 @@ if (fuzzy) msg_print("
                case GF_FORCE:
                {
 #ifdef JP
-if (fuzzy) msg_print("±¿Æ°¥¨¥Í¥ë¥®¡¼¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("±¿Æ°¥¨¥Í¥ë¥®¡¼¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by kinetic force!");
 #endif
 
-                       if (!p_ptr->resist_sound)
+                       if (!p_ptr->resist_sound && !CHECK_MULTISHADOW())
                        {
                                (void)set_stun(p_ptr->stun + randint1(20));
                        }
@@ -6936,25 +6946,26 @@ if (fuzzy) msg_print("
                case GF_ROCKET:
                {
 #ifdef JP
-if (fuzzy) msg_print("Çúȯ¤¬¤¢¤Ã¤¿¡ª");
+                       if (fuzzy) msg_print("Çúȯ¤¬¤¢¤Ã¤¿¡ª");
 #else
                        if (fuzzy) msg_print("There is an explosion!");
 #endif
 
-                       if (!p_ptr->resist_sound)
+                       if (!p_ptr->resist_sound && !CHECK_MULTISHADOW())
                        {
                                (void)set_stun(p_ptr->stun + randint1(20));
                        }
+
                        if (p_ptr->resist_shard)
                        {
                                dam /= 2;
                        }
-                       else
+                       else if (!CHECK_MULTISHADOW())
                        {
-                               (void)set_cut(p_ptr->  cut + ( dam / 2));
+                               (void)set_cut(p_ptr->cut + (dam / 2));
                        }
 
-                       if ((!p_ptr->resist_shard) || one_in_(12))
+                       if (!p_ptr->resist_shard || one_in_(12))
                        {
                                inven_damage(set_cold_destroy, 3);
                        }
@@ -6967,12 +6978,12 @@ if (fuzzy) msg_print("
                case GF_INERTIA:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«ÃÙ¤¤¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«ÃÙ¤¤¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something slow!");
 #endif
 
-                       (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
+                       if (!CHECK_MULTISHADOW()) (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
                        get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
                        break;
                }
@@ -6981,7 +6992,7 @@ if (fuzzy) msg_print("
                case GF_LITE:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something!");
 #endif
@@ -6990,16 +7001,17 @@ if (fuzzy) msg_print("
                        {
                                dam *= 4; dam /= (randint1(4) + 7);
                        }
-                       else if (!blind && !p_ptr->resist_blind)
+                       else if (!blind && !p_ptr->resist_blind && !CHECK_MULTISHADOW())
                        {
                                (void)set_blind(p_ptr->blind + randint1(5) + 2);
                        }
+
                        if (prace_is_(RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE))
                        {
 #ifdef JP
-msg_print("¸÷¤ÇÆùÂΤ¬¾Ç¤¬¤µ¤ì¤¿¡ª");
+                               if (!CHECK_MULTISHADOW()) msg_print("¸÷¤ÇÆùÂΤ¬¾Ç¤¬¤µ¤ì¤¿¡ª");
 #else
-                               msg_print("The light scorches your flesh!");
+                               if (!CHECK_MULTISHADOW()) msg_print("The light scorches your flesh!");
 #endif
 
                                dam *= 2;
@@ -7008,14 +7020,15 @@ msg_print("
                        {
                                dam = dam * 4 / 3;
                        }
+
                        if (p_ptr->wraith_form) dam *= 2;
                        get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
 
-                       if (p_ptr->wraith_form)
+                       if (p_ptr->wraith_form && !CHECK_MULTISHADOW())
                        {
                                p_ptr->wraith_form = 0;
 #ifdef JP
-msg_print("Á®¸÷¤Î¤¿¤áÈóʪ¼ÁŪ¤Ê±Æ¤Î¸ºß¤Ç¤¤¤é¤ì¤Ê¤¯¤Ê¤Ã¤¿¡£");
+                               msg_print("Á®¸÷¤Î¤¿¤áÈóʪ¼ÁŪ¤Ê±Æ¤Î¸ºß¤Ç¤¤¤é¤ì¤Ê¤¯¤Ê¤Ã¤¿¡£");
 #else
                                msg_print("The light forces you out of your incorporeal shadow form.");
 #endif
@@ -7038,7 +7051,7 @@ msg_print("
                case GF_DARK:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something!");
 #endif
@@ -7049,7 +7062,7 @@ if (fuzzy) msg_print("
 
                                if (prace_is_(RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE) || p_ptr->wraith_form) dam = 0;
                        }
-                       else if (!blind && !p_ptr->resist_blind)
+                       else if (!blind && !p_ptr->resist_blind && !CHECK_MULTISHADOW())
                        {
                                (void)set_blind(p_ptr->blind + randint1(5) + 2);
                        }
@@ -7061,7 +7074,7 @@ if (fuzzy) msg_print("
                case GF_TIME:
                {
 #ifdef JP
-if (fuzzy) msg_print("²áµî¤«¤é¤Î¾×·â¤Ë¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²áµî¤«¤é¤Î¾×·â¤Ë¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by a blast from the past!");
 #endif
@@ -7071,13 +7084,12 @@ if (fuzzy) msg_print("
                                dam *= 4;
                                dam /= (randint1(4) + 7);
 #ifdef JP
-msg_print("»þ´Ö¤¬Ä̤ê²á¤®¤Æ¤¤¤¯µ¤¤¬¤¹¤ë¡£");
+                               msg_print("»þ´Ö¤¬Ä̤ê²á¤®¤Æ¤¤¤¯µ¤¤¬¤¹¤ë¡£");
 #else
                                msg_print("You feel as if time is passing you by.");
 #endif
-
                        }
-                       else
+                       else if (!CHECK_MULTISHADOW())
                        {
                                switch (randint1(10))
                                {
@@ -7085,7 +7097,7 @@ msg_print("
                                        {
                                                if (p_ptr->prace == RACE_ANDROID) break;
 #ifdef JP
-msg_print("¿ÍÀ¸¤¬µÕÌá¤ê¤·¤¿µ¤¤¬¤¹¤ë¡£");
+                                               msg_print("¿ÍÀ¸¤¬µÕÌá¤ê¤·¤¿µ¤¤¬¤¹¤ë¡£");
 #else
                                                msg_print("You feel life has clocked back.");
 #endif
@@ -7099,12 +7111,12 @@ msg_print("
                                                switch (randint1(6))
                                                {
 #ifdef JP
-case 1: k = A_STR; act = "¶¯¤¯"; break;
-case 2: k = A_INT; act = "ÁïÌÀ¤Ç"; break;
-case 3: k = A_WIS; act = "¸­ÌÀ¤Ç"; break;
-case 4: k = A_DEX; act = "´ïÍѤÇ"; break;
-case 5: k = A_CON; act = "·ò¹¯¤Ç"; break;
-case 6: k = A_CHR; act = "Èþ¤·¤¯"; break;
+                                                       case 1: k = A_STR; act = "¶¯¤¯"; break;
+                                                       case 2: k = A_INT; act = "ÁïÌÀ¤Ç"; break;
+                                                       case 3: k = A_WIS; act = "¸­ÌÀ¤Ç"; break;
+                                                       case 4: k = A_DEX; act = "´ïÍѤÇ"; break;
+                                                       case 5: k = A_CON; act = "·ò¹¯¤Ç"; break;
+                                                       case 6: k = A_CHR; act = "Èþ¤·¤¯"; break;
 #else
                                                        case 1: k = A_STR; act = "strong"; break;
                                                        case 2: k = A_INT; act = "bright"; break;
@@ -7113,16 +7125,14 @@ case 6: k = A_CHR; act = "
                                                        case 5: k = A_CON; act = "hale"; break;
                                                        case 6: k = A_CHR; act = "beautiful"; break;
 #endif
-
                                                }
 
 #ifdef JP
-msg_format("¤¢¤Ê¤¿¤Ï°ÊÁ°¤Û¤É%s¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿...¡£", act);
+                                               msg_format("¤¢¤Ê¤¿¤Ï°ÊÁ°¤Û¤É%s¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿...¡£", act);
 #else
                                                msg_format("You're not as %s as you used to be...", act);
 #endif
 
-
                                                p_ptr->stat_cur[k] = (p_ptr->stat_cur[k] * 3) / 4;
                                                if (p_ptr->stat_cur[k] < 3) p_ptr->stat_cur[k] = 3;
                                                p_ptr->update |= (PU_BONUS);
@@ -7132,12 +7142,11 @@ msg_format("
                                        case 10:
                                        {
 #ifdef JP
-msg_print("¤¢¤Ê¤¿¤Ï°ÊÁ°¤Û¤ÉÎ϶¯¤¯¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿...¡£");
+                                               msg_print("¤¢¤Ê¤¿¤Ï°ÊÁ°¤Û¤ÉÎ϶¯¤¯¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿...¡£");
 #else
                                                msg_print("You're not as powerful as you used to be...");
 #endif
 
-
                                                for (k = 0; k < 6; k++)
                                                {
                                                        p_ptr->stat_cur[k] = (p_ptr->stat_cur[k] * 7) / 8;
@@ -7164,13 +7173,16 @@ msg_print("
                        msg_print("Gravity warps around you.");
 #endif
 
-                       teleport_player(5, TELEPORT_PASSIVE);
-                       if (!p_ptr->levitation)
-                               (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
-                       if (!(p_ptr->resist_sound || p_ptr->levitation))
+                       if (!CHECK_MULTISHADOW())
                        {
-                               int k = (randint1((dam > 90) ? 35 : (dam / 3 + 5)));
-                               (void)set_stun(p_ptr->stun + k);
+                               teleport_player(5, TELEPORT_PASSIVE);
+                               if (!p_ptr->levitation)
+                                       (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
+                               if (!(p_ptr->resist_sound || p_ptr->levitation))
+                               {
+                                       int k = (randint1((dam > 90) ? 35 : (dam / 3 + 5)));
+                                       (void)set_stun(p_ptr->stun + k);
+                               }
                        }
                        if (p_ptr->levitation)
                        {
@@ -7190,7 +7202,7 @@ msg_print("
                case GF_DISINTEGRATE:
                {
 #ifdef JP
-if (fuzzy) msg_print("½ã¿è¤Ê¥¨¥Í¥ë¥®¡¼¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("½ã¿è¤Ê¥¨¥Í¥ë¥®¡¼¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by pure energy!");
 #endif
@@ -7202,7 +7214,7 @@ if (fuzzy) msg_print("
                case GF_OLD_HEAL:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤é¤«¤Î¹¶·â¤Ë¤è¤Ã¤Æµ¤Ê¬¤¬¤è¤¯¤Ê¤Ã¤¿¡£");
+                       if (fuzzy) msg_print("²¿¤é¤«¤Î¹¶·â¤Ë¤è¤Ã¤Æµ¤Ê¬¤¬¤è¤¯¤Ê¤Ã¤¿¡£");
 #else
                        if (fuzzy) msg_print("You are hit by something invigorating!");
 #endif
@@ -7215,7 +7227,7 @@ if (fuzzy) msg_print("
                case GF_OLD_SPEED:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something!");
 #endif
@@ -7228,7 +7240,7 @@ if (fuzzy) msg_print("
                case GF_OLD_SLOW:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«ÃÙ¤¤¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«ÃÙ¤¤¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something slow!");
 #endif
@@ -7241,7 +7253,7 @@ if (fuzzy) msg_print("
                {
                        if (p_ptr->free_act)  break;
 #ifdef JP
-if (fuzzy) msg_print("̲¤Ã¤Æ¤·¤Þ¤Ã¤¿¡ª");
+                       if (fuzzy) msg_print("̲¤Ã¤Æ¤·¤Þ¤Ã¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You fall asleep!");
 #endif
@@ -7250,12 +7262,11 @@ if (fuzzy) msg_print("̲
                        if (ironman_nightmare)
                        {
 #ifdef JP
-msg_print("¶²¤í¤·¤¤¸÷·Ê¤¬Æ¬¤ËÉ⤫¤ó¤Ç¤­¤¿¡£");
+                               msg_print("¶²¤í¤·¤¤¸÷·Ê¤¬Æ¬¤ËÉ⤫¤ó¤Ç¤­¤¿¡£");
 #else
                                msg_print("A horrible vision enters your mind.");
 #endif
 
-
                                /* Pick a nightmare */
                                get_mon_num_prep(get_nightmare, NULL);
 
@@ -7277,7 +7288,7 @@ msg_print("
                case GF_SUPER_RAY:
                {
 #ifdef JP
-if (fuzzy) msg_print("ËâË¡¤Î¥ª¡¼¥é¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("ËâË¡¤Î¥ª¡¼¥é¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by an aura of magic!");
 #endif
@@ -7290,7 +7301,7 @@ if (fuzzy) msg_print("
                case GF_PSY_SPEAR:
                {
 #ifdef JP
-if (fuzzy) msg_print("¥¨¥Í¥ë¥®¡¼¤Î²ô¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("¥¨¥Í¥ë¥®¡¼¤Î²ô¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by an energy!");
 #endif
@@ -7303,7 +7314,7 @@ if (fuzzy) msg_print("
                case GF_METEOR:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«¤¬¶õ¤«¤é¤¢¤Ê¤¿¤ÎƬ¾å¤ËÍî¤Á¤Æ¤­¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«¤¬¶õ¤«¤é¤¢¤Ê¤¿¤ÎƬ¾å¤ËÍî¤Á¤Æ¤­¤¿¡ª");
 #else
                        if (fuzzy) msg_print("Something falls from the sky on you!");
 #endif
@@ -7322,24 +7333,27 @@ if (fuzzy) msg_print("
                case GF_ICE:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«±Ô¤¯Î䤿¤¤¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«±Ô¤¯Î䤿¤¤¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something sharp and cold!");
 #endif
 
                        cold_dam(dam, killer, monspell);
-                       if (!p_ptr->resist_shard)
+                       if (!CHECK_MULTISHADOW())
                        {
-                               (void)set_cut(p_ptr->cut + damroll(5, 8));
-                       }
-                       if (!p_ptr->resist_sound)
-                       {
-                               (void)set_stun(p_ptr->stun + randint1(15));
-                       }
+                               if (!p_ptr->resist_shard)
+                               {
+                                       (void)set_cut(p_ptr->cut + damroll(5, 8));
+                               }
+                               if (!p_ptr->resist_sound)
+                               {
+                                       (void)set_stun(p_ptr->stun + randint1(15));
+                               }
 
-                       if ((!(p_ptr->resist_cold || IS_OPPOSE_COLD())) || one_in_(12))
-                       {
-                               if (!p_ptr->immune_cold) inven_damage(set_cold_destroy, 3);
+                               if ((!(p_ptr->resist_cold || IS_OPPOSE_COLD())) || one_in_(12))
+                               {
+                                       if (!p_ptr->immune_cold) inven_damage(set_cold_destroy, 3);
+                               }
                        }
 
                        break;
@@ -7349,7 +7363,7 @@ if (fuzzy) msg_print("
                case GF_DEATH_RAY:
                {
 #ifdef JP
-if (fuzzy) msg_print("²¿¤«Èó¾ï¤ËÎ䤿¤¤¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
+                       if (fuzzy) msg_print("²¿¤«Èó¾ï¤ËÎ䤿¤¤¤â¤Î¤Ç¹¶·â¤µ¤ì¤¿¡ª");
 #else
                        if (fuzzy) msg_print("You are hit by something extremely cold!");
 #endif
@@ -7391,7 +7405,15 @@ if (fuzzy) msg_print("
                /* Drain mana */
                case GF_DRAIN_MANA:
                {
-                       if (p_ptr->csp)
+                       if (CHECK_MULTISHADOW())
+                       {
+#ifdef JP
+                               msg_print("¹¶·â¤Ï¸¸±Æ¤ËÌ¿Ã椷¡¢¤¢¤Ê¤¿¤Ë¤ÏÆϤ«¤Ê¤«¤Ã¤¿¡£");
+#else
+                               msg_print("The attack hits Shadow, you are unharmed!");
+#endif
+                       }
+                       else if (p_ptr->csp)
                        {
                                /* Basic message */
 #ifdef JP
@@ -7458,7 +7480,7 @@ if (fuzzy) msg_print("
                /* Mind blast */
                case GF_MIND_BLAST:
                {
-                       if (randint0(100 + rlev/2) < (MAX(5, p_ptr->skill_sav)))
+                       if ((randint0(100 + rlev / 2) < MAX(5, p_ptr->skill_sav)) && !CHECK_MULTISHADOW())
                        {
 #ifdef JP
                                msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
@@ -7469,29 +7491,32 @@ if (fuzzy) msg_print("
                        }
                        else
                        {
+                               if (!CHECK_MULTISHADOW())
+                               {
 #ifdef JP
-                               msg_print("ÎîŪ¥¨¥Í¥ë¥®¡¼¤ÇÀº¿À¤¬¹¶·â¤µ¤ì¤¿¡£");
+                                       msg_print("ÎîŪ¥¨¥Í¥ë¥®¡¼¤ÇÀº¿À¤¬¹¶·â¤µ¤ì¤¿¡£");
 #else
-                               msg_print("Your mind is blasted by psyonic energy.");
+                                       msg_print("Your mind is blasted by psyonic energy.");
 #endif
 
-                               if (!p_ptr->resist_conf)
-                               {
-                                       (void)set_confused(p_ptr->confused + randint0(4) + 4);
-                               }
+                                       if (!p_ptr->resist_conf)
+                                       {
+                                               (void)set_confused(p_ptr->confused + randint0(4) + 4);
+                                       }
 
-                               if (!p_ptr->resist_chaos && one_in_(3))
-                               {
-                                       (void)set_image(p_ptr->image + randint0(250) + 150);
-                               }
+                                       if (!p_ptr->resist_chaos && one_in_(3))
+                                       {
+                                               (void)set_image(p_ptr->image + randint0(250) + 150);
+                                       }
 
-                               p_ptr->csp -= 50;
-                               if (p_ptr->csp < 0)
-                               {
-                                       p_ptr->csp = 0;
-                                       p_ptr->csp_frac = 0;
+                                       p_ptr->csp -= 50;
+                                       if (p_ptr->csp < 0)
+                                       {
+                                               p_ptr->csp = 0;
+                                               p_ptr->csp_frac = 0;
+                                       }
+                                       p_ptr->redraw |= PR_MANA;
                                }
-                               p_ptr->redraw |= PR_MANA;
 
                                get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
                        }
@@ -7501,7 +7526,7 @@ if (fuzzy) msg_print("
                /* Brain smash */
                case GF_BRAIN_SMASH:
                {
-                       if (randint0(100 + rlev/2) < (MAX(5, p_ptr->skill_sav)))
+                       if ((randint0(100 + rlev / 2) < MAX(5, p_ptr->skill_sav)) && !CHECK_MULTISHADOW())
                        {
 #ifdef JP
                                msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
@@ -7512,43 +7537,49 @@ if (fuzzy) msg_print("
                        }
                        else
                        {
+                               if (!CHECK_MULTISHADOW())
+                               {
 #ifdef JP
-                               msg_print("ÎîŪ¥¨¥Í¥ë¥®¡¼¤ÇÀº¿À¤¬¹¶·â¤µ¤ì¤¿¡£");
+                                       msg_print("ÎîŪ¥¨¥Í¥ë¥®¡¼¤ÇÀº¿À¤¬¹¶·â¤µ¤ì¤¿¡£");
 #else
-                               msg_print("Your mind is blasted by psionic energy.");
+                                       msg_print("Your mind is blasted by psionic energy.");
 #endif
 
-                               p_ptr->csp -= 100;
-                               if (p_ptr->csp < 0)
-                               {
-                                       p_ptr->csp = 0;
-                                       p_ptr->csp_frac = 0;
+                                       p_ptr->csp -= 100;
+                                       if (p_ptr->csp < 0)
+                                       {
+                                               p_ptr->csp = 0;
+                                               p_ptr->csp_frac = 0;
+                                       }
+                                       p_ptr->redraw |= PR_MANA;
                                }
-                               p_ptr->redraw |= PR_MANA;
 
                                get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
-                               if (!p_ptr->resist_blind)
-                               {
-                                       (void)set_blind(p_ptr->blind + 8 + randint0(8));
-                               }
-                               if (!p_ptr->resist_conf)
-                               {
-                                       (void)set_confused(p_ptr->confused + randint0(4) + 4);
-                               }
-                               if (!p_ptr->free_act)
+                               if (!CHECK_MULTISHADOW())
                                {
-                                       (void)set_paralyzed(p_ptr->paralyzed + randint0(4) + 4);
-                               }
-                               (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
+                                       if (!p_ptr->resist_blind)
+                                       {
+                                               (void)set_blind(p_ptr->blind + 8 + randint0(8));
+                                       }
+                                       if (!p_ptr->resist_conf)
+                                       {
+                                               (void)set_confused(p_ptr->confused + randint0(4) + 4);
+                                       }
+                                       if (!p_ptr->free_act)
+                                       {
+                                               (void)set_paralyzed(p_ptr->paralyzed + randint0(4) + 4);
+                                       }
+                                       (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
 
-                               while (randint0(100 + rlev/2) > (MAX(5, p_ptr->skill_sav)))
-                                       (void)do_dec_stat(A_INT);
-                               while (randint0(100 + rlev/2) > (MAX(5, p_ptr->skill_sav)))
-                                       (void)do_dec_stat(A_WIS);
+                                       while (randint0(100 + rlev / 2) > (MAX(5, p_ptr->skill_sav)))
+                                               (void)do_dec_stat(A_INT);
+                                       while (randint0(100 + rlev / 2) > (MAX(5, p_ptr->skill_sav)))
+                                               (void)do_dec_stat(A_WIS);
 
-                               if (!p_ptr->resist_chaos)
-                               {
-                                       (void)set_image(p_ptr->image + randint0(250) + 150);
+                                       if (!p_ptr->resist_chaos)
+                                       {
+                                               (void)set_image(p_ptr->image + randint0(250) + 150);
+                                       }
                                }
                        }
                        break;
@@ -7557,7 +7588,7 @@ if (fuzzy) msg_print("
                /* cause 1 */
                case GF_CAUSE_1:
                {
-                       if (randint0(100 + rlev/2) < p_ptr->skill_sav)
+                       if ((randint0(100 + rlev / 2) < p_ptr->skill_sav) && !CHECK_MULTISHADOW())
                        {
 #ifdef JP
                                msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
@@ -7568,7 +7599,7 @@ if (fuzzy) msg_print("
                        }
                        else
                        {
-                               curse_equipment(15, 0);
+                               if (!CHECK_MULTISHADOW()) curse_equipment(15, 0);
                                get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
                        }
                        break;
@@ -7577,7 +7608,7 @@ if (fuzzy) msg_print("
                /* cause 2 */
                case GF_CAUSE_2:
                {
-                       if (randint0(100 + rlev/2) < p_ptr->skill_sav)
+                       if ((randint0(100 + rlev / 2) < p_ptr->skill_sav) && !CHECK_MULTISHADOW())
                        {
 #ifdef JP
                                msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
@@ -7588,7 +7619,7 @@ if (fuzzy) msg_print("
                        }
                        else
                        {
-                               curse_equipment(25, MIN(rlev/2-15, 5));
+                               if (!CHECK_MULTISHADOW()) curse_equipment(25, MIN(rlev / 2 - 15, 5));
                                get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
                        }
                        break;
@@ -7597,7 +7628,7 @@ if (fuzzy) msg_print("
                /* cause 3 */
                case GF_CAUSE_3:
                {
-                       if (randint0(100 + rlev/2) < p_ptr->skill_sav)
+                       if ((randint0(100 + rlev / 2) < p_ptr->skill_sav) && !CHECK_MULTISHADOW())
                        {
 #ifdef JP
                                msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
@@ -7608,7 +7639,7 @@ if (fuzzy) msg_print("
                        }
                        else
                        {
-                               curse_equipment(33, MIN(rlev/2-15, 15));
+                               if (!CHECK_MULTISHADOW()) curse_equipment(33, MIN(rlev / 2 - 15, 15));
                                get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
                        }
                        break;
@@ -7617,7 +7648,7 @@ if (fuzzy) msg_print("
                /* cause 4 */
                case GF_CAUSE_4:
                {
-                       if ((randint0(100 + rlev/2) < p_ptr->skill_sav) && !(m_ptr->r_idx == MON_KENSHIROU))
+                       if ((randint0(100 + rlev / 2) < p_ptr->skill_sav) && !(m_ptr->r_idx == MON_KENSHIROU) && !CHECK_MULTISHADOW())
                        {
 #ifdef JP
                                msg_print("¤·¤«¤·È빦¤òÄ·¤ÍÊÖ¤·¤¿¡ª");
@@ -7629,7 +7660,7 @@ if (fuzzy) msg_print("
                        else
                        {
                                get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
-                               (void)set_cut(p_ptr->cut + damroll(10, 10));
+                               if (!CHECK_MULTISHADOW()) (void)set_cut(p_ptr->cut + damroll(10, 10));
                        }
                        break;
                }
@@ -7637,7 +7668,7 @@ if (fuzzy) msg_print("
                /* Hand of Doom */
                case GF_HAND_DOOM:
                {
-                       if (randint0(100 + rlev/2) < p_ptr->skill_sav)
+                       if ((randint0(100 + rlev/2) < p_ptr->skill_sav) && !CHECK_MULTISHADOW())
                        {
 #ifdef JP
                                msg_format("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
@@ -7648,16 +7679,19 @@ if (fuzzy) msg_print("
                        }
                        else
                        {
+                               if (!CHECK_MULTISHADOW())
+                               {
 #ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤ÏÌ¿¤¬Çö¤Þ¤Ã¤Æ¤¤¤¯¤è¤¦¤Ë´¶¤¸¤¿¡ª");
+                                       msg_print("¤¢¤Ê¤¿¤ÏÌ¿¤¬Çö¤Þ¤Ã¤Æ¤¤¤¯¤è¤¦¤Ë´¶¤¸¤¿¡ª");
 #else
-                               msg_print("You feel your life fade away!");
+                                       msg_print("You feel your life fade away!");
 #endif
+                                       curse_equipment(40, 20);
+                               }
 
                                get_damage = take_hit(DAMAGE_ATTACK, dam, m_name, monspell);
-                               curse_equipment(40, 20);
 
-                               if (p_ptr->chp < 1) p_ptr->chp = 1;
+                               if (p_ptr->chp < 1) p_ptr->chp = 1; /* Paranoia */
                        }
                        break;
                }
index 0d918e2..817c46a 100644 (file)
@@ -4784,8 +4784,7 @@ int inven_damage(inven_func typ, int perc)
        object_type *o_ptr;
        char        o_name[MAX_NLEN];
 
-       /* Multishadow effects is determined by turn */
-       if( p_ptr->multishadow && (turn & 1) )return 0;
+       if (CHECK_MULTISHADOW()) return 0;
 
        if (p_ptr->inside_arena) return 0;
 
@@ -4969,15 +4968,18 @@ int acid_dam(int dam, cptr kb_str, int monspell)
        if (p_ptr->resist_acid) dam = (dam + 2) / 3;
        if (double_resist) dam = (dam + 2) / 3;
 
-       if ((!(double_resist || p_ptr->resist_acid)) &&
-           one_in_(HURT_CHANCE))
-               (void)do_dec_stat(A_CHR);
+       if (!CHECK_MULTISHADOW())
+       {
+               if ((!(double_resist || p_ptr->resist_acid)) &&
+                   one_in_(HURT_CHANCE))
+                       (void)do_dec_stat(A_CHR);
 
-       /* If any armor gets hit, defend the player */
-       if (minus_ac()) dam = (dam + 1) / 2;
+               /* If any armor gets hit, defend the player */
+               if (minus_ac()) dam = (dam + 1) / 2;
+       }
 
        /* Take damage */
-       get_damage=take_hit(DAMAGE_ATTACK, dam, kb_str, monspell);
+       get_damage = take_hit(DAMAGE_ATTACK, dam, kb_str, monspell);
 
        /* Inventory damage */
        if (!(double_resist && p_ptr->resist_acid))
@@ -5012,11 +5014,11 @@ int elec_dam(int dam, cptr kb_str, int monspell)
        if (double_resist) dam = (dam + 2) / 3;
 
        if ((!(double_resist || p_ptr->resist_elec)) &&
-           one_in_(HURT_CHANCE))
+           one_in_(HURT_CHANCE) && !CHECK_MULTISHADOW())
                (void)do_dec_stat(A_DEX);
 
        /* Take damage */
-       get_damage=take_hit(DAMAGE_ATTACK, dam, kb_str, monspell);
+       get_damage = take_hit(DAMAGE_ATTACK, dam, kb_str, monspell);
 
        /* Inventory damage */
        if (!(double_resist && p_ptr->resist_elec))
@@ -5052,11 +5054,11 @@ int fire_dam(int dam, cptr kb_str, int monspell)
        if (double_resist) dam = (dam + 2) / 3;
 
        if ((!(double_resist || p_ptr->resist_fire)) &&
-           one_in_(HURT_CHANCE))
+           one_in_(HURT_CHANCE) && !CHECK_MULTISHADOW())
                (void)do_dec_stat(A_STR);
 
        /* Take damage */
-       get_damage=take_hit(DAMAGE_ATTACK, dam, kb_str, monspell);
+       get_damage = take_hit(DAMAGE_ATTACK, dam, kb_str, monspell);
 
        /* Inventory damage */
        if (!(double_resist && p_ptr->resist_fire))
@@ -5091,11 +5093,11 @@ int cold_dam(int dam, cptr kb_str, int monspell)
        if (double_resist) dam = (dam + 2) / 3;
 
        if ((!(double_resist || p_ptr->resist_cold)) &&
-           one_in_(HURT_CHANCE))
+           one_in_(HURT_CHANCE) && !CHECK_MULTISHADOW())
                (void)do_dec_stat(A_STR);
 
        /* Take damage */
-       get_damage=take_hit(DAMAGE_ATTACK, dam, kb_str, monspell);
+       get_damage = take_hit(DAMAGE_ATTACK, dam, kb_str, monspell);
 
        /* Inventory damage */
        if (!(double_resist && p_ptr->resist_cold))