OSDN Git Service

branch-hexの変更をコミット。
[hengband/hengband.git] / src / effects.c
index 599091a..75534c2 100644 (file)
@@ -89,6 +89,15 @@ void set_action(int typ)
 #endif
                                break;
                        }
+                       case ACTION_SPELL:
+                       {
+#ifdef JP
+                               msg_print("¼öʸ¤Î±Ó¾§¤òÃæÃǤ·¤¿¡£");
+#else
+                               msg_print("You stopped spelling all spells.");
+#endif
+                               break;
+                       }
                }
        }
 
@@ -182,6 +191,7 @@ void reset_tim_flags(void)
        p_ptr->tim_sh_fire = 0;
        p_ptr->tim_sh_holy = 0;
        p_ptr->tim_eyeeye = 0;
+       p_ptr->magicdef = 0;
        p_ptr->resist_magic = 0;
        p_ptr->tsuyoshi = 0;
        p_ptr->kabenuke = 0;
@@ -286,14 +296,19 @@ void dispel_player(void)
 #endif
        }
 
-       if (music_singing_any())
+       if (music_singing_any() || hex_spelling_any())
        {
+#ifdef JP
+               cptr str = (music_singing_any()) ? "²Î" : "¼öʸ";
+#else
+               cptr str = (music_singing_any()) ? "singing" : "spelling";
+#endif
                p_ptr->magic_num1[1] = p_ptr->magic_num1[0];
                p_ptr->magic_num1[0] = 0;
 #ifdef JP
-               msg_print("²Î¤¬ÅÓÀڤ줿¡£");
+               msg_format("%s¤¬ÅÓÀڤ줿¡£", str);
 #else
-               msg_print("Your singing is interrupted.");
+               msg_format("Your %s is interrupted.", str);
 #endif
                p_ptr->action = ACTION_NONE;
 
@@ -547,6 +562,12 @@ msg_print("
                                p_ptr->action = ACTION_NONE;
                        }
 
+                       /* Sniper */
+                       if (p_ptr->concent) reset_concentration(TRUE);
+
+                       /* Hex */
+                       if (hex_spelling_any()) stop_hex_spell_all();
+
                        notice = TRUE;
                        p_ptr->counter = FALSE;
                        chg_virtue(V_HARMONY, -1);
@@ -753,6 +774,12 @@ msg_print("
                        msg_print("You are paralyzed!");
 #endif
 
+                       /* Sniper */
+                       if (p_ptr->concent) reset_concentration(TRUE);
+
+                       /* Hex */
+                       if (hex_spelling_any()) stop_hex_spell_all();
+
                        p_ptr->counter = FALSE;
                        notice = TRUE;
                }
@@ -823,6 +850,9 @@ msg_print("
                        msg_print("Oh, wow! Everything looks so cosmic now!");
 #endif
 
+                       /* Sniper */
+                       if (p_ptr->concent) reset_concentration(TRUE);
+
                        p_ptr->counter = FALSE;
                        notice = TRUE;
                }
@@ -858,6 +888,9 @@ msg_print("
        /* Redraw map */
        p_ptr->redraw |= (PR_MAP);
 
+       /* Update the health bar */
+       p_ptr->redraw |= (PR_HEALTH | PR_UHEALTH);
+
        /* Update monsters */
        p_ptr->update |= (PU_MONSTERS);
 
@@ -3606,6 +3639,12 @@ msg_print("
                        p_ptr->action = ACTION_NONE;
                }
 
+               /* Sniper */
+               if (p_ptr->concent) reset_concentration(TRUE);
+
+               /* Hex */
+               if (hex_spelling_any()) stop_hex_spell_all();
+
                /* Notice */
                notice = TRUE;
        }
@@ -5122,8 +5161,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)
                        {