"Darken nearby area and inside of a room.",
"Detects visible monsters in your vicinity and more and more. Detects traps, doors and stairs at level 5, items at level 15. Lights and know the whole level at level 45.",
"Teleport short distance.",
- "Teleport as you recieve an attack. Might be able to teleport just before recieveing damages at higher level.",
+ "Teleport as you receive an attack. Might be able to teleport just before recieveing damages at higher level.",
"Teleport long distance.",
"Attack and teleport in a time.",
"Attempt to freeze a monster.",
* @param power モンスター魔法のID
* @return なし
*/
-void mindcraft_info(char *p, int use_mind, int power)
+void mindcraft_info(player_type *caster_ptr, char *p, int use_mind, int power)
{
- PLAYER_LEVEL plev = p_ptr->lev;
+ PLAYER_LEVEL plev = caster_ptr->lev;
strcpy(p, "");
#endif
case 11: sprintf(p, " %s%dd6", KWD_DAM, plev / 2); break;
case 12: sprintf(p, " %sd%d+%d", KWD_DAM, plev * 3, plev * 3); break;
- case 13: sprintf(p, _(" 行動:%ld回", " %ld acts."), (long int)(p_ptr->csp + 100-p_ptr->energy_need - 50)/100); break;
+ case 13: sprintf(p, _(" 行動:%ld回", " %ld acts."), (long int)(caster_ptr->csp + 100-caster_ptr->energy_need - 50)/100); break;
}
break;
case MIND_KI:
{
int boost = P_PTR_KI;
- if (heavy_armor(p_ptr)) boost /= 2;
+ if (heavy_armor(caster_ptr)) boost /= 2;
switch (power)
{
}
/* Get info */
- mindcraft_info(comment, use_mind, i);
+ mindcraft_info(caster_ptr, comment, use_mind, i);
if (use_menu)
{
if (plev < 30)
{
- b = detect_monsters_normal(DETECT_RAD_DEFAULT);
- if (plev > 14) b |= detect_monsters_invis(DETECT_RAD_DEFAULT);
+ b = detect_monsters_normal(caster_ptr, DETECT_RAD_DEFAULT);
+ if (plev > 14) b |= detect_monsters_invis(caster_ptr, DETECT_RAD_DEFAULT);
if (plev > 4) {
b |= detect_traps(caster_ptr, DETECT_RAD_DEFAULT, TRUE);
- b |= detect_doors(DETECT_RAD_DEFAULT);
+ b |= detect_doors(caster_ptr, DETECT_RAD_DEFAULT);
}
}
else
{
- b = detect_all(DETECT_RAD_DEFAULT);
+ b = detect_all(caster_ptr, DETECT_RAD_DEFAULT);
}
if ((plev > 24) && (plev < 40))
}
else
{
- charm_monsters(plev * 2);
+ charm_monsters(caster_ptr, plev * 2);
}
break;
case 5:
project(caster_ptr, 0, 2 + plev / 10, caster_ptr->y, caster_ptr->x,
(plev * 3), GF_PSI, PROJECT_KILL, -1);
else
- (void)mindblast_monsters(randint1(plev * ((plev - 5) / 10 + 1)));
+ (void)mindblast_monsters(caster_ptr, randint1(plev * ((plev - 5) / 10 + 1)));
break;
case 9:
/* Adrenaline */
fire_ball(caster_ptr, GF_MISSILE, dir, damroll(3 + ((plev - 1) / 5) + boost / 12, 4), 0);
break;
case 1:
- (void)lite_area(damroll(2, (plev / 2)), (plev / 10) + 1);
+ (void)lite_area(caster_ptr, damroll(2, (plev / 2)), (plev / 10) + 1);
break;
case 2:
set_tim_levitation(caster_ptr, randint1(30) + 30 + boost / 5, FALSE);
if (!target_set(TARGET_KILL)) return FALSE;
m_idx = caster_ptr->current_floor_ptr->grid_array[target_row][target_col].m_idx;
if (!m_idx) break;
- if (!player_has_los_bold(p_ptr, target_row, target_col)) break;
+ if (!player_has_los_bold(caster_ptr, target_row, target_col)) break;
if (!projectable(caster_ptr->current_floor_ptr, caster_ptr->y, caster_ptr->x, target_row, target_col)) break;
dispel_monster_status(m_idx);
break;
default:
msg_print(_("なに?", "Zap?"));
}
+
P_PTR_KI = 0;
caster_ptr->update |= (PU_BONUS);
*/
static int number_of_mirrors(floor_type *floor_ptr)
{
- POSITION x, y;
int val = 0;
- for (x = 0; x < floor_ptr->width; x++) {
- for (y = 0; y < floor_ptr->height; y++) {
+ for (POSITION x = 0; x < floor_ptr->width; x++) {
+ for (POSITION y = 0; y < floor_ptr->height; y++) {
if (is_mirror_grid(&floor_ptr->grid_array[y][x])) val++;
}
}
+
return val;
}
+
/*!
* @brief 鏡魔法の発動 /
* do_cmd_cast calls this function if the player's class is 'Mirror magic'.
/* mirror of seeing */
case 0:
tmp = is_mirror_grid(&caster_ptr->current_floor_ptr->grid_array[caster_ptr->y][caster_ptr->x]) ? 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 > 4)detect_monsters_normal(caster_ptr, DETECT_RAD_DEFAULT);
+ if (plev + tmp > 18)detect_monsters_invis(caster_ptr, DETECT_RAD_DEFAULT);
if (plev + tmp > 28)set_tim_esp(caster_ptr, (TIME_EFFECT)plev, FALSE);
if (plev + tmp > 38)map_area(caster_ptr, DETECT_RAD_MAP);
if (tmp == 0 && plev < 5) {
break;
/* mirror of light */
case 4:
- (void)lite_area(damroll(2, (plev / 2)), (plev / 10) + 1);
+ (void)lite_area(caster_ptr, damroll(2, (plev / 2)), (plev / 10) + 1);
break;
/* mirror of wandering */
case 5:
/* illusion light */
case 14:
tmp = is_mirror_grid(&caster_ptr->current_floor_ptr->grid_array[caster_ptr->y][caster_ptr->x]) ? 4 : 3;
- slow_monsters(plev);
- stun_monsters(plev*tmp);
- confuse_monsters(plev*tmp);
- turn_monsters(plev*tmp);
- stun_monsters(plev*tmp);
- stasis_monsters(plev*tmp);
+ slow_monsters(caster_ptr, plev);
+ stun_monsters(caster_ptr, plev*tmp);
+ confuse_monsters(caster_ptr, plev*tmp);
+ turn_monsters(caster_ptr, plev*tmp);
+ stun_monsters(caster_ptr, plev*tmp);
+ stasis_monsters(caster_ptr, plev*tmp);
break;
/* mirror shift */
case 15:
switch (spell)
{
case 0:
- detect_monsters_mind(DETECT_RAD_DEFAULT);
+ detect_monsters_mind(caster_ptr, DETECT_RAD_DEFAULT);
break;
case 1:
{
/*!
* @brief 忍術の発動 /
* do_cmd_cast calls this function if the player's class is 'ninja'.
+ * @param caster_ptr プレーヤーへの参照ポインタ
* @param spell 発動する特殊技能のID
* @return 処理を実行したらTRUE、キャンセルした場合FALSEを返す。
*/
switch (spell)
{
case 0:
- (void)unlite_area(0, 3);
+ (void)unlite_area(caster_ptr, 0, 3);
break;
case 1:
if (plev > 44)
{
wiz_lite(caster_ptr, TRUE);
}
- detect_monsters_normal(DETECT_RAD_DEFAULT);
+ detect_monsters_normal(caster_ptr, DETECT_RAD_DEFAULT);
if (plev > 4)
{
detect_traps(caster_ptr, DETECT_RAD_DEFAULT, TRUE);
- detect_doors(DETECT_RAD_DEFAULT);
- detect_stairs(DETECT_RAD_DEFAULT);
+ detect_doors(caster_ptr, DETECT_RAD_DEFAULT);
+ detect_stairs(caster_ptr, DETECT_RAD_DEFAULT);
}
if (plev > 14)
{
- detect_objects_normal(DETECT_RAD_DEFAULT);
+ detect_objects_normal(caster_ptr, DETECT_RAD_DEFAULT);
}
break;
case 2:
}
case 5:
{
- if(!panic_hit()) return FALSE;
+ if(!hit_and_away(caster_ptr)) return FALSE;
break;
}
case 6:
m_idx = caster_ptr->current_floor_ptr->grid_array[target_row][target_col].m_idx;
if (!m_idx) break;
if (m_idx == caster_ptr->riding) break;
- if (!player_has_los_bold(p_ptr, target_row, target_col)) break;
+ if (!player_has_los_bold(caster_ptr, target_row, target_col)) break;
if (!projectable(caster_ptr->current_floor_ptr, caster_ptr->y, caster_ptr->x, target_row, target_col)) break;
m_ptr = &caster_ptr->current_floor_ptr->m_list[m_idx];
monster_desc(m_name, m_ptr, 0);
POSITION nx = GRID_X(path_g[i]);
grid_type *g_ptr = &caster_ptr->current_floor_ptr->grid_array[ny][nx];
- if (in_bounds(caster_ptr->current_floor_ptr, ny, nx) && cave_empty_bold(p_ptr->current_floor_ptr, ny, nx) &&
+ if (in_bounds(caster_ptr->current_floor_ptr, ny, nx) && cave_empty_bold(caster_ptr->current_floor_ptr, ny, nx) &&
!(g_ptr->info & CAVE_OBJECT) &&
!pattern_tile(ny, nx))
{
while (attempts--)
{
- scatter(&y, &x, caster_ptr->y, caster_ptr->x, 4, 0);
+ scatter(caster_ptr->current_floor_ptr, &y, &x, caster_ptr->y, caster_ptr->x, 4, 0);
if (!player_bold(caster_ptr, y, x)) break;
}
* @brief 現在プレイヤーが使用可能な特殊技能の一覧表示 /
* @return なし
*/
-void do_cmd_mind_browse(void)
+void do_cmd_mind_browse(player_type *caster_ptr)
{
SPELL_IDX n = 0;
int j, line;
char temp[62*5];
int use_mind = 0;
- if (p_ptr->pclass == CLASS_MINDCRAFTER) use_mind = MIND_MINDCRAFTER;
- else if (p_ptr->pclass == CLASS_FORCETRAINER) use_mind = MIND_KI;
- else if (p_ptr->pclass == CLASS_BERSERKER) use_mind = MIND_BERSERKER;
- else if (p_ptr->pclass == CLASS_NINJA) use_mind = MIND_NINJUTSU;
- else if (p_ptr->pclass == CLASS_MIRROR_MASTER)
+ if (caster_ptr->pclass == CLASS_MINDCRAFTER) use_mind = MIND_MINDCRAFTER;
+ else if (caster_ptr->pclass == CLASS_FORCETRAINER) use_mind = MIND_KI;
+ else if (caster_ptr->pclass == CLASS_BERSERKER) use_mind = MIND_BERSERKER;
+ else if (caster_ptr->pclass == CLASS_NINJA) use_mind = MIND_NINJUTSU;
+ else if (caster_ptr->pclass == CLASS_MIRROR_MASTER)
use_mind = MIND_MIRROR_MASTER;
screen_save();
while(1)
{
- if (!get_mind_power(p_ptr, &n, TRUE))
+ if (!get_mind_power(caster_ptr, &n, TRUE))
{
screen_load();
return;