OSDN Git Service

Thrown torch's dice is changed
[hengband/hengband.git] / src / mane.c
index 79a8d03..a79bb02 100644 (file)
@@ -1,15 +1,15 @@
 /* File: mind.c */
 
-/* Purpose: Mane code */
-
 /*
- * Copyright (c) 1989 James E. Wilson, Robert A. Koeneke
+ * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke
  *
- * This software may be copied and distributed for educational, research, and
- * not for profit purposes provided that this copyright and statement are
- * included in all such copies.
+ * This software may be copied and distributed for educational, research,
+ * and not for profit purposes provided that this copyright and statement
+ * are included in all such copies.  Other copyrights may also apply.
  */
 
+/* Purpose: Imitation code */
+
 #include "angband.h"
 
 
@@ -114,19 +114,19 @@ cptr            p = "ǽ
        num = p_ptr->mane_num;
 
        /* Build a prompt (accept all spells) */
+       (void)strnfmt(out_val, 78, 
 #ifdef JP
-(void) strnfmt(out_val, 78, "(%c-%c, '*'¤Ç°ìÍ÷, ESC) ¤É¤Î%s¤ò¤Þ¤Í¤Þ¤¹¤«¡©",
+                     "(%c-%c, '*'¤Ç°ìÍ÷, ESC) ¤É¤Î%s¤ò¤Þ¤Í¤Þ¤¹¤«¡©",
 #else
-       (void)strnfmt(out_val, 78, "(%c-%c, *=List, ESC=exit) Use which %s? ",
+                     "(%c-%c, *=List, ESC=exit) Use which %s? ",
 #endif
-
-               I2A(0), I2A(num - 1), p);
+                     I2A(0), I2A(num - 1), p);
 
        /* Get a spell from the user */
 
-        choice= always_show_list ? ESCAPE:1 ;
-        while (!flag)
-        {
+       choice= always_show_list ? ESCAPE:1 ;
+       while (!flag)
+       {
                if(choice==ESCAPE) choice = ' '; 
                else if( !get_com(out_val, &choice, TRUE) )break; 
 
@@ -195,8 +195,8 @@ put_str("
 
                                        /* Dump the spell --(-- */
                                        sprintf(psi_desc, "  %c) %-30s %3d%%%s",
-                                               I2A(i), spell.name,
-                                               chance, comment);
+                                               I2A(i), spell.name,
+                                               chance, comment);
                                        prt(psi_desc, y + i + 1, x);
                                }
 
@@ -244,7 +244,7 @@ put_str("
 
                        /* Prompt */
 #ifdef JP
-(void) strnfmt(tmp_val, 78, "%s¤ò¤Þ¤Í¤Þ¤¹¤«¡©", monster_powers[p_ptr->mane_spell[i]].name);
+                       (void) strnfmt(tmp_val, 78, "%s¤ò¤Þ¤Í¤Þ¤¹¤«¡©", monster_powers[p_ptr->mane_spell[i]].name);
 #else
                        (void)strnfmt(tmp_val, 78, "Use %s? ", monster_powers[p_ptr->mane_spell[i]].name);
 #endif
@@ -262,14 +262,10 @@ put_str("
        if (redraw) screen_load();
 
        /* Show choices */
-       if (show_choices)
-       {
-               /* Update */
-               p_ptr->window |= (PW_SPELL);
+       p_ptr->window |= (PW_SPELL);
 
-               /* Window stuff */
-               window_stuff();
-       }
+       /* Window stuff */
+       window_stuff();
 
        /* Abort if needed */
        if (!flag) return (FALSE);
@@ -305,7 +301,7 @@ static bool use_mane(int spell)
 #ifdef JP
 msg_print("¤«¤ó¹â¤¤¶âÀÚ¤êÀ¼¤ò¤¢¤²¤¿¡£");
 #else
-               msg_print("You makes a high pitched shriek.");
+               msg_print("You make a high pitched shriek.");
 #endif
 
                aggravate_monsters(0);
@@ -314,44 +310,14 @@ msg_print("
                break;
        case MS_DISPEL:
        {
-               monster_type *m_ptr;
-               char m_name[80];
+               int m_idx;
 
                if (!target_set(TARGET_KILL)) return FALSE;
-               if (!cave[target_row][target_col].m_idx) break;
-               if (!los(py, px, target_row, target_col)) break;
-               m_ptr = &m_list[cave[target_row][target_col].m_idx];
-               monster_desc(m_name, m_ptr, 0);
-               if (m_ptr->invulner)
-               {
-                       m_ptr->invulner = 0;
-#ifdef JP
-msg_format("%s¤Ï¤â¤¦ÌµÅ¨¤Ç¤Ï¤Ê¤¤¡£", m_name);
-#else
-                       msg_format("%^s is no longer invulnerable.", m_name);
-#endif
-               }
-               if (m_ptr->fast)
-               {
-                       m_ptr->fast = 0;
-#ifdef JP
-msg_format("%s¤Ï¤â¤¦²Ã®¤µ¤ì¤Æ¤¤¤Ê¤¤¡£", m_name);
-#else
-                       msg_format("%^s is no longer fast.", m_name);
-#endif
-               }
-               if (m_ptr->slow)
-               {
-                       m_ptr->slow = 0;
-#ifdef JP
-msg_format("%s¤Ï¤â¤¦¸ºÂ®¤µ¤ì¤Æ¤¤¤Ê¤¤¡£", m_name);
-#else
-                       msg_format("%^s is no longer slow.", m_name);
-#endif
-               }
-               p_ptr->redraw |= (PR_HEALTH);
-               if (p_ptr->riding == cave[target_row][target_col].m_idx) p_ptr->redraw |= (PR_HEALTH);
-
+               m_idx = cave[target_row][target_col].m_idx;
+               if (!m_idx) break;
+               if (!player_has_los_bold(target_row, target_col)) break;
+               if (!projectable(py, px, target_row, target_col)) break;
+               dispel_monster_status(m_idx);
                break;
        }
        case MS_ROCKET:
@@ -359,7 +325,7 @@ msg_format("%s
 #ifdef JP
 else msg_print("¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£");
 #else
-                       else msg_print("You fires a rocket.");
+                       else msg_print("You fire a rocket.");
 #endif
                
                        fire_rocket(GF_ROCKET, dir, damage, 2);
@@ -369,7 +335,7 @@ else msg_print("
 #ifdef JP
 else msg_print("Ìð¤òÊü¤Ã¤¿¡£");
 #else
-                       else msg_print("You fires an arrow.");
+                       else msg_print("You fire an arrow.");
 #endif
                
                        fire_bolt(GF_ARROW, dir, damage);
@@ -385,7 +351,7 @@ else msg_print("
 #ifdef JP
 else msg_print("»À¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes acid.");
+                       else msg_print("You breathe acid.");
 #endif
                
                        fire_ball(GF_ACID, dir, damage, (plev > 35 ? -3 : -2));
@@ -395,7 +361,7 @@ else msg_print("
 #ifdef JP
 else msg_print("°ðºÊ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes lightning.");
+                       else msg_print("You breathe lightning.");
 #endif
                
                        fire_ball(GF_ELEC, dir, damage, (plev > 35 ? -3 : -2));
@@ -405,7 +371,7 @@ else msg_print("
 #ifdef JP
 else msg_print("²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes fire.");
+                       else msg_print("You breathe fire.");
 #endif
                
                        fire_ball(GF_FIRE, dir, damage, (plev > 35 ? -3 : -2));
@@ -415,7 +381,7 @@ else msg_print("
 #ifdef JP
 else msg_print("Î䵤¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes frost.");
+                       else msg_print("You breathe frost.");
 #endif
                
                        fire_ball(GF_COLD, dir, damage, (plev > 35 ? -3 : -2));
@@ -425,7 +391,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥¬¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes gas.");
+                       else msg_print("You breathe gas.");
 #endif
                
                        fire_ball(GF_POIS, dir, damage, (plev > 35 ? -3 : -2));
@@ -435,7 +401,7 @@ else msg_print("
 #ifdef JP
 else msg_print("ÃϹö¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes nether.");
+                       else msg_print("You breathe nether.");
 #endif
                
                        fire_ball(GF_NETHER, dir, damage, (plev > 35 ? -3 : -2));
@@ -445,7 +411,7 @@ else msg_print("
 #ifdef JP
 else msg_print("Á®¸÷¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes light.");
+                       else msg_print("You breathe light.");
 #endif
                
                        fire_ball(GF_LITE, dir, damage, (plev > 35 ? -3 : -2));
@@ -455,7 +421,7 @@ else msg_print("
 #ifdef JP
 else msg_print("°Å¹õ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes darkness.");
+                       else msg_print("You breathe darkness.");
 #endif
                
                        fire_ball(GF_DARK, dir, damage, (plev > 35 ? -3 : -2));
@@ -465,7 +431,7 @@ else msg_print("
 #ifdef JP
 else msg_print("º®Íð¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes confusion.");
+                       else msg_print("You breathe confusion.");
 #endif
                
                        fire_ball(GF_CONFUSION, dir, damage, (plev > 35 ? -3 : -2));
@@ -475,7 +441,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¹ì²»¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes sound.");
+                       else msg_print("You breathe sound.");
 #endif
                
                        fire_ball(GF_SOUND, dir, damage, (plev > 35 ? -3 : -2));
@@ -485,7 +451,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥«¥ª¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes chaos.");
+                       else msg_print("You breathe chaos.");
 #endif
                
                        fire_ball(GF_CHAOS, dir, damage, (plev > 35 ? -3 : -2));
@@ -495,7 +461,7 @@ else msg_print("
 #ifdef JP
 else msg_print("Îô²½¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes disenchantment.");
+                       else msg_print("You breathe disenchantment.");
 #endif
                
                        fire_ball(GF_DISENCHANT, dir, damage, (plev > 35 ? -3 : -2));
@@ -505,7 +471,7 @@ else msg_print("
 #ifdef JP
 else msg_print("°ø²Ìº®Íð¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes nexus.");
+                       else msg_print("You breathe nexus.");
 #endif
                
                        fire_ball(GF_NEXUS, dir, damage, (plev > 35 ? -3 : -2));
@@ -515,7 +481,7 @@ else msg_print("
 #ifdef JP
 else msg_print("»þ´ÖµÕž¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes time.");
+                       else msg_print("You breathe time.");
 #endif
                
                        fire_ball(GF_TIME, dir, damage, (plev > 35 ? -3 : -2));
@@ -525,7 +491,7 @@ else msg_print("
 #ifdef JP
 else msg_print("ÃÙÆߤΥ֥쥹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes inertia.");
+                       else msg_print("You breathe inertia.");
 #endif
                
                        fire_ball(GF_INERTIA, dir, damage, (plev > 35 ? -3 : -2));
@@ -535,7 +501,7 @@ else msg_print("
 #ifdef JP
 else msg_print("½ÅÎϤΥ֥쥹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes gravity.");
+                       else msg_print("You breathe gravity.");
 #endif
                
                        fire_ball(GF_GRAVITY, dir, damage, (plev > 35 ? -3 : -2));
@@ -545,7 +511,7 @@ else msg_print("
 #ifdef JP
 else msg_print("ÇËÊҤΥ֥쥹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes shards.");
+                       else msg_print("You breathe shards.");
 #endif
                
                        fire_ball(GF_SHARDS, dir, damage, (plev > 35 ? -3 : -2));
@@ -555,7 +521,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥×¥é¥º¥Þ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes plasma.");
+                       else msg_print("You breathe plasma.");
 #endif
                
                        fire_ball(GF_PLASMA, dir, damage, (plev > 35 ? -3 : -2));
@@ -565,7 +531,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥Õ¥©¡¼¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes force.");
+                       else msg_print("You breathe force.");
 #endif
                
                        fire_ball(GF_FORCE, dir, damage, (plev > 35 ? -3 : -2));
@@ -575,7 +541,7 @@ else msg_print("
 #ifdef JP
 else msg_print("ËâÎϤΥ֥쥹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes mana.");
+                       else msg_print("You breathe mana.");
 #endif
                
                        fire_ball(GF_MANA, dir, damage, (plev > 35 ? -3 : -2));
@@ -585,7 +551,7 @@ else msg_print("
 #ifdef JP
 else msg_print("Êü¼Íǽµå¤òÊü¤Ã¤¿¡£");
 #else
-                       else msg_print("You casts a ball of radiation.");
+                       else msg_print("You cast a ball of radiation.");
 #endif
                
                        fire_ball(GF_NUKE, dir, damage, 2);
@@ -595,7 +561,7 @@ else msg_print("
 #ifdef JP
 else msg_print("Êü¼ÍÀ­ÇÑ´þʪ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes toxic waste.");
+                       else msg_print("You breathe toxic waste.");
 #endif
                
                        fire_ball(GF_NUKE, dir, damage, (plev > 35 ? -3 : -2));
@@ -605,7 +571,7 @@ else msg_print("
 #ifdef JP
 else msg_print("½ã¥í¥°¥ë¥¹¤òÊü¤Ã¤¿¡£");
 #else
-                       else msg_print("You invokes a raw Logrus.");
+                       else msg_print("You invoke a raw Logrus.");
 #endif
                
                        fire_ball(GF_CHAOS, dir, damage, 4);
@@ -615,7 +581,7 @@ else msg_print("
 #ifdef JP
 else msg_print("ʬ²ò¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
 #else
-                       else msg_print("You breathes disintegration.");
+                       else msg_print("You breathe disintegration.");
 #endif
                
                        fire_ball(GF_DISINTEGRATE, dir, damage, (plev > 35 ? -3 : -2));
@@ -625,7 +591,7 @@ else msg_print("ʬ
 #ifdef JP
 else msg_print("¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts an acid ball.");
+                       else msg_print("You cast an acid ball.");
 #endif
                
                        fire_ball(GF_ACID, dir, damage, 2);
@@ -635,7 +601,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a lightning ball.");
+                       else msg_print("You cast a lightning ball.");
 #endif
                
                        fire_ball(GF_ELEC, dir, damage, 2);
@@ -645,7 +611,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a fire ball.");
+                       else msg_print("You cast a fire ball.");
 #endif
                
                        fire_ball(GF_FIRE, dir, damage, 2);
@@ -655,7 +621,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥¢¥¤¥¹¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a frost ball.");
+                       else msg_print("You cast a frost ball.");
 #endif
                
                        fire_ball(GF_COLD, dir, damage, 2);
@@ -665,7 +631,7 @@ else msg_print("
 #ifdef JP
 else msg_print("°­½­±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a stinking cloud.");
+                       else msg_print("You cast a stinking cloud.");
 #endif
                
                        fire_ball(GF_POIS, dir, damage, 2);
@@ -675,7 +641,7 @@ else msg_print("
 #ifdef JP
 else msg_print("ÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a nether ball.");
+                       else msg_print("You cast a nether ball.");
 #endif
                
                        fire_ball(GF_NETHER, dir, damage, 2);
@@ -685,7 +651,7 @@ else msg_print("
 #ifdef JP
 else msg_print("ή¤ì¤ë¤è¤¦¤Ê¿È¿¶¤ê¤ò¤·¤¿¡£");
 #else
-                       else msg_print("You gestures fluidly.");
+                       else msg_print("You gesture fluidly.");
 #endif
                
                        fire_ball(GF_WATER, dir, damage, 4);
@@ -695,7 +661,7 @@ else msg_print("ή
 #ifdef JP
 else msg_print("ËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£");
 #else
-                       else msg_print("You invokes a mana storm.");
+                       else msg_print("You invoke a mana storm.");
 #endif
                
                        fire_ball(GF_MANA, dir, damage, 4);
@@ -705,7 +671,7 @@ else msg_print("
 #ifdef JP
 else msg_print("°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£");
 #else
-                       else msg_print("You invokes a darkness storm.");
+                       else msg_print("You invoke a darkness storm.");
 #endif
                
                        fire_ball(GF_DARK, dir, damage, 4);
@@ -743,7 +709,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts an acid bolt.");
+                       else msg_print("You cast an acid bolt.");
 #endif
                
                        fire_bolt(GF_ACID, dir, damage);
@@ -753,7 +719,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a lightning bolt.");
+                       else msg_print("You cast a lightning bolt.");
 #endif
                
                        fire_bolt(GF_ELEC, dir, damage);
@@ -763,7 +729,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a fire bolt.");
+                       else msg_print("You cast a fire bolt.");
 #endif
                
                        fire_bolt(GF_FIRE, dir, damage);
@@ -773,7 +739,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a frost bolt.");
+                       else msg_print("You cast a frost bolt.");
 #endif
                
                        fire_bolt(GF_COLD, dir, damage);
@@ -783,7 +749,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£");
 #else
-                       else msg_print("You invokes a starburst.");
+                       else msg_print("You invoke a starburst.");
 #endif
                
                        fire_ball(GF_LITE, dir, damage, 4);
@@ -793,7 +759,7 @@ else msg_print("
 #ifdef JP
 else msg_print("ÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a nether bolt.");
+                       else msg_print("You cast a nether bolt.");
 #endif
                
                        fire_bolt(GF_NETHER, dir, damage);
@@ -803,7 +769,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a water bolt.");
+                       else msg_print("You cast a water bolt.");
 #endif
                
                        fire_bolt(GF_WATER, dir, damage);
@@ -813,7 +779,7 @@ else msg_print("
 #ifdef JP
 else msg_print("ËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a mana bolt.");
+                       else msg_print("You cast a mana bolt.");
 #endif
                
                        fire_bolt(GF_MANA, dir, damage);
@@ -823,7 +789,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a plasma bolt.");
+                       else msg_print("You cast a plasma bolt.");
 #endif
                
                        fire_bolt(GF_PLASMA, dir, damage);
@@ -833,7 +799,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a ice bolt.");
+                       else msg_print("You cast a ice bolt.");
 #endif
                
                        fire_bolt(GF_ICE, dir, damage);
@@ -843,7 +809,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       else msg_print("You casts a magic missile.");
+                       else msg_print("You cast a magic missile.");
 #endif
                
                        fire_bolt(GF_MISSILE, dir, damage);
@@ -853,7 +819,7 @@ else msg_print("
 #ifdef JP
 else msg_print("¶²¤í¤·¤²¤Ê¸¸³Ð¤òºî¤ê½Ð¤·¤¿¡£");
 #else
-                       else msg_print("You casts a fearful illusion.");
+                       else msg_print("You cast a fearful illusion.");
 #endif
                
                        fear_monster(dir, plev+10);
@@ -867,18 +833,18 @@ else msg_print("
 #ifdef JP
 else msg_print("ͶÏÇŪ¤Ê¸¸³Ð¤ò¤Ä¤¯¤ê½Ð¤·¤¿¡£");
 #else
-                       else msg_print("You casts a mesmerizing illusion.");
+                       else msg_print("You cast a mesmerizing illusion.");
 #endif
                
                        confuse_monster(dir, plev * 2);
                break;
        case MS_SLOW:
                if (!get_aim_dir(&dir)) return FALSE;
-               slow_monster(dir);
+               slow_monster(dir, plev);
                break;
        case MS_SLEEP:
                if (!get_aim_dir(&dir)) return FALSE;
-               sleep_monster(dir);
+               sleep_monster(dir, plev);
                break;
        case MS_SPEED:
                (void)set_fast(randint1(20 + plev) + plev, FALSE);
@@ -889,7 +855,7 @@ else msg_print("Ͷ
 #ifdef JP
 else msg_print("<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª");
 #else
-               else msg_print("You invokes the Hand of Doom!");
+               else msg_print("You invoke the Hand of Doom!");
 #endif
 
                fire_ball_hide(GF_HAND_DOOM, dir, 200, 0);
@@ -899,7 +865,7 @@ else msg_print("<
 #ifdef JP
 msg_print("¼«Ê¬¤Î½ý¤ËÇ°¤ò½¸Ã椷¤¿¡£");
 #else
-                       msg_print("You concentrates on your wounds!");
+                       msg_print("You concentrate on your wounds!");
 #endif
                (void)hp_player(plev*6);
                (void)set_stun(0);
@@ -909,15 +875,15 @@ msg_print("
 #ifdef JP
 msg_print("̵½ý¤Îµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-                       msg_print("You casts a Globe of Invulnerability.");
+                       msg_print("You cast a Globe of Invulnerability.");
 #endif
                (void)set_invuln(randint1(7) + 7, FALSE);
                break;
        case MS_BLINK:
-               teleport_player(10);
+               teleport_player(10, 0L);
                break;
        case MS_TELEPORT:
-               teleport_player(plev * 5);
+               teleport_player(plev * 5, 0L);
                break;
        case MS_WORLD:
                world_player = TRUE;
@@ -956,20 +922,48 @@ msg_print("̵
        case MS_TELE_TO:
        {
                monster_type *m_ptr;
+               monster_race *r_ptr;
                char m_name[80];
 
                if (!target_set(TARGET_KILL)) return FALSE;
                if (!cave[target_row][target_col].m_idx) break;
-               if (!los(py, px, target_row, target_col)) break;
+               if (!player_has_los_bold(target_row, target_col)) break;
+               if (!projectable(py, px, target_row, target_col)) break;
                m_ptr = &m_list[cave[target_row][target_col].m_idx];
+               r_ptr = &r_info[m_ptr->r_idx];
                monster_desc(m_name, m_ptr, 0);
+               if (r_ptr->flagsr & RFR_RES_TELE)
+               {
+                       if ((r_ptr->flags1 & (RF1_UNIQUE)) || (r_ptr->flagsr & RFR_RES_ALL))
+                       {
+                               if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
+#ifdef JP
+                               msg_format("%s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", m_name);
+#else
+                               msg_format("%s is unaffected!", m_name);
+#endif
+
+                               break;
+                       }
+                       else if (r_ptr->level > randint1(100))
+                       {
+                               if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
+#ifdef JP
+                               msg_format("%s¤Ë¤ÏÂÑÀ­¤¬¤¢¤ë¡ª", m_name);
+#else
+                               msg_format("%s resists!", m_name);
+#endif
+
+                               break;
+                       }
+               }
 #ifdef JP
 msg_format("%s¤ò°ú¤­Ìᤷ¤¿¡£", m_name);
 #else
-                       msg_format("You commands %s to return.", m_name);
+               msg_format("You command %s to return.", m_name);
 #endif
 
-               teleport_to_player(cave[target_row][target_col].m_idx, 100);
+               teleport_monster_to(cave[target_row][target_col].m_idx, py, px, 100, TELEPORT_PASSIVE);
                break;
        }
        case MS_TELE_AWAY:
@@ -979,49 +973,35 @@ msg_format("%s
                break;
        case MS_TELE_LEVEL:
        {
+               int target_m_idx;
                monster_type *m_ptr;
                monster_race *r_ptr;
                char m_name[80];
 
                if (!target_set(TARGET_KILL)) return FALSE;
-               if (!cave[target_row][target_col].m_idx) break;
-               if (!los(py, px, target_row, target_col)) break;
-               m_ptr = &m_list[cave[target_row][target_col].m_idx];
+               target_m_idx = cave[target_row][target_col].m_idx;
+               if (!target_m_idx) break;
+               if (!player_has_los_bold(target_row, target_col)) break;
+               if (!projectable(py, px, target_row, target_col)) break;
+               m_ptr = &m_list[target_m_idx];
                r_ptr = &r_info[m_ptr->r_idx];
                monster_desc(m_name, m_ptr, 0);
 #ifdef JP
-msg_format("%s¤Î­¤ò»Ø¤µ¤·¤¿¡£", m_name);
-#else
-                       msg_format("You gestures at %s's feet.", m_name);
-#endif
-
-               if ((r_ptr->flags3 & RF3_RES_TELE) || (r_ptr->flags1 & RF1_QUESTOR) || (r_ptr->level + randint1(50) > plev + randint1(60)))
-               {
-#ifdef JP
-msg_print("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª");
+               msg_format("%^s¤Î­¤ò»Ø¤µ¤·¤¿¡£", m_name);
 #else
-                       msg_format("%s are unaffected!", m_name);
+               msg_format("You gesture at %^s's feet.", m_name);
 #endif
 
-               }
-               else if (one_in_(2))
+               if ((r_ptr->flagsr & (RFR_EFF_RES_NEXU_MASK | RFR_RES_TELE)) ||
+                       (r_ptr->flags1 & RF1_QUESTOR) || (r_ptr->level + randint1(50) > plev + randint1(60)))
                {
 #ifdef JP
-msg_format("%s¤Ï¾²¤òÆͤ­ÇˤäÆÄÀ¤ó¤Ç¤¤¤Ã¤¿¡£", m_name);
+                       msg_print("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª");
 #else
-                       msg_format("%s sink through the floor.", m_name);
+                       msg_format("%^s is unaffected!", m_name);
 #endif
-                       delete_monster_idx(cave[target_row][target_col].m_idx);
-               }
-               else
-               {
-#ifdef JP
-msg_format("%s¤ÏÅ·°æ¤òÆͤ­ÇˤäÆÃè¤ØÉ⤤¤Æ¤¤¤Ã¤¿¡£",m_name);
-#else
-                       msg_format("%s rise up through the ceiling.", m_name);
-#endif
-                       delete_monster_idx(cave[target_row][target_col].m_idx);
                }
+               else teleport_level(target_m_idx);
                break;
        }
        case MS_PSY_SPEAR:
@@ -1030,7 +1010,7 @@ msg_format("%s
 #ifdef JP
 else msg_print("¸÷¤Î·õ¤òÊü¤Ã¤¿¡£");
 #else
-                       else msg_print("You throws a psycho-spear.");
+                       else msg_print("You throw a psycho-spear.");
 #endif
                (void)fire_beam(GF_PSY_SPEAR, dir, damage);
                break;
@@ -1038,7 +1018,7 @@ else msg_print("
 #ifdef JP
 msg_print("°Å°Ç¤ÎÃæ¤Ç¼ê¤ò¿¶¤Ã¤¿¡£");
 #else
-                       msg_print("You gestures in shadow.");
+                       msg_print("You gesture in shadow.");
 #endif
                (void)unlite_area(10, 3);
                break;
@@ -1047,7 +1027,7 @@ msg_print("
 #ifdef JP
 msg_print("¼öʸ¤ò¾§¤¨¤Æ¼Ù°­¤ËÈù¾Ð¤ó¤À¡£");
 #else
-                       msg_print("You casts a spell and cackles evilly.");
+                       msg_print("You cast a spell and cackles evilly.");
 #endif
                trap_creation(target_row, target_col);
                break;
@@ -1062,7 +1042,7 @@ msg_print("
 #ifdef JP
 msg_print("»à¼ÔÉü³è¤Î¼öʸ¤ò¾§¤¨¤¿¡£");
 #else
-               msg_print("You casts a animate dead.");
+               msg_print("You cast a animate dead.");
 #endif
                (void)animate_dead(0, py, px);
                break;
@@ -1074,7 +1054,7 @@ msg_print("
 #ifdef JP
 msg_print("±ç·³¤ò¾¤´­¤·¤¿¡£");
 #else
-                       msg_print("You summons minions.");
+                       msg_print("You summon minions.");
 #endif
                for (k = 0;k < 4; k++)
                {
@@ -1090,7 +1070,7 @@ msg_print("
 #ifdef JP
 msg_print("¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤ò¾¤´­¤·¤¿¡ª");
 #else
-                       msg_print("You summons Cyberdemons!");
+                       msg_print("You summon Cyberdemons!");
 #endif
                if (max_cyber > 4) max_cyber = 4;
                for (k = 0;k < max_cyber; k++)
@@ -1104,7 +1084,7 @@ msg_print("
 #ifdef JP
 msg_print("Ãç´Ö¤ò¾¤´­¤·¤¿¡£");
 #else
-                       msg_print("You summons help.");
+                       msg_print("You summon help.");
 #endif
                for (k = 0;k < 1; k++)
                        summon_specific(-1, target_row, target_col, plev, 0, (mode | u_mode));
@@ -1117,7 +1097,7 @@ msg_print("
 #ifdef JP
 msg_print("¥â¥ó¥¹¥¿¡¼¤ò¾¤´­¤·¤¿¡ª");
 #else
-                       msg_print("You summons monsters!");
+                       msg_print("You summon monsters!");
 #endif
                for (k = 0;k < 6; k++)
                        summon_specific(-1, target_row, target_col, plev, 0, (mode | u_mode));
@@ -1130,7 +1110,7 @@ msg_print("
 #ifdef JP
 msg_print("¥¢¥ê¤ò¾¤´­¤·¤¿¡£");
 #else
-                       msg_print("You summons ants.");
+                       msg_print("You summon ants.");
 #endif
                for (k = 0;k < 6; k++)
                        summon_specific(-1, target_row, target_col, plev, SUMMON_ANT, mode);
@@ -1143,7 +1123,7 @@ msg_print("
 #ifdef JP
 msg_print("ÃØéá¤ò¾¤´­¤·¤¿¡£");
 #else
-                       msg_print("You summons spiders.");
+                       msg_print("You summon spiders.");
 #endif
                for (k = 0;k < 6; k++)
                        summon_specific(-1, target_row, target_col, plev, SUMMON_SPIDER, mode);
@@ -1156,7 +1136,7 @@ msg_print("
 #ifdef JP
 msg_print("¥Ï¥¦¥ó¥É¤ò¾¤´­¤·¤¿¡£");
 #else
-                       msg_print("You summons hounds.");
+                       msg_print("You summon hounds.");
 #endif
                for (k = 0;k < 4; k++)
                        summon_specific(-1, target_row, target_col, plev, SUMMON_HOUND, mode);
@@ -1169,7 +1149,7 @@ msg_print("
 #ifdef JP
 msg_print("¥Ò¥É¥é¤ò¾¤´­¤·¤¿¡£");
 #else
-                       msg_print("You summons hydras.");
+                       msg_print("You summon hydras.");
 #endif
                for (k = 0;k < 4; k++)
                        summon_specific(-1, target_row, target_col, plev, SUMMON_HYDRA, mode);
@@ -1182,7 +1162,7 @@ msg_print("
 #ifdef JP
 msg_print("Å·»È¤ò¾¤´­¤·¤¿¡ª");
 #else
-                       msg_print("You summons angel!");
+                       msg_print("You summon angel!");
 #endif
                for (k = 0;k < 1; k++)
                        summon_specific(-1, target_row, target_col, plev, SUMMON_ANGEL, mode);
@@ -1195,7 +1175,7 @@ msg_print("ŷ
 #ifdef JP
 msg_print("º®Æ٤εÜÄ¤é°­Ëâ¤ò¾¤´­¤·¤¿¡ª");
 #else
-                       msg_print("You summons a demon from the Courts of Chaos!");
+                       msg_print("You summon a demon from the Courts of Chaos!");
 #endif
                for (k = 0;k < 1; k++)
                        summon_specific(-1, target_row, target_col, plev, SUMMON_DEMON, (mode | u_mode));
@@ -1208,7 +1188,7 @@ msg_print("
 #ifdef JP
 msg_print("¥¢¥ó¥Ç¥Ã¥É¤Î¶¯Å¨¤ò¾¤´­¤·¤¿¡ª");
 #else
-                       msg_print("You summons an undead adversary!");
+                       msg_print("You summon an undead adversary!");
 #endif
                for (k = 0;k < 1; k++)
                        summon_specific(-1, target_row, target_col, plev, SUMMON_UNDEAD, (mode | u_mode));
@@ -1221,7 +1201,7 @@ msg_print("
 #ifdef JP
 msg_print("¥É¥é¥´¥ó¤ò¾¤´­¤·¤¿¡ª");
 #else
-                       msg_print("You summons dragon!");
+                       msg_print("You summon dragon!");
 #endif
                for (k = 0;k < 1; k++)
                        summon_specific(-1, target_row, target_col, plev, SUMMON_DRAGON, (mode | u_mode));
@@ -1234,7 +1214,7 @@ msg_print("
 #ifdef JP
 msg_print("¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤·¤¿¡ª");
 #else
-                       msg_print("You summons greater undead!");
+                       msg_print("You summon greater undead!");
 #endif
                for (k = 0;k < 6; k++)
                        summon_specific(-1, target_row, target_col, plev, SUMMON_HI_UNDEAD, (mode | u_mode));
@@ -1247,7 +1227,7 @@ msg_print("
 #ifdef JP
 msg_print("¸ÅÂå¥É¥é¥´¥ó¤ò¾¤´­¤·¤¿¡ª");
 #else
-                       msg_print("You summons ancient dragons!");
+                       msg_print("You summon ancient dragons!");
 #endif
                for (k = 0;k < 4; k++)
                        summon_specific(-1, target_row, target_col, plev, SUMMON_HI_DRAGON, (mode | u_mode));
@@ -1260,7 +1240,7 @@ msg_print("
 #ifdef JP
 msg_print("¥¢¥ó¥Ð¡¼¤Î²¦Â²¤ò¾¤´­¤·¤¿¡ª");
 #else
-                       msg_print("You summons Lords of Amber!");
+                       msg_print("You summon Lords of Amber!");
 #endif
                for (k = 0;k < 4; k++)
                        summon_specific(-1, target_row, target_col, plev, SUMMON_AMBERITES, (mode | PM_ALLOW_UNIQUE));
@@ -1273,7 +1253,7 @@ msg_print("
 #ifdef JP
 msg_print("ÆÃÊ̤ʶ¯Å¨¤ò¾¤´­¤·¤¿¡ª");
 #else
-                       msg_print("You summons special opponents!");
+                       msg_print("You summon special opponents!");
 #endif
                for (k = 0;k < 4; k++)
                        if (summon_specific(-1, target_row, target_col, plev, SUMMON_UNIQUE, (mode | PM_ALLOW_UNIQUE))) count++;
@@ -1337,14 +1317,13 @@ msg_print("
        /* Reduce failure rate by "effective" level adjustment */
        if (plev > spell.level) chance -= 3 * (plev - spell.level);
 
-       if (p_ptr->pseikaku == SEIKAKU_NAMAKE) chance += 10;
-       if (p_ptr->pseikaku == SEIKAKU_KIREMONO) chance -= 3;
-
-       /* Reduce failure rate by INT/WIS adjustment */
-       chance -= 3 * (adj_mag_stat[p_ptr->stat_ind[spell.use_stat]] - 1);
+       /* Reduce failure rate by 1 stat and DEX adjustment */
+       chance -= 3 * (adj_mag_stat[p_ptr->stat_ind[spell.use_stat]] + adj_mag_stat[p_ptr->stat_ind[A_DEX]] - 2) / 2;
 
        if (spell.manedam) chance = chance * damage / spell.manedam;
 
+       chance += p_ptr->to_m_chance;
+
        /* Extract the minimum failure rate */
        minfail = adj_mag_fail[p_ptr->stat_ind[spell.use_stat]];
 
@@ -1391,7 +1370,7 @@ msg_print("
        energy_use = 100;
 
        /* Window stuff */
-       p_ptr->redraw |= (PR_MANE);
+       p_ptr->redraw |= (PR_IMITATION);
        p_ptr->window |= (PW_PLAYER);
        p_ptr->window |= (PW_SPELL);