"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)
{
* when you run it. It's probably easy to fix but I haven't tried,\n
* sorry.\n
*/
-static bool_hack get_mind_power(SPELL_IDX *sn, bool only_browse)
+static bool_hack get_mind_power(player_type *caster_ptr, SPELL_IDX *sn, bool only_browse)
{
SPELL_IDX i;
int num = 0;
TERM_LEN y = 1;
TERM_LEN x = 10;
PERCENTAGE minfail = 0;
- PLAYER_LEVEL plev = p_ptr->lev;
+ PLAYER_LEVEL plev = caster_ptr->lev;
PERCENTAGE chance = 0;
int ask = TRUE;
char choice;
int use_mind;
int menu_line = (use_menu ? 1 : 0);
- switch (p_ptr->pclass)
+ switch (caster_ptr->pclass)
{
case CLASS_MINDCRAFTER:
{
put_str(format(_("Lv %s 失率 効果", "Lv %s Fail Info"),
((use_mind == MIND_BERSERKER) || (use_mind == MIND_NINJUTSU)) ? "HP" : "MP"), y, x + 35);
- has_weapon[0] = has_melee_weapon(p_ptr, INVEN_RARM);
- has_weapon[1] = has_melee_weapon(p_ptr, INVEN_LARM);
+ has_weapon[0] = has_melee_weapon(caster_ptr, INVEN_RARM);
+ has_weapon[1] = has_melee_weapon(caster_ptr, INVEN_LARM);
/* Dump the spells */
for (i = 0; i < MAX_MIND_POWERS; i++)
chance -= 3 * (plev - spell.min_lev);
/* Reduce failure rate by INT/WIS adjustment */
- chance -= 3 * (adj_mag_stat[p_ptr->stat_ind[mp_ptr->spell_stat]] - 1);
+ chance -= 3 * (adj_mag_stat[caster_ptr->stat_ind[mp_ptr->spell_stat]] - 1);
if (use_mind == MIND_KI)
{
- if (heavy_armor(p_ptr)) chance += 20;
- if (p_ptr->icky_wield[0]) chance += 20;
+ if (heavy_armor(caster_ptr)) chance += 20;
+ if (caster_ptr->icky_wield[0]) chance += 20;
else if (has_weapon[0]) chance += 10;
- if (p_ptr->icky_wield[1]) chance += 20;
+ if (caster_ptr->icky_wield[1]) chance += 20;
else if (has_weapon[1]) chance += 10;
if (i == 5)
{
}
/* Not enough mana to cast */
- if ((use_mind != MIND_BERSERKER) && (use_mind != MIND_NINJUTSU) && (mana_cost > p_ptr->csp))
+ if ((use_mind != MIND_BERSERKER) && (use_mind != MIND_NINJUTSU) && (mana_cost > caster_ptr->csp))
{
- chance += 5 * (mana_cost - p_ptr->csp);
+ chance += 5 * (mana_cost - caster_ptr->csp);
}
- chance += p_ptr->to_m_chance;
+ chance += caster_ptr->to_m_chance;
/* Extract the minimum failure rate */
- minfail = adj_mag_fail[p_ptr->stat_ind[mp_ptr->spell_stat]];
+ minfail = adj_mag_fail[caster_ptr->stat_ind[mp_ptr->spell_stat]];
/* Minimum failure rate */
if (chance < minfail) chance = minfail;
/* Stunning makes spells harder */
- if (p_ptr->stun > 50) chance += 25;
- else if (p_ptr->stun) chance += 15;
+ if (caster_ptr->stun > 50) chance += 25;
+ else if (caster_ptr->stun) chance += 15;
if (use_mind == MIND_KI)
{
- if (heavy_armor(p_ptr)) chance += 5;
- if (p_ptr->icky_wield[0]) chance += 5;
- if (p_ptr->icky_wield[1]) chance += 5;
+ if (heavy_armor(caster_ptr)) chance += 5;
+ if (caster_ptr->icky_wield[0]) chance += 5;
+ if (caster_ptr->icky_wield[1]) chance += 5;
}
/* Always a 5 percent chance of working */
if (chance > 95) chance = 95;
}
/* Get info */
- mindcraft_info(comment, use_mind, i);
+ mindcraft_info(caster_ptr, comment, use_mind, i);
if (use_menu)
{
}
if (redraw && !only_browse) screen_load();
- p_ptr->window |= (PW_SPELL);
+ caster_ptr->window |= (PW_SPELL);
handle_stuff();
/* Abort if needed */
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(DETECT_RAD_DEFAULT, TRUE);
- b |= detect_doors(DETECT_RAD_DEFAULT);
+ b |= detect_traps(caster_ptr, DETECT_RAD_DEFAULT, TRUE);
+ 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))
if (!get_aim_dir(&dir)) return FALSE;
if (randint1(100) < plev * 2)
- fire_beam(GF_PSI, dir, damroll(3 + ((plev - 1) / 4), (3 + plev / 15)));
+ fire_beam(caster_ptr, GF_PSI, dir, damroll(3 + ((plev - 1) / 4), (3 + plev / 15)));
else
fire_ball(caster_ptr, GF_PSI, dir, damroll(3 + ((plev - 1) / 4), (3 + plev / 15)), 0);
break;
}
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 */
* Only heal when Adrenalin Channeling is not active. We check
* that by checking if the player isn't fast and 'heroed' atm.
*/
- if (!IS_FAST(caster_ptr) || !IS_HERO())
+ if (!IS_FAST(caster_ptr) || !IS_HERO(caster_ptr))
{
hp_player(caster_ptr, plev);
}
/* psycho-spear */
if (!get_aim_dir(&dir)) return FALSE;
- fire_beam(GF_PSY_SPEAR, dir, randint1(plev*3)+plev*3);
+ fire_beam(caster_ptr, GF_PSY_SPEAR, dir, randint1(plev*3)+plev*3);
break;
case 13:
{
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);
project_length = plev / 8 + 3;
if (!get_aim_dir(&dir)) return FALSE;
- fire_beam(GF_MISSILE, dir, damroll(5 + ((plev - 1) / 5) + boost / 10, 5));
+ fire_beam(caster_ptr, GF_MISSILE, dir, damroll(5 + ((plev - 1) / 5) + boost / 10, 5));
break;
case 4:
set_resist_magic(caster_ptr, randint1(20) + 20 + 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;
case 12:
if (!get_aim_dir(&dir)) return FALSE;
- fire_beam(GF_MANA, dir, damroll(10 + (plev / 2) + boost * 3 / 10, 15));
+ fire_beam(caster_ptr, GF_MANA, dir, damroll(10 + (plev / 2) + boost * 3 / 10, 15));
break;
case 13:
set_lightspeed(caster_ptr, randint1(16) + 16 + boost / 20, FALSE);
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) {
case 2:
if (!get_aim_dir(&dir)) return FALSE;
if (plev > 9 && is_mirror_grid(&caster_ptr->current_floor_ptr->grid_array[caster_ptr->y][caster_ptr->x])) {
- fire_beam(GF_LITE, dir, damroll(3 + ((plev - 1) / 5), 4));
+ fire_beam(caster_ptr, GF_LITE, dir, damroll(3 + ((plev - 1) / 5), 4));
}
else {
fire_bolt(caster_ptr, GF_LITE, dir, damroll(3 + ((plev - 1) / 5), 4));
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:
/* banishing mirror */
case 7:
if (!get_aim_dir(&dir)) return FALSE;
- (void)fire_beam(GF_AWAY_ALL, dir, plev);
+ (void)fire_beam(caster_ptr, GF_AWAY_ALL, dir, plev);
break;
/* mirror clashing */
case 8:
/* seeker ray */
case 10:
if (!get_aim_dir(&dir)) return FALSE;
- fire_beam(GF_SEEKER, dir, damroll(11 + (plev - 5) / 4, 8));
+ fire_beam(caster_ptr, GF_SEEKER, dir, damroll(11 + (plev - 5) / 4, 8));
break;
/* seal of mirror */
case 11:
/* super ray */
case 13:
if (!get_aim_dir(&dir)) return FALSE;
- fire_beam(GF_SUPER_RAY, dir, 150 + randint1(2 * plev));
+ fire_beam(caster_ptr, GF_SUPER_RAY, dir, 150 + randint1(2 * plev));
break;
/* 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:
{
return FALSE;
}
- if (!get_direction(&dir, FALSE, FALSE)) return FALSE;
+ if (!get_direction(caster_ptr, &dir, FALSE, FALSE)) return FALSE;
if (dir == 5) return FALSE;
y = caster_ptr->y + ddy[dir];
py_attack(caster_ptr, y, x, 0);
- if (!player_can_enter(caster_ptr->current_floor_ptr->grid_array[y][x].feat, 0) || is_trap(caster_ptr->current_floor_ptr->grid_array[y][x].feat))
+ if (!player_can_enter(caster_ptr, caster_ptr->current_floor_ptr->grid_array[y][x].feat, 0) || is_trap(caster_ptr->current_floor_ptr->grid_array[y][x].feat))
break;
y += ddy[dir];
x += ddx[dir];
- if (player_can_enter(caster_ptr->current_floor_ptr->grid_array[y][x].feat, 0) && !is_trap(caster_ptr->current_floor_ptr->grid_array[y][x].feat) && !caster_ptr->current_floor_ptr->grid_array[y][x].m_idx)
+ if (player_can_enter(caster_ptr, caster_ptr->current_floor_ptr->grid_array[y][x].feat, 0) && !is_trap(caster_ptr->current_floor_ptr->grid_array[y][x].feat) && !caster_ptr->current_floor_ptr->grid_array[y][x].m_idx)
{
msg_print(NULL);
(void)move_player_effect(caster_ptr, y, x, MPE_FORGET_FLOW | MPE_HANDLE_STUFF | MPE_DONT_PICKUP);
}
case 2:
{
- if (!get_direction(&dir, FALSE, FALSE)) return FALSE;
+ if (!get_direction(caster_ptr, &dir, FALSE, FALSE)) return FALSE;
y = caster_ptr->y + ddy[dir];
x = caster_ptr->x + ddx[dir];
move_player(caster_ptr, dir, easy_disarm, TRUE);
/*!
* @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(DETECT_RAD_DEFAULT, TRUE);
- detect_doors(DETECT_RAD_DEFAULT);
- detect_stairs(DETECT_RAD_DEFAULT);
+ detect_traps(caster_ptr, DETECT_RAD_DEFAULT, TRUE);
+ 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);
msg_format(_("%sを引き戻した。", "You pull back %s."), m_name);
- path_n = project_path(path_g, MAX_RANGE, target_row, target_col, caster_ptr->y, caster_ptr->x, 0);
+ path_n = project_path(caster_ptr->current_floor_ptr, path_g, MAX_RANGE, target_row, target_col, caster_ptr->y, caster_ptr->x, 0);
ty = target_row, tx = target_col;
for (i = 1; i < path_n; i++)
{
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))
{
}
project_length = 0;
- (void)teleport_swap(dir);
+ (void)teleport_swap(caster_ptr, dir);
break;
case 15:
explosive_rune(caster_ptr->current_floor_ptr, caster_ptr->y, caster_ptr->x);
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(void)
+void do_cmd_mind(player_type *caster_ptr)
{
SPELL_IDX n = 0;
int b = 0;
PERCENTAGE chance;
PERCENTAGE minfail = 0;
- PLAYER_LEVEL plev = p_ptr->lev;
- int old_csp = p_ptr->csp;
+ PLAYER_LEVEL plev = caster_ptr->lev;
+ int old_csp = caster_ptr->csp;
mind_type spell;
bool cast;
int use_mind, mana_cost;
concptr p;
bool on_mirror = FALSE;
- if (cmd_limit_confused(p_ptr)) return;
- if (!get_mind_power(&n, FALSE)) return;
+ if (cmd_limit_confused(caster_ptr)) return;
+ if (!get_mind_power(caster_ptr, &n, FALSE)) return;
#ifdef JP
- switch(p_ptr->pclass)
+ switch(caster_ptr->pclass)
{
case CLASS_MINDCRAFTER: use_mind = MIND_MINDCRAFTER; p = "精神";break;
case CLASS_FORCETRAINER: use_mind = MIND_KI; p = "気";break;
default: use_mind = 0 ;p = "超能力"; break;
}
#else
- switch(p_ptr->pclass)
+ switch(caster_ptr->pclass)
{
case CLASS_MINDCRAFTER: use_mind = MIND_MINDCRAFTER; break;
case CLASS_FORCETRAINER: use_mind = MIND_KI; break;
mana_cost = spell.mana_cost;
if (use_mind == MIND_KI)
{
- if (heavy_armor(p_ptr)) chance += 20;
- if (p_ptr->icky_wield[0]) chance += 20;
- else if (has_melee_weapon(p_ptr, INVEN_RARM)) chance += 10;
- if (p_ptr->icky_wield[1]) chance += 20;
- else if (has_melee_weapon(p_ptr, INVEN_LARM)) chance += 10;
+ if (heavy_armor(caster_ptr)) chance += 20;
+ if (caster_ptr->icky_wield[0]) chance += 20;
+ else if (has_melee_weapon(caster_ptr, INVEN_RARM)) chance += 10;
+ if (caster_ptr->icky_wield[1]) chance += 20;
+ else if (has_melee_weapon(caster_ptr, INVEN_LARM)) chance += 10;
if (n == 5)
{
int j;
/* Verify "dangerous" spells */
if ((use_mind == MIND_BERSERKER) || (use_mind == MIND_NINJUTSU))
{
- if (mana_cost > p_ptr->chp)
+ if (mana_cost > caster_ptr->chp)
{
msg_print(_("HPが足りません。", "You do not have enough hp to use this power."));
return;
}
}
- else if (mana_cost > p_ptr->csp)
+ else if (mana_cost > caster_ptr->csp)
{
/* Warning */
msg_print(_("MPが足りません。", "You do not have enough mana to use this power."));
/* Reduce failure rate by "effective" level adjustment */
chance -= 3 * (plev - spell.min_lev);
- chance += p_ptr->to_m_chance;
+ chance += caster_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);
+ chance -= 3 * (adj_mag_stat[caster_ptr->stat_ind[mp_ptr->spell_stat]] - 1);
/* Not enough mana to cast */
- if ((mana_cost > p_ptr->csp) && (use_mind != MIND_BERSERKER) && (use_mind != MIND_NINJUTSU))
+ if ((mana_cost > caster_ptr->csp) && (use_mind != MIND_BERSERKER) && (use_mind != MIND_NINJUTSU))
{
- chance += 5 * (mana_cost - p_ptr->csp);
+ chance += 5 * (mana_cost - caster_ptr->csp);
}
/* Extract the minimum failure rate */
- minfail = adj_mag_fail[p_ptr->stat_ind[mp_ptr->spell_stat]];
+ minfail = adj_mag_fail[caster_ptr->stat_ind[mp_ptr->spell_stat]];
/* Minimum failure rate */
if (chance < minfail) chance = minfail;
/* Stunning makes spells harder */
- if (p_ptr->stun > 50) chance += 25;
- else if (p_ptr->stun) chance += 15;
+ if (caster_ptr->stun > 50) chance += 25;
+ else if (caster_ptr->stun) chance += 15;
if (use_mind == MIND_KI)
{
- if (heavy_armor(p_ptr)) chance += 5;
- if (p_ptr->icky_wield[0]) chance += 5;
- if (p_ptr->icky_wield[1]) chance += 5;
+ if (heavy_armor(caster_ptr)) chance += 5;
+ if (caster_ptr->icky_wield[0]) chance += 5;
+ if (caster_ptr->icky_wield[1]) chance += 5;
}
}
if (b < 5)
{
msg_print(_("なんてこった!頭の中が真っ白になった!", "Oh, no! Your mind has gone blank!"));
- lose_all_info(p_ptr);
+ lose_all_info(caster_ptr);
}
else if (b < 15)
{
msg_print(_("奇妙な光景が目の前で踊っている...", "Weird visions seem to dance before your eyes..."));
- set_image(p_ptr, p_ptr->image + 5 + randint1(10));
+ set_image(caster_ptr, caster_ptr->image + 5 + randint1(10));
}
else if (b < 45)
{
msg_print(_("あなたの頭は混乱した!", "Your brain is addled!"));
- set_confused(p_ptr, p_ptr->confused + randint1(8));
+ set_confused(caster_ptr, caster_ptr->confused + randint1(8));
}
else if (b < 90)
{
- set_stun(p_ptr, p_ptr->stun + randint1(8));
+ set_stun(caster_ptr, caster_ptr->stun + randint1(8));
}
else
{
/* Mana storm */
msg_format(_("%sの力が制御できない氾流となって解放された!", "Your mind unleashes its power in an uncontrollable storm!"), p);
- project(p_ptr, PROJECT_WHO_UNCTRL_POWER, 2 + plev / 10, p_ptr->y, p_ptr->x, plev * 2,
+ project(caster_ptr, PROJECT_WHO_UNCTRL_POWER, 2 + plev / 10, caster_ptr->y, caster_ptr->x, 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));
+ caster_ptr->csp = MAX(0, caster_ptr->csp - plev * MAX(1, plev / 10));
}
}
if( use_mind == MIND_MIRROR_MASTER ){
else if (b < 81)
{
msg_print(_("鏡の世界の干渉を受けた!", "Weird visions seem to dance before your eyes..."));
- teleport_player(p_ptr, 10, TELEPORT_PASSIVE);
+ teleport_player(caster_ptr, 10, TELEPORT_PASSIVE);
}
else if (b < 96)
{
msg_print(_("まわりのものがキラキラ輝いている!", "Your brain is addled!"));
- set_image(p_ptr, p_ptr->image + 5 + randint1(10));
+ set_image(caster_ptr, caster_ptr->image + 5 + randint1(10));
}
else
{
/* Mana storm */
msg_format(_("%sの力が制御できない氾流となって解放された!", "Your mind unleashes its power in an uncontrollable storm!"), p);
- project(p_ptr, PROJECT_WHO_UNCTRL_POWER, 2 + plev / 10, p_ptr->y, p_ptr->x, plev * 2,
+ project(caster_ptr, PROJECT_WHO_UNCTRL_POWER, 2 + plev / 10, caster_ptr->y, caster_ptr->x, 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));
+ caster_ptr->csp = MAX(0, caster_ptr->csp - plev * MAX(1, plev / 10));
}
}
}
{
case MIND_MINDCRAFTER:
- cast = cast_mindcrafter_spell(p_ptr, n);
+ cast = cast_mindcrafter_spell(caster_ptr, n);
break;
case MIND_KI:
- cast = cast_force_spell(p_ptr, n);
+ cast = cast_force_spell(caster_ptr, n);
break;
case MIND_BERSERKER:
- cast = cast_berserk_spell(p_ptr, n);
+ cast = cast_berserk_spell(caster_ptr, n);
break;
case MIND_MIRROR_MASTER:
- if(is_mirror_grid(&p_ptr->current_floor_ptr->grid_array[p_ptr->y][p_ptr->x]) )on_mirror = TRUE;
- cast = cast_mirror_spell(p_ptr, n);
+ if(is_mirror_grid(&caster_ptr->current_floor_ptr->grid_array[caster_ptr->y][caster_ptr->x]) )on_mirror = TRUE;
+ cast = cast_mirror_spell(caster_ptr, n);
break;
case MIND_NINJUTSU:
- cast = cast_ninja_spell(p_ptr, n);
+ cast = cast_ninja_spell(caster_ptr, n);
break;
default:
msg_format(_("謎の能力:%d, %d", "Mystery power:%d, %d"),use_mind, n);
/* teleport from mirror costs small energy */
- if(on_mirror && p_ptr->pclass == CLASS_MIRROR_MASTER)
+ if(on_mirror && caster_ptr->pclass == CLASS_MIRROR_MASTER)
{
- if( n==3 || n==5 || n==7 || n==16 ) take_turn(p_ptr, 50);
+ if( n==3 || n==5 || n==7 || n==16 ) take_turn(caster_ptr, 50);
}
else
{
- take_turn(p_ptr, 100);
+ take_turn(caster_ptr, 100);
}
if ((use_mind == MIND_BERSERKER) || (use_mind == MIND_NINJUTSU))
{
- take_hit(p_ptr, DAMAGE_USELIFE, mana_cost, _("過度の集中", "concentrating too hard"), -1);
+ take_hit(caster_ptr, DAMAGE_USELIFE, mana_cost, _("過度の集中", "concentrating too hard"), -1);
/* Redraw hp */
- p_ptr->redraw |= (PR_HP);
+ caster_ptr->redraw |= (PR_HP);
}
/* Sufficient mana */
else if (mana_cost <= old_csp)
{
/* Use some mana */
- p_ptr->csp -= mana_cost;
+ caster_ptr->csp -= mana_cost;
/* Limit */
- if (p_ptr->csp < 0) p_ptr->csp = 0;
+ if (caster_ptr->csp < 0) caster_ptr->csp = 0;
if ((use_mind == MIND_MINDCRAFTER) && (n == 13))
{
/* No mana left */
- p_ptr->csp = 0;
- p_ptr->csp_frac = 0;
+ caster_ptr->csp = 0;
+ caster_ptr->csp_frac = 0;
}
}
int oops = mana_cost - old_csp;
/* No mana left */
- if ((p_ptr->csp - mana_cost) < 0) p_ptr->csp_frac = 0;
- p_ptr->csp = MAX(0, p_ptr->csp - mana_cost);
+ if ((caster_ptr->csp - mana_cost) < 0) caster_ptr->csp_frac = 0;
+ caster_ptr->csp = MAX(0, caster_ptr->csp - mana_cost);
msg_format(_("%sを集中しすぎて気を失ってしまった!", "You faint from the effort!"),p);
/* Hack -- Bypass free action */
- (void)set_paralyzed(p_ptr, p_ptr->paralyzed + randint1(5 * oops + 1));
+ (void)set_paralyzed(caster_ptr, caster_ptr->paralyzed + randint1(5 * oops + 1));
/* Damage WIS (possibly permanently) */
if (randint0(100) < 50)
msg_print(_("自分の精神を攻撃してしまった!", "You have damaged your mind!"));
/* Reduce constitution */
- (void)dec_stat(p_ptr, A_WIS, 15 + randint1(10), perm);
+ (void)dec_stat(caster_ptr, A_WIS, 15 + randint1(10), perm);
}
}
- p_ptr->redraw |= (PR_MANA);
- p_ptr->window |= (PW_PLAYER);
- p_ptr->window |= (PW_SPELL);
+ caster_ptr->redraw |= (PR_MANA);
+ caster_ptr->window |= (PW_PLAYER);
+ caster_ptr->window |= (PW_SPELL);
}
* @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(&n, TRUE))
+ if (!get_mind_power(caster_ptr, &n, TRUE))
{
screen_load();
return;