From: Hourier Date: Sun, 23 Feb 2020 14:11:35 +0000 (+0900) Subject: [Refactor] #39962 display_player_various() からstrengthen_basedam() を分離 / Separated... X-Git-Tag: vmacos3.0.0-alpha52~1557^2~4 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=24eb80bc7bf94bc236601119ca6f7cb3201c7768;p=hengbandforosx%2Fhengbandosx.git [Refactor] #39962 display_player_various() からstrengthen_basedam() を分離 / Separated strengthen_basedam() from display_player_various() --- diff --git a/src/view/status-first-page.c b/src/view/status-first-page.c index 6e2403257..05cbff3ed 100644 --- a/src/view/status-first-page.c +++ b/src/view/status-first-page.c @@ -102,6 +102,39 @@ static bool calc_weapon_one_hand(object_type *o_ptr, int hand, int *damage, int /*! + * @brief ƒ”ƒH[ƒpƒ‹•Ší“™‚É‚æ‚éƒ_ƒ[ƒW‹­‰» + * @param creature_ptr ƒvƒŒ[ƒ„[‚Ö‚ÌŽQÆƒ|ƒCƒ“ƒ^ + * @param o_ptr ‘•”õ’†‚Ì•Ší‚Ö‚ÌŽQÆƒ|ƒCƒ“ƒ^ + * @param basedam ‘fŽè‚É‚¨‚¯‚é’¼ÚUŒ‚‚̃_ƒ[ƒW + * @param flgs ƒIƒuƒWƒFƒNƒgƒtƒ‰ƒOŒQ + * @return ‹­‰»Œã‚Ì‘fŽèƒ_ƒ[ƒW + */ +static int strengthen_basedam(player_type *creature_ptr, object_type *o_ptr, int basedam, BIT_FLAGS *flgs) +{ + if (OBJECT_IS_FULL_KNOWN(o_ptr) && ((o_ptr->name1 == ART_VORPAL_BLADE) || (o_ptr->name1 == ART_CHAINSWORD))) + { + /* vorpal blade */ + basedam *= 5; + basedam /= 3; + } + else if (have_flag(flgs, TR_VORPAL)) + { + /* vorpal flag only */ + basedam *= 11; + basedam /= 9; + } + + // ——Í + bool is_force = creature_ptr->pclass != CLASS_SAMURAI; + is_force &= have_flag(flgs, TR_FORCE_WEAPON); + is_force &= creature_ptr->csp > (o_ptr->dd * o_ptr->ds / 5); + if (is_force) basedam = basedam * 7 / 2; + + return basedam; +} + + +/*! * @brief ‹Z”\ƒ‰ƒ“ƒN‚Ì•\Ž¦Šî€‚ð’è‚ß‚é * Returns a "rating" of x depending on y * @param x ‹Z”\’l @@ -327,22 +360,7 @@ void display_player_various(player_type *creature_ptr, void(*display_player_one_ object_flags_known(o_ptr, flgs); basedam = calc_expect_crit(creature_ptr, o_ptr->weight, to_h[i], basedam, creature_ptr->dis_to_h[i], poison_needle); - if (OBJECT_IS_FULL_KNOWN(o_ptr) && ((o_ptr->name1 == ART_VORPAL_BLADE) || (o_ptr->name1 == ART_CHAINSWORD))) - { - /* vorpal blade */ - basedam *= 5; - basedam /= 3; - } - else if (have_flag(flgs, TR_VORPAL)) - { - /* vorpal flag only */ - basedam *= 11; - basedam /= 9; - } - - if ((creature_ptr->pclass != CLASS_SAMURAI) && have_flag(flgs, TR_FORCE_WEAPON) && (creature_ptr->csp > (o_ptr->dd * o_ptr->ds / 5))) - basedam = basedam * 7 / 2; - + basedam = strengthen_basedam(creature_ptr, o_ptr, basedam, flgs); damage[i] += basedam; if ((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_POISON_NEEDLE)) damage[i] = 1; if (damage[i] < 0) damage[i] = 0;