OSDN Git Service

Add a monster, Young quicksilver dragon.
[hengband/hengband.git] / src / mind.c
index cf9bda3..4e5788f 100644 (file)
@@ -295,128 +295,128 @@ void mindcraft_info(char *p, int use_mind, int power)
        cptr s_dur = "dur ";
        cptr s_range = "range ";
 #endif
-  int plev = p_ptr->lev;
+       int plev = p_ptr->lev;
 
-  strcpy(p, "");
+       strcpy(p, "");
 
-  switch (use_mind)
-    {
-    case MIND_MINDCRAFTER:
-      switch (power)
+       switch (use_mind)
        {
-       case 0:  break;
-       case 1:  sprintf(p, " %s%dd%d", s_dam, 3 + ((plev - 1) / 4), 3 + plev/15); break;
-       case 2:  sprintf(p, " %s10", s_range); break;
-       case 3:  sprintf(p, " %s%d", s_range, plev * 5);  break;
-       case 4:  break;
-       case 5: sprintf(p, " %s%dd8", s_dam, 8 + ((plev - 5) / 4));  break;
-       case 6:  sprintf(p, " %s%d", s_dur, plev);  break;
-       case 7:  break;
-       case 8:  sprintf(p, (plev < 25 ? " %s%d" : " %sd%d"), s_dam, (plev < 25 ? plev * 3 / 2 : plev * ((plev - 5) / 10 + 1))); break;
-       case 9:  sprintf(p, " %s10+d%d", s_dur, plev * 3 / 2);  break;
+       case MIND_MINDCRAFTER:
+               switch (power)
+               {
+               case 0:  break;
+               case 1:  sprintf(p, " %s%dd%d", s_dam, 3 + ((plev - 1) / 4), 3 + plev/15); break;
+               case 2:  sprintf(p, " %s10", s_range); break;
+               case 3:  sprintf(p, " %s%d", s_range, plev * 5);  break;
+               case 4:  break;
+               case 5: sprintf(p, " %s%dd8", s_dam, 8 + ((plev - 5) / 4));  break;
+               case 6:  sprintf(p, " %s%d", s_dur, plev);  break;
+               case 7:  break;
+               case 8:  sprintf(p, (plev < 25 ? " %s%d" : " %sd%d"), s_dam, (plev < 25 ? plev * 3 / 2 : plev * ((plev - 5) / 10 + 1))); break;
+               case 9:  sprintf(p, " %s10+d%d", s_dur, plev * 3 / 2);  break;
 #ifdef JP
-       case 10: sprintf(p, " ºÇÂç½ÅÎÌ:%d.%dkg", lbtokg1(plev * 15),lbtokg2(plev * 15));  break;
+               case 10: sprintf(p, " ºÇÂç½ÅÎÌ:%d.%dkg", lbtokg1(plev * 15),lbtokg2(plev * 15));  break;
 #else
-       case 10: sprintf(p, " max wgt %d", plev * 15);  break;
+               case 10: sprintf(p, " max wgt %d", plev * 15);  break;
 #endif
-       case 11: sprintf(p, " %s%dd6", s_dam, plev / 2);  break;
-       case 12: sprintf(p, " %sd%d+%d", s_dam, plev * 3, plev * 3); break;
+               case 11: sprintf(p, " %s%dd6", s_dam, plev / 2);  break;
+               case 12: sprintf(p, " %sd%d+%d", s_dam, plev * 3, plev * 3); break;
 #ifdef JP
-       case 13: sprintf(p, " ¹ÔÆ°:%ld²ó", (p_ptr->csp + 100-p_ptr->energy_need - 50)/100); break;
+               case 13: sprintf(p, " ¹ÔÆ°:%ld²ó", (long int)(p_ptr->csp + 100-p_ptr->energy_need - 50)/100); break;
 #else
-       case 13: sprintf(p, " %ld acts.", (p_ptr->csp + 100-p_ptr->energy_need - 50)/100); break;
+               case 13: sprintf(p, " %ld acts.", (p_ptr->csp + 100-p_ptr->energy_need - 50)/100); break;
 #endif
-       }
-      break;
-    case MIND_KI:
-      {
-       int boost = p_ptr->magic_num1[0];
+               }
+               break;
+       case MIND_KI:
+       {
+               int boost = p_ptr->magic_num1[0];
 
-       if (heavy_armor()) boost /= 2;
+               if (heavy_armor()) boost /= 2;
 
-       switch (power)
-         {
-         case 0:  sprintf(p, " %s%dd4", s_dam, 3 + ((plev - 1) / 5) + boost / 12); break;
-         case 1:  break;
-         case 2:  sprintf(p, " %s%d+d30", s_dur, 30 + boost / 5); break;
-         case 3:  sprintf(p, " %s%dd5", s_dam, 5 + ((plev - 1) / 5) + boost / 10); break;
-         case 4:  sprintf(p, " %s%d+d20", s_dur, 20 + boost / 5); break;
-         case 5:  break;
-         case 6:  sprintf(p, " %s%d+d%d", s_dur, 15 + boost / 7, plev / 2); break;
-         case 7:  sprintf(p, " %s%dd8", s_dam, 8 + ((plev - 5) / 5) + boost / 12); break;
-         case 8:  sprintf(p, " %s10d6+%d", s_dam, plev * 3 / 2 + boost * 3 / 5); break;
-         case 9:  break;
+               switch (power)
+               {
+               case 0:  sprintf(p, " %s%dd4", s_dam, 3 + ((plev - 1) / 5) + boost / 12); break;
+               case 1:  break;
+               case 2:  sprintf(p, " %s%d+d30", s_dur, 30 + boost / 5); break;
+               case 3:  sprintf(p, " %s%dd5", s_dam, 5 + ((plev - 1) / 5) + boost / 10); break;
+               case 4:  sprintf(p, " %s%d+d20", s_dur, 20 + boost / 5); break;
+               case 5:  break;
+               case 6:  sprintf(p, " %s%d+d%d", s_dur, 15 + boost / 7, plev / 2); break;
+               case 7:  sprintf(p, " %s%dd8", s_dam, 8 + ((plev - 5) / 5) + boost / 12); break;
+               case 8:  sprintf(p, " %s10d6+%d", s_dam, plev * 3 / 2 + boost * 3 / 5); break;
+               case 9:  break;
 #ifdef JP
-         case 10: sprintf(p, " ºÇÂç%dÂÎ", 1+boost/100); break;
+               case 10: sprintf(p, " ºÇÂç%dÂÎ", 1+boost/100); break;
 #else
-         case 10: sprintf(p, " max %d", 1+boost/100); break;
+               case 10: sprintf(p, " max %d", 1+boost/100); break;
 #endif
-         case 11: sprintf(p, " %s%d", s_dam, 100 + plev + boost); break;
-         case 12: sprintf(p, " %s%dd15", s_dam, 10 + plev / 2 + boost * 3 / 10); break;
+               case 11: sprintf(p, " %s%d", s_dam, 100 + plev + boost); break;
+               case 12: sprintf(p, " %s%dd15", s_dam, 10 + plev / 2 + boost * 3 / 10); break;
 #ifdef JP
-         case 13: sprintf(p, " ¹ÔÆ°:%d+d16²ó", 16+boost/20); break;
+               case 13: sprintf(p, " ¹ÔÆ°:%d+d16²ó", 16+boost/20); break;
 #else
-         case 13: sprintf(p, " %d+d16 acts", 16+boost/20); break;
+               case 13: sprintf(p, " %d+d16 acts", 16+boost/20); break;
 #endif
-         }
-       break;
-      case MIND_MIRROR_MASTER:
+               }
+               break;
+       }
+       case MIND_MIRROR_MASTER:
        {
-         switch (power)
-           {
-           case 0:  break;
-           case 1:  break;
-           case 2:  sprintf(p, " %s%dd4", s_dam,  3 + ((plev - 1) / 5) ); break;
-           case 3:  sprintf(p, " %s10", s_range); break;
-           case 4:  break;
-           case 5:  sprintf(p, " %s%d", s_range, plev *5); break;
-           case 6:  sprintf(p, " %s20+d20", s_dur);  break;
-           case 7:  break;
-           case 8:  sprintf(p, " %s%dd8", s_dam, 8+((plev -5)/4) ); break;
-           case 9:  break;
-           case 10: sprintf(p, " %s%dd8", s_dam, 11+(plev-5)/4 ); break;
-           case 11: break;
-           case 12: sprintf(p, " %s20+d20", s_dur);  break;
-           case 13: sprintf(p, " %s150+d%d", s_dam, plev*2 ); break;
-           case 14: break;
-           case 15: break;
-           case 16: sprintf(p, " %s%d", s_range, plev/2 +10); break;
-           case 17: break;
-           case 18: sprintf(p, " %s6+d6", s_dur);  break;
-           case 19: sprintf(p, " %s%d", s_dam, plev*11+5 ); break;
-           case 20: sprintf(p, " %s4+d4", s_dur);  break;
-           }
-         break;
+               switch (power)
+               {
+               case 0:  break;
+               case 1:  break;
+               case 2:  sprintf(p, " %s%dd4", s_dam,  3 + ((plev - 1) / 5) ); break;
+               case 3:  sprintf(p, " %s10", s_range); break;
+               case 4:  break;
+               case 5:  sprintf(p, " %s%d", s_range, plev *5); break;
+               case 6:  sprintf(p, " %s20+d20", s_dur);  break;
+               case 7:  break;
+               case 8:  sprintf(p, " %s%dd8", s_dam, 8+((plev -5)/4) ); break;
+               case 9:  break;
+               case 10: sprintf(p, " %s%dd8", s_dam, 11+(plev-5)/4 ); break;
+               case 11: break;
+               case 12: sprintf(p, " %s20+d20", s_dur);  break;
+               case 13: sprintf(p, " %s150+d%d", s_dam, plev*2 ); break;
+               case 14: break;
+               case 15: break;
+               case 16: sprintf(p, " %s%d", s_range, plev/2 +10); break;
+               case 17: break;
+               case 18: sprintf(p, " %s6+d6", s_dur);  break;
+               case 19: sprintf(p, " %s%d", s_dam, plev*11+5 ); break;
+               case 20: sprintf(p, " %s4+d4", s_dur);  break;
+               }
+               break;
        }
-      case MIND_NINJUTSU:
+       case MIND_NINJUTSU:
        {
-         switch (power)
-           {
-           case 0:  break;
-           case 1:  break;
-           case 2:  sprintf(p, " %s10", s_range); break;
-           case 3:  break;
-           case 4:  sprintf(p, " %s%d", s_range , plev *5); break;
-           case 5:  sprintf(p, " %s30", s_range); break;
-           case 6:  break;
-           case 7:  break;
-           case 8:  sprintf(p, " %s20+d20", s_dur);  break;
-           case 9:  sprintf(p, " %s%d", s_dam, (50+plev)/2 ); break;
-           case 10: break;
-           case 11: break;
-           case 12: break;
-           case 13: break;
-           case 14: break;
-           case 15: break;
-           case 16: sprintf(p, " %s%d+d%d", s_dur, plev/2, plev/2);  break;
-           case 17: sprintf(p, " %s%d*3", s_dam, (75+plev*2/3)/2 ); break;
-           case 18: sprintf(p, " %s%dd10", s_dam, 6+plev/8 ); break;
-           case 19: sprintf(p, " %s6+d6", s_dur);  break;
-           }
-         break;
+               switch (power)
+               {
+               case 0:  break;
+               case 1:  break;
+               case 2:  sprintf(p, " %s10", s_range); break;
+               case 3:  break;
+               case 4:  sprintf(p, " %s%d", s_range , plev *5); break;
+               case 5:  sprintf(p, " %s30", s_range); break;
+               case 6:  break;
+               case 7:  break;
+               case 8:  sprintf(p, " %s20+d20", s_dur);  break;
+               case 9:  sprintf(p, " %s%d", s_dam, (50+plev)/2 ); break;
+               case 10: break;
+               case 11: break;
+               case 12: break;
+               case 13: break;
+               case 14: break;
+               case 15: break;
+               case 16: sprintf(p, " %s%d+d%d", s_dur, plev/2, plev/2);  break;
+               case 17: sprintf(p, " %s%d*3", s_dam, (75+plev*2/3)/2 ); break;
+               case 18: sprintf(p, " %s%dd10", s_dam, 6+plev/8 ); break;
+               case 19: sprintf(p, " %s6+d6", s_dur);  break;
+               }
+               break;
+       }
        }
-      }
-    }
 }
 
   /*
@@ -889,11 +889,11 @@ if (!b) msg_print("
                break;
        case 2:
                /* Minor displace */
