OSDN Git Service

讚・ヤ・テ・ネ、ホシツチ」FEAT_INVIS、ックォチー、ホウォフ逾ネ・鬣テ・ラ、ネ、キ、ニホョヘム。」
[hengbandforosx/hengbandosx.git] / src / mind.c
index 4b48357..be4ed09 100644 (file)
@@ -322,9 +322,9 @@ void mindcraft_info(char *p, int use_mind, int power)
        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, " ¹ÔÆ°:%d²ó", (p_ptr->csp + p_ptr->energy - 50)/100); break;
+       case 13: sprintf(p, " ¹ÔÆ°:%d²ó", (p_ptr->csp + 100-p_ptr->energy_need - 50)/100); break;
 #else
-       case 13: sprintf(p, " %d acts.", (p_ptr->csp + p_ptr->energy - 50)/100); break;
+       case 13: sprintf(p, " %d acts.", (p_ptr->csp + 100-p_ptr->energy_need - 50)/100); break;
 #endif
        }
       break;
@@ -693,9 +693,7 @@ put_str(format("Lv   %s   Fail Info", ((use_mind == MIND_BERSERKER) || (use_mind
                                                        chance += 5 * (mana_cost - p_ptr->csp);
                                                }
 
-                                               if (p_ptr->pseikaku == SEIKAKU_NAMAKE) chance += 10;
-                                               if (p_ptr->pseikaku == SEIKAKU_KIREMONO) chance -= 3;
-                                               if ((p_ptr->pseikaku == SEIKAKU_GAMAN) || (p_ptr->pseikaku == SEIKAKU_CHIKARA)) chance++;
+                                               chance += p_ptr->to_m_chance;
 
                                                /* Extract the minimum failure rate */
                                                minfail = adj_mag_fail[p_ptr->stat_ind[mp_ptr->spell_stat]];
@@ -933,7 +931,7 @@ if (!b) msg_print("
                if (plev < 25)
                        return psychometry();
                else
-                       return ident_spell(FALSE);
+                       return ident_spell(FALSE, FALSE);
                break;
        case 8:
                /* Mindwave */
@@ -983,7 +981,7 @@ msg_print("
 
                /* This is always a radius-0 ball now */
                if (fire_ball(GF_PSI_DRAIN, dir, b, 0))
-                       p_ptr->energy -= randint1(150);
+                       p_ptr->energy_need += randint1(150);
                break;
        case 12:
                /* psycho-spear */
@@ -1010,7 +1008,8 @@ msg_print("
 #endif
                msg_print(NULL);
 
-               p_ptr->energy += (p_ptr->csp + 950);
+               /* Hack */
+               p_ptr->energy_need -= 1000 + (100 + p_ptr->csp - 50)*TURNS_PER_TICK/10;
 
                /* Redraw map */
                p_ptr->redraw |= (PR_MAP);
@@ -1078,6 +1077,7 @@ static bool cast_force_spell(int spell)
                msg_print("You improved the Force.");
 #endif
                p_ptr->magic_num1[0] += (70 + plev);
+               p_ptr->update |= (PU_BONUS);
                if (randint1(p_ptr->magic_num1[0]) > (plev * 4 + 120))
                {
 #ifdef JP
@@ -1211,7 +1211,7 @@ msg_format("%s
                bool success = FALSE;
 
                for (i = 0; i < 1 + boost/100; i++)
-                       if (summon_specific(-1, py, px, plev, SUMMON_PHANTOM, FALSE, TRUE, TRUE, FALSE, FALSE))
+                       if (summon_specific(-1, py, px, plev, SUMMON_PHANTOM, PM_FORCE_PET))
                                success = TRUE;
                if (success)
                {
@@ -1251,6 +1251,7 @@ msg_print("
 
        }
        p_ptr->magic_num1[0] = 0;
+       p_ptr->update |= (PU_BONUS);
 
        return TRUE;
 }
@@ -1263,7 +1264,7 @@ static int number_of_mirrors( void )
   int val=0;
   for( x=0 ; x < cur_wid ; x++ ){
     for( y=0 ; y < cur_hgt ; y++ ){
-      if( cave[y][x].feat == FEAT_MIRROR )val++;
+      if( (cave[y][x].info & CAVE_IN_MIRROR) )val++;
     }
   }
   return val;
@@ -1281,7 +1282,7 @@ static bool cast_mirror_spell(int spell)
        {
        /* mirror of seeing */
        case 0:
-         tmp = cave[py][px].feat == FEAT_MIRROR ? 4 : 0;
+         tmp = (cave[py][px].info & CAVE_IN_MIRROR) ? 4 : 0;
          if( plev + tmp > 4)detect_monsters_normal(DETECT_RAD_DEFAULT);
          if( plev + tmp > 18 )detect_monsters_invis(DETECT_RAD_DEFAULT);
          if( plev + tmp > 28 )set_tim_esp(plev,FALSE);
@@ -1309,7 +1310,7 @@ msg_format("There are too many mirrors to control!");
          break;
        case 2:
          if (!get_aim_dir(&dir)) return FALSE;
-         if ( plev > 9 && cave[py][px].feat == FEAT_MIRROR ){
+         if ( plev > 9 && (cave[py][px].info & CAVE_IN_MIRROR) ){
            fire_beam(GF_LITE, dir,damroll(3+((plev-1)/5),4));
          }
          else {
@@ -1347,7 +1348,7 @@ msg_format("There are too many mirrors to control!");
        case 9:
          for(x=0;x<cur_wid;x++){
            for(y=0;y<cur_hgt;y++){
-             if(cave[y][x].feat == FEAT_MIRROR){
+             if(cave[y][x].info & CAVE_IN_MIRROR){
                project(0,2,y,x,plev,GF_OLD_SLEEP,(PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP|PROJECT_NO_REF|PROJECT_NO_HANGEKI),-1);
              }
            }
@@ -1376,7 +1377,7 @@ msg_format("There are too many mirrors to control!");
          break;
        /* illusion light */
        case 14:
-         tmp = cave[py][px].feat == FEAT_MIRROR ? 4 : 3;
+         tmp = (cave[py][px].feat & CAVE_IN_MIRROR) ? 4 : 3;
          slow_monsters();
          stun_monsters(plev*tmp);
          confuse_monsters(plev*tmp);
@@ -1386,7 +1387,7 @@ msg_format("There are too many mirrors to control!");
          break;
        /* mirror shift */
        case 15:
-         if(  cave[py][px].feat != FEAT_MIRROR ){
+         if( !(cave[py][px].info & CAVE_IN_MIRROR) ){
 #ifdef JP
                msg_print("¶À¤Î¹ñ¤Î¾ì½ê¤¬¤ï¤«¤é¤Ê¤¤¡ª");
 #else
@@ -1674,7 +1675,7 @@ msg_print("
                break;
        }
        case 7:
-               return ident_spell(FALSE);
+               return ident_spell(FALSE, FALSE);
                break;
        case 8:
                set_tim_ffall(randint1(20) + 20, FALSE);
@@ -1969,9 +1970,7 @@ if (!get_check("
                /* Reduce failure rate by "effective" level adjustment */
                chance -= 3 * (plev - spell.min_lev);
 
-               if (p_ptr->pseikaku == SEIKAKU_NAMAKE) chance += 10;
-               if (p_ptr->pseikaku == SEIKAKU_KIREMONO) chance -= 3;
-               if ((p_ptr->pseikaku == SEIKAKU_GAMAN) || (p_ptr->pseikaku == SEIKAKU_CHIKARA)) chance++;
+               chance += p_ptr->to_m_chance;
 
                /* Reduce failure rate by INT/WIS adjustment */
                chance -= 3 * (adj_mag_stat[p_ptr->stat_ind[mp_ptr->spell_stat]] - 1);
@@ -2143,7 +2142,7 @@ msg_format("%s
                        break;
                case MIND_MIRROR_MASTER:
                        /* Cast the spell */
-                       if( cave[py][px].feat == FEAT_MIRROR )on_mirror = TRUE;
+                       if( (cave[py][px].info & CAVE_IN_MIRROR) )on_mirror = TRUE;
                        cast = cast_mirror_spell(n);
                        break;
                case MIND_NINJUTSU: