From 4b23f0d06c09028e5b1872e31a85ac19d13d1088 Mon Sep 17 00:00:00 2001 From: Deskull Date: Thu, 4 Oct 2018 01:00:37 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#37353=E3=80=80dungeon=EF=BD=9Eobje?= =?utf8?q?ct2=E9=96=93=E6=95=B4=E7=90=86=E3=80=82=20/=20Refactor=20between?= =?utf8?q?=20dungeon=20and=20object2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/dungeon.c | 75 ----------------------------------------------------------- src/externs.h | 5 ++-- src/object2.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- src/spells2.c | 1 - 4 files changed, 75 insertions(+), 80 deletions(-) diff --git a/src/dungeon.c b/src/dungeon.c index 28a77d289..f92be36a5 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -26,81 +26,6 @@ static bool load = TRUE; /*!<ロード処理中の分岐フラグ*/ static int wild_regen = 20; /*!<広域マップ移動時の自然回復処理カウンタ(広域マップ1マス毎に20回処理を基本とする)*/ /*! - * @brief 重度擬似鑑定の判断処理 / Return a "feeling" (or NULL) about an item. Method 1 (Heavy). - * @param o_ptr 擬似鑑定を行うオブジェクトの参照ポインタ。 - * @return 擬似鑑定結果のIDを返す。 - */ -byte value_check_aux1(object_type *o_ptr) -{ - /* Artifacts */ - if (object_is_artifact(o_ptr)) - { - /* Cursed/Broken */ - if (object_is_cursed(o_ptr) || object_is_broken(o_ptr)) return FEEL_TERRIBLE; - - /* Normal */ - return FEEL_SPECIAL; - } - - /* Ego-Items */ - if (object_is_ego(o_ptr)) - { - /* Cursed/Broken */ - if (object_is_cursed(o_ptr) || object_is_broken(o_ptr)) return FEEL_WORTHLESS; - - /* Normal */ - return FEEL_EXCELLENT; - } - - /* Cursed items */ - if (object_is_cursed(o_ptr)) return FEEL_CURSED; - - /* Broken items */ - if (object_is_broken(o_ptr)) return FEEL_BROKEN; - - if ((o_ptr->tval == TV_RING) || (o_ptr->tval == TV_AMULET)) return FEEL_AVERAGE; - - /* Good "armor" bonus */ - if (o_ptr->to_a > 0) return FEEL_GOOD; - - /* Good "weapon" bonus */ - if (o_ptr->to_h + o_ptr->to_d > 0) return FEEL_GOOD; - - /* Default to "average" */ - return FEEL_AVERAGE; -} - -/*! - * @brief 軽度擬似鑑定の判断処理 / Return a "feeling" (or NULL) about an item. Method 2 (Light). - * @param o_ptr 擬似鑑定を行うオブジェクトの参照ポインタ。 - * @return 擬似鑑定結果のIDを返す。 - */ -byte value_check_aux2(object_type *o_ptr) -{ - /* Cursed items (all of them) */ - if (object_is_cursed(o_ptr)) return FEEL_CURSED; - - /* Broken items (all of them) */ - if (object_is_broken(o_ptr)) return FEEL_BROKEN; - - /* Artifacts -- except cursed/broken ones */ - if (object_is_artifact(o_ptr)) return FEEL_UNCURSED; - - /* Ego-Items -- except cursed/broken ones */ - if (object_is_ego(o_ptr)) return FEEL_UNCURSED; - - /* Good armor bonus */ - if (o_ptr->to_a > 0) return FEEL_UNCURSED; - - /* Good weapon bonuses */ - if (o_ptr->to_h + o_ptr->to_d > 0) return FEEL_UNCURSED; - - /* No feeling */ - return FEEL_NONE; -} - - -/*! * @brief 擬似鑑定を実際に行い判定を反映する * @param slot 擬似鑑定を行うプレイヤーの所持リストID * @param heavy 重度の擬似鑑定を行うならばTRUE diff --git a/src/externs.h b/src/externs.h index a408f6245..724d62e5e 100644 --- a/src/externs.h +++ b/src/externs.h @@ -792,9 +792,6 @@ extern void determine_today_mon(bool conv_old); extern void play_game(bool new_game); extern s32b turn_real(s32b hoge); extern void prevent_turn_overflow(void); -extern byte value_check_aux1(object_type *o_ptr); -extern byte value_check_aux2(object_type *o_ptr); - /* files.c */ @@ -991,6 +988,8 @@ extern s16b get_obj_num(int level); extern void object_known(object_type *o_ptr); extern void object_aware(object_type *o_ptr); extern void object_tried(object_type *o_ptr); +extern byte value_check_aux1(object_type *o_ptr); +extern byte value_check_aux2(object_type *o_ptr); extern s32b object_value(object_type *o_ptr); extern s32b object_value_real(object_type *o_ptr); extern bool can_player_destroy_object(object_type *o_ptr); diff --git a/src/object2.c b/src/object2.c index b485248f7..8853939d1 100644 --- a/src/object2.c +++ b/src/object2.c @@ -842,7 +842,6 @@ void object_aware(object_type *o_ptr) } } - /*! * @brief オブジェクトを試行済にする / * Something has been "sampled" @@ -855,6 +854,79 @@ void object_tried(object_type *o_ptr) k_info[o_ptr->k_idx].tried = TRUE; } +/*! +* @brief 重度擬似鑑定の判断処理 / Return a "feeling" (or NULL) about an item. Method 1 (Heavy). +* @param o_ptr 擬似鑑定を行うオブジェクトの参照ポインタ。 +* @return 擬似鑑定結果のIDを返す。 +*/ +byte value_check_aux1(object_type *o_ptr) +{ + /* Artifacts */ + if (object_is_artifact(o_ptr)) + { + /* Cursed/Broken */ + if (object_is_cursed(o_ptr) || object_is_broken(o_ptr)) return FEEL_TERRIBLE; + + /* Normal */ + return FEEL_SPECIAL; + } + + /* Ego-Items */ + if (object_is_ego(o_ptr)) + { + /* Cursed/Broken */ + if (object_is_cursed(o_ptr) || object_is_broken(o_ptr)) return FEEL_WORTHLESS; + + /* Normal */ + return FEEL_EXCELLENT; + } + + /* Cursed items */ + if (object_is_cursed(o_ptr)) return FEEL_CURSED; + + /* Broken items */ + if (object_is_broken(o_ptr)) return FEEL_BROKEN; + + if ((o_ptr->tval == TV_RING) || (o_ptr->tval == TV_AMULET)) return FEEL_AVERAGE; + + /* Good "armor" bonus */ + if (o_ptr->to_a > 0) return FEEL_GOOD; + + /* Good "weapon" bonus */ + if (o_ptr->to_h + o_ptr->to_d > 0) return FEEL_GOOD; + + /* Default to "average" */ + return FEEL_AVERAGE; +} + +/*! +* @brief 軽度擬似鑑定の判断処理 / Return a "feeling" (or NULL) about an item. Method 2 (Light). +* @param o_ptr 擬似鑑定を行うオブジェクトの参照ポインタ。 +* @return 擬似鑑定結果のIDを返す。 +*/ +byte value_check_aux2(object_type *o_ptr) +{ + /* Cursed items (all of them) */ + if (object_is_cursed(o_ptr)) return FEEL_CURSED; + + /* Broken items (all of them) */ + if (object_is_broken(o_ptr)) return FEEL_BROKEN; + + /* Artifacts -- except cursed/broken ones */ + if (object_is_artifact(o_ptr)) return FEEL_UNCURSED; + + /* Ego-Items -- except cursed/broken ones */ + if (object_is_ego(o_ptr)) return FEEL_UNCURSED; + + /* Good armor bonus */ + if (o_ptr->to_a > 0) return FEEL_UNCURSED; + + /* Good weapon bonuses */ + if (o_ptr->to_h + o_ptr->to_d > 0) return FEEL_UNCURSED; + + /* No feeling */ + return FEEL_NONE; +} /*! * @brief 未鑑定なベースアイテムの基本価格を返す / diff --git a/src/spells2.c b/src/spells2.c index 495c4ef43..a5a36b2b8 100644 --- a/src/spells2.c +++ b/src/spells2.c @@ -5207,7 +5207,6 @@ bool panic_hit(void) /*! * @brief 超能力者のサイコメトリー処理/ Forcibly pseudo-identify an object in the inventory (or on the floor) * @return なし -* @todo mind.cにこの関数を移動させるべき。 * @note * currently this function allows pseudo-id of any object, * including silly ones like potions & scrolls, which always -- 2.11.0