#include "realm-hex.h"
/*!
- * @brief 魔法系コマンドを実行できるかの判定を返す
- * @return 魔法系コマンドを使用可能ならTRUE、不可能ならば理由をメッセージ表示してFALSEを返す。
- */
-static bool can_do_cmd_cast(void)
-{
- if (dun_level && (d_info[dungeon_type].flags1 & DF1_NO_MAGIC))
- {
- msg_print(_("ダンジョンが魔法を吸収した!", "The dungeon absorbs all attempted magic!"));
- msg_print(NULL);
- return FALSE;
- }
- else if (p_ptr->anti_magic)
- {
- msg_print(_("反魔法バリアが魔法を邪魔した!", "An anti-magic shell disrupts your magic!"));
- return FALSE;
- }
- else if (p_ptr->shero)
- {
- msg_format(_("狂戦士化していて頭が回らない!", "You cannot think directly!"));
- return FALSE;
- }
- else
- return TRUE;
-}
-
-/*!
* @brief 修行僧の構え設定処理
* @return 構えを変化させたらTRUE、構え不能かキャンセルしたらFALSEを返す。
*/
int i;
char buf[80];
- if (p_ptr->confused)
- {
- msg_print(_("混乱していて構えられない!", "Too confused."));
- return FALSE;
- }
+ if (cmd_limit_confused(p_ptr)) return FALSE;
screen_save();
prt(_(" a) 構えをとく", " a) No form"), 2, 20);
int i;
char buf[80];
- if (p_ptr->confused)
- {
- msg_print(_("混乱していて構えられない!", "Too confused."));
- return FALSE;
- }
+ if (cmd_limit_confused(p_ptr)) return FALSE;
if (p_ptr->stun)
{
PLAYER_LEVEL level; //!<体得レベル
int cost;
int stat;
- int fail;
+ PERCENTAGE fail;
int number;
};
static PERCENTAGE racial_chance(power_desc_type *pd_ptr)
{
PLAYER_LEVEL min_level = pd_ptr->level;
- int difficulty = pd_ptr->fail;
+ PERCENTAGE difficulty = pd_ptr->fail;
int i;
int val;
int sum = 0;
- int stat = p_ptr->stat_cur[pd_ptr->stat];
+ BASE_STATUS stat = p_ptr->stat_cur[pd_ptr->stat];
/* No chance for success */
if ((p_ptr->lev < min_level) || p_ptr->confused)
/* Calculate difficulty */
if (p_ptr->stun)
{
- difficulty += p_ptr->stun;
+ difficulty += (PERCENTAGE)p_ptr->stun;
}
else if (p_ptr->lev > min_level)
{
- int lev_adj = ((p_ptr->lev - min_level) / 3);
+ PERCENTAGE lev_adj = (PERCENTAGE)((p_ptr->lev - min_level) / 3);
if (lev_adj > 10) lev_adj = 10;
difficulty -= lev_adj;
}
msg_format(_("この能力を使用するにはレベル %d に達していなければなりません。",
"You need to attain level %d to use this power."), min_level);
- p_ptr->energy_use = 0;
- return 0;
+ free_turn(p_ptr);
+ return FALSE;
}
- /* Too confused */
- else if (p_ptr->confused)
+ if (cmd_limit_confused(p_ptr))
{
- msg_print(_("混乱していてその能力は使えない。", "You are too confused to use this power."));
- p_ptr->energy_use = 0;
- return 0;
+ free_turn(p_ptr);
+ return FALSE;
}
/* Risk death? */
{
if (!get_check(_("本当に今の衰弱した状態でこの能力を使いますか?", "Really use the power in your weakened state? ")))
{
- p_ptr->energy_use = 0;
- return 0;
+ free_turn(p_ptr);
+ return FALSE;
}
}
}
/* take time and pay the price */
- p_ptr->energy_use = 100;
+ take_turn(p_ptr, 100);;
/* Success? */
if (randint1(p_ptr->stat_cur[use_stat]) >= ((difficulty / 2) + randint1(difficulty / 2)))
if (command == -3) {
if (!import_magic_device()) return FALSE;
} else if (command == -4) {
- if (!can_do_cmd_cast()) return FALSE;
+ if (cmd_limit_cast(p_ptr)) return FALSE;
if (!do_cmd_magic_eater(FALSE, TRUE)) return FALSE;
}
break;
}
case CLASS_RED_MAGE:
{
- if (!can_do_cmd_cast()) return FALSE;
+ if (cmd_limit_cast(p_ptr)) return FALSE;
handle_stuff();
do_cmd_cast();
handle_stuff();
- if (!p_ptr->paralyzed && can_do_cmd_cast())
+ if (!p_ptr->paralyzed && !cmd_limit_cast(p_ptr))
do_cmd_cast();
break;
}
{
set_action(ACTION_LEARN);
}
- p_ptr->energy_use = 0;
+ free_turn(p_ptr);
break;
}
case CLASS_CAVALRY:
default:
msg_print(_("この種族は特殊な能力を持っていません。", "This race has no bonus power."));
- p_ptr->energy_use = 0;
+ free_turn(p_ptr);
}
}
return TRUE;
num = 0;
- if (p_ptr->confused)
+ if (cmd_limit_confused(p_ptr))
{
- msg_print(_("混乱していて特殊能力を使えません!", "You are too confused to use any powers!"));
- p_ptr->energy_use = 0;
+ free_turn(p_ptr);
return;
}
case '0':
{
screen_load();
- p_ptr->energy_use = 0;
+ free_turn(p_ptr);
return;
}
/* Abort if needed */
if (!flag)
{
- p_ptr->energy_use = 0;
+ free_turn(p_ptr);
return;
}
repeat_push(i);
p_ptr->window |= (PW_PLAYER | PW_SPELL);
}
}
- else p_ptr->energy_use = 0;
+ else free_turn(p_ptr);
/* Success */
return;