-               teleport_player(10, FALSE);
+               teleport_player(10, 0L);
                break;
        case 3:
                /* Major displace */
-               teleport_player(plev * 5, FALSE);
+               teleport_player(plev * 5, 0L);
                break;
        case 4:
                /* Domination */
@@ -1290,7 +1290,7 @@ msg_format("There are too many mirrors to control!");
          break;
        /* warped mirror */
        case 3:
-         teleport_player(10, FALSE);
+         teleport_player(10, 0L);
          break;
        /* mirror of light */
        case 4:
@@ -1298,7 +1298,7 @@ msg_format("There are too many mirrors to control!");
          break;
        /* mirror of wandering */
        case 5:
-         teleport_player(plev * 5, FALSE);
+         teleport_player(plev * 5, 0L);
          break;
        /* robe of dust */
        case 6:
@@ -1349,7 +1349,7 @@ msg_format("There are too many mirrors to control!");
        /* illusion light */
        case 14:
          tmp = is_mirror_grid(&cave[py][px]) ? 4 : 3;
-         slow_monsters();
+         slow_monsters(plev);
          stun_monsters(plev*tmp);
          confuse_monsters(plev*tmp);
          turn_monsters(plev*tmp);
@@ -1482,25 +1482,8 @@ static bool cast_berserk_spell(int spell)
                earthquake(py, px, 8+randint0(5));
                break;
        case 4:
