OSDN Git Service

練気術を使用した直後に盲目になった状況で, その練気術を'n'や'['で繰り
[hengbandforosx/hengbandosx.git] / src / mind.c
index 195e9e0..839bdfb 100644 (file)
@@ -524,15 +524,18 @@ void mindcraft_info(char *p, int use_mind, int power)
 
 #ifdef ALLOW_REPEAT /* TNB */
 
-      /* Get the spell, if available */
-      if (repeat_pull(sn))
+       /* Get the spell, if available */
+       if (repeat_pull(sn))
        {
-         /* Verify the spell */
-         if (mind_ptr->info[*sn].min_lev <= plev)
-           {
-             /* Success */
-             return (TRUE);
-           }
+               /* Hack -- If requested INVEN_FORCE(1111), pull again */
+               if (*sn == INVEN_FORCE) repeat_pull(sn);
+
+               /* Verify the spell */
+               if (mind_ptr->info[*sn].min_lev <= plev)
+               {
+                       /* Success */
+                       return (TRUE);
+               }
        }
 
 #endif /* ALLOW_REPEAT -- TNB */
@@ -588,7 +591,6 @@ void mindcraft_info(char *p, int use_mind, int power)
                                {
                                        if (!only_browse) screen_load();
                                        return (FALSE);
-                                       break;
                                }
 
                                case '8':
@@ -932,7 +934,6 @@ if (!b) msg_print("
                        return psychometry();
                else
                        return ident_spell(FALSE);
-               break;
        case 8:
                /* Mindwave */
 #ifdef JP
@@ -956,7 +957,7 @@ msg_print("
                 * Only heal when Adrenalin Channeling is not active. We check
                 * that by checking if the player isn't fast and 'heroed' atm.
                 */
-               if (!p_ptr->fast || !p_ptr->hero)
+               if (!IS_FAST() || !IS_HERO())
                {
                        hp_player(plev);
                }
@@ -1181,6 +1182,7 @@ msg_format("%s
 #else
                        msg_format("%^s is no longer invulnerable.", m_name);
 #endif
+                       m_ptr->energy_need += ENERGY_NEED();
                }
                if (m_ptr->fast)
                {
@@ -1407,8 +1409,7 @@ msg_format("There are too many mirrors to control!");
          return dimension_door();
        /* mirror of recall */
        case 17:
-         if(!word_of_recall())return FALSE;
-         break;
+               return word_of_recall();
        /* multi-shadow */
        case 18:
          set_multishadow(6+randint1(6),FALSE);
@@ -1516,7 +1517,7 @@ static bool cast_berserk_spell(int spell)
                        verify_panel();
 
                        /* Update stuff */
-                       p_ptr->update |= (PU_VIEW | PU_LITE | PU_FLOW);
+                       p_ptr->update |= (PU_VIEW | PU_LITE | PU_FLOW | PU_MON_LITE);
 
                        /* Update the monsters */
                        p_ptr->update |= (PU_DISTANCE);
@@ -1676,7 +1677,6 @@ msg_print("
        }
        case 7:
                return ident_spell(FALSE);
-               break;
        case 8:
                set_tim_ffall(randint1(20) + 20, FALSE);
                break;
@@ -1688,11 +1688,7 @@ msg_print("
                set_oppose_fire(plev, FALSE);
                break;
        case 10:
-               project_length = 5;
-               if (!get_aim_dir(&dir)) return FALSE;
-               project_hook(GF_ATTACK, dir, HISSATSU_NYUSIN, PROJECT_STOP | PROJECT_KILL);
-
-               break;
+               return rush_attack(NULL);
        case 11:
        {
                int i;
@@ -1828,11 +1824,11 @@ msg_print("
                        int typ = one_in_(2) ? GF_FIRE : one_in_(3) ? GF_NETHER : GF_PLASMA;
                        int attempts = 1000;
 
-                       while(attempts--)
+                       while (attempts--)
                        {
                                scatter(&y, &x, py, px, 4, 0);
 
-                               if ((y != py) || (x != px)) break;
+                               if (!player_bold(y, x)) break;
                        }
                        project(0, 0, y, x, damroll(6 + plev / 8, 10), typ,
                                (PROJECT_BEAM | PROJECT_THRU | PROJECT_GRID | PROJECT_KILL), -1);
@@ -2300,6 +2296,4 @@ void do_cmd_mind_browse(void)
                  (void)inkey();
                }
        }
-
-       screen_load();
 }