From 711a1d98b8bdafb81f33744d6e4e7a71619371b6 Mon Sep 17 00:00:00 2001 From: Hourier Date: Sun, 26 Apr 2020 17:48:49 +0900 Subject: [PATCH] [Refactor] #39964 Separated is_leave_special_item() from is_opt_confirm_destroy() in autopick-destroyer.c --- src/autopick/autopick-destroyer.c | 80 +++++++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 32 deletions(-) diff --git a/src/autopick/autopick-destroyer.c b/src/autopick/autopick-destroyer.c index 07e91fa2f..2a3cdf0d3 100644 --- a/src/autopick/autopick-destroyer.c +++ b/src/autopick/autopick-destroyer.c @@ -1,3 +1,8 @@ +/*! + * @brief Ž©“®”j‰ó‚ÌŽÀs + * @date 2020/04/25 + * @author Hourier + */ #include "angband.h" #include "autopick/autopick-util.h" #include "autopick-methods-table.h" @@ -8,6 +13,48 @@ #include "object-flavor.h" #include "player-move.h" + +/*! + * @brief ƒNƒ‰ƒXˆË‘¶‚̃AƒCƒeƒ€”j‰ó‚𒲂ׂé + * @param player_ptr ƒvƒŒ[ƒ„[‚Ö‚ÌŽQÆƒ|ƒCƒ“ƒ^ + * @param o_ptr ƒAƒCƒeƒ€‚Ö‚ÌŽQÆƒ|ƒCƒ“ƒ^ + * @return “Á•Ê‚ȃNƒ‰ƒXA‚©‚‚»‚̃Nƒ‰ƒX“Á—L‚̃AƒCƒeƒ€‚Å‚ ‚ê‚ÎFALSEA‚»‚êˆÈŠO‚ÍTRUE + */ +static bool is_leave_special_item(player_type *player_ptr, object_type *o_ptr) +{ + if (!leave_special) return TRUE; + + if (player_ptr->prace == RACE_DEMON) + { + if (o_ptr->tval == TV_CORPSE && + o_ptr->sval == SV_CORPSE && + my_strchr("pht", r_info[o_ptr->pval].d_char)) + return FALSE; + } + else if (player_ptr->pclass == CLASS_ARCHER) + { + if (o_ptr->tval == TV_SKELETON || + (o_ptr->tval == TV_CORPSE && o_ptr->sval == SV_SKELETON)) + return FALSE; + } + else if (player_ptr->pclass == CLASS_NINJA) + { + if (o_ptr->tval == TV_LITE && + o_ptr->name2 == EGO_LITE_DARKNESS && object_is_known(o_ptr)) + return FALSE; + } + else if (player_ptr->pclass == CLASS_BEASTMASTER || + player_ptr->pclass == CLASS_CAVALRY) + { + if (o_ptr->tval == TV_WAND && + o_ptr->sval == SV_WAND_HEAL_MONSTER && object_is_aware(o_ptr)) + return FALSE; + } + + return TRUE; +} + + /* * Automatically destroy items in this grid. */ @@ -25,9 +72,7 @@ static bool is_opt_confirm_destroy(player_type *player_ptr, object_type *o_ptr) if ((o_ptr->tval == TV_CHEST) && o_ptr->pval) return FALSE; if (leave_wanted) - { if (object_is_bounty(o_ptr)) return FALSE; - } if (leave_corpse) if (o_ptr->tval == TV_CORPSE) return FALSE; @@ -35,36 +80,7 @@ static bool is_opt_confirm_destroy(player_type *player_ptr, object_type *o_ptr) if (leave_junk) if ((o_ptr->tval == TV_SKELETON) || (o_ptr->tval == TV_BOTTLE) || (o_ptr->tval == TV_JUNK) || (o_ptr->tval == TV_STATUE)) return FALSE; - if (leave_special) - { - if (player_ptr->prace == RACE_DEMON) - { - if (o_ptr->tval == TV_CORPSE && - o_ptr->sval == SV_CORPSE && - my_strchr("pht", r_info[o_ptr->pval].d_char)) - return FALSE; - } - - if (player_ptr->pclass == CLASS_ARCHER) - { - if (o_ptr->tval == TV_SKELETON || - (o_ptr->tval == TV_CORPSE && o_ptr->sval == SV_SKELETON)) - return FALSE; - } - else if (player_ptr->pclass == CLASS_NINJA) - { - if (o_ptr->tval == TV_LITE && - o_ptr->name2 == EGO_LITE_DARKNESS && object_is_known(o_ptr)) - return FALSE; - } - else if (player_ptr->pclass == CLASS_BEASTMASTER || - player_ptr->pclass == CLASS_CAVALRY) - { - if (o_ptr->tval == TV_WAND && - o_ptr->sval == SV_WAND_HEAL_MONSTER && object_is_aware(o_ptr)) - return FALSE; - } - } + if (!is_leave_special_item(player_ptr, o_ptr)) return FALSE; if (o_ptr->tval == TV_GOLD) return FALSE; -- 2.11.0