From: Hourier Date: Thu, 30 Jul 2020 10:32:17 +0000 (+0900) Subject: [Refactor] #40573 Separated judge_mind_chance() from do_cmd_mind() X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d46a9a6dc7095658cc3ce8ae4772fd1262725b4d;p=hengband%2Fhengband.git [Refactor] #40573 Separated judge_mind_chance() from do_cmd_mind() --- diff --git a/src/cmd-action/cmd-mind.c b/src/cmd-action/cmd-mind.c index 12073a196..4147ce2cb 100644 --- a/src/cmd-action/cmd-mind.c +++ b/src/cmd-action/cmd-mind.c @@ -292,6 +292,22 @@ static void mind_turn_passing(player_type *caster_ptr, cm_type *cm_ptr) take_turn(caster_ptr, 50); } +static bool judge_mind_chance(player_type *caster_ptr, cm_type *cm_ptr) +{ + if (randint0(100) >= cm_ptr->chance) { + sound(SOUND_ZAP); + return switch_mind_class(caster_ptr, cm_ptr) && cm_ptr->cast; + } + + if (flush_failure) + flush(); + + msg_format(_("%sの集中に失敗した!", "You failed to concentrate hard enough for %s!"), cm_ptr->mind_explanation); + sound(SOUND_FAIL); + check_mind_class(caster_ptr, cm_ptr); + return TRUE; +} + /*! * @brief 特殊技能コマンドのメインルーチン / * @return なし @@ -315,18 +331,8 @@ void do_cmd_mind(player_type *caster_ptr) if (cm_ptr->chance > 95) cm_ptr->chance = 95; - if (randint0(100) < cm_ptr->chance) { - if (flush_failure) - flush(); - - msg_format(_("%sの集中に失敗した!", "You failed to concentrate hard enough for %s!"), cm_ptr->mind_explanation); - sound(SOUND_FAIL); - check_mind_class(caster_ptr, cm_ptr); - } else { - sound(SOUND_ZAP); - if (!switch_mind_class(caster_ptr, cm_ptr) || !cm_ptr->cast) - return; - } + if (!judge_mind_chance(caster_ptr, cm_ptr)) + return; mind_turn_passing(caster_ptr, cm_ptr); if ((cm_ptr->use_mind == MIND_BERSERKER) || (cm_ptr->use_mind == MIND_NINJUTSU)) {