-       {
-               cave_type       *c_ptr;
-               monster_type    *m_ptr;
-
-               for (dir = 0; dir < 8; dir++)
-               {
-                       y = py + ddy_ddd[dir];
-                       x = px + ddx_ddd[dir];
-                       c_ptr = &cave[y][x];
-
-                       /* Get the monster */
-                       m_ptr = &m_list[c_ptr->m_idx];
-
-                       /* Hack -- attack monsters */
-                       if (c_ptr->m_idx && (m_ptr->ml || cave_have_flag_bold(y, x, FF_PROJECT)))
-                               py_attack(y, x, 0);
-               }
+               massacre(py, px);
                break;
-       }
        default:
 #ifdef JP
 msg_print("¤Ê¤Ë¡©");
@@ -1549,7 +1532,7 @@ static bool cast_ninja_spell(int spell)
                break;
        case 2:
        {
-               teleport_player(10, FALSE);
+               teleport_player(10, 0L);
                break;
        }
        case 3:
@@ -1569,7 +1552,7 @@ static bool cast_ninja_spell(int spell)
        }
        case 4:
        {
-               teleport_player(p_ptr->lev * 5, FALSE);
+               teleport_player(p_ptr->lev * 5, 0L);
                break;
        }
        case 5:
@@ -1588,7 +1571,7 @@ msg_print("
 #endif
                        else
                        {
-                               teleport_player(30, FALSE);
+                               teleport_player(30, 0L);
                        }
                }
                else
@@ -1616,7 +1599,7 @@ msg_print("
                break;
        case 9:
                fire_ball(GF_FIRE, 0, 50+plev, plev/10+2);
-               teleport_player(30, FALSE);
+               teleport_player(30, 0L);
                set_oppose_fire(plev, FALSE);
                break;
        case 10:
@@ -1719,7 +1702,7 @@ msg_print("
                if (m_ptr->ml)
                {
                        /* Auto-Recall if possible and visible */
-                       monster_race_track(m_ptr->ap_r_idx);
+                       if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx);
 
                        /* Track a new monster */
                        health_track(m_idx);
@@ -1753,7 +1736,7 @@ msg_print("
                fire_ball(GF_POIS, 0, 75+plev*2/3, plev/5+2);
                fire_ball(GF_OLD_DRAIN, 0, 75+plev*2/3, plev/5+2);
                fire_ball(GF_CONFUSION, 0, 75+plev*2/3, plev/5+2);
-               teleport_player(30, FALSE);
+               teleport_player(30, 0L);
                break;
        case 18:
        {
@@ -2012,7 +1995,7 @@ msg_format("%s
                                        msg_print("Your mind unleashes its power in an uncontrollable storm!");
 #endif
 
-                                       project(1, 2 + plev / 10, py, px, plev * 2,
+                                       project(PROJECT_WHO_UNCTRL_POWER, 2 + plev / 10, py, px, plev * 2,
                                                GF_MANA, PROJECT_JUMP | PROJECT_KILL | PROJECT_GRID | PROJECT_ITEM, -1);
                                        p_ptr->csp = MAX(0, p_ptr->csp - plev * MAX(1, plev / 10));
                                }
@@ -2029,7 +2012,7 @@ msg_print("
 #else
                                        msg_print("Weird visions seem to dance before your eyes...");
 #endif
-                                       teleport_player(10, TRUE);
+                                       teleport_player(10, TELEPORT_PASSIVE);
                                }
                                else if (b < 96)
                                {
@@ -2050,7 +2033,7 @@ msg_format("%s
                                        msg_print("Your mind unleashes its power in an uncontrollable storm!");
 #endif
 
-                                       project(1, 2 + plev / 10, py, px, plev * 2,
+                                       project(PROJECT_WHO_UNCTRL_POWER, 2 + plev / 10, py, px, plev * 2,
                                                GF_MANA, PROJECT_JUMP | PROJECT_KILL | PROJECT_GRID | PROJECT_ITEM, -1);
                                        p_ptr->csp = MAX(0, p_ptr->csp - plev * MAX(1, plev / 10));
                                }