OSDN Git Service

[Refactor] #40561 Separated switch_misc_bias() from random_misc()
authorHourier <hourier@users.sourceforge.jp>
Wed, 15 Jul 2020 00:13:45 +0000 (09:13 +0900)
committerHourier <hourier@users.sourceforge.jp>
Wed, 15 Jul 2020 00:13:45 +0000 (09:13 +0900)
src/artifact/random-art-misc.c

index 026cef4..ab0a807 100644 (file)
@@ -78,65 +78,52 @@ static bool invest_misc_chaos(object_type *o_ptr)
 }
 
 /*!
- * @brief ランダムアーティファクト生成中、対象のオブジェクトにその他特性を付加する。/ Add one misc flag on generation of randam artifact.
- * @details 優先的に付加される耐性がランダムアーティファクトバイアスに依存して存在する。
- * 原則的候補は各種能力維持、永久光源+1、麻痺知らず、経験値維持、浮遊、透明視、急回復、遅消化、
- * 乱テレポート、反魔法、反テレポート、警告、テレパシー、各種ESP、一部装備に殺戮修正。
- * @attention オブジェクトのtval、svalに依存したハードコーディング処理がある。
- * @param o_ptr 対象のオブジェクト構造体ポインタ
- * @return なし
+ * @brief アーティファクトのバイアス値に基づいて特性を付与する
+ * @param o_ptr 対象のオブジェクト構造体への参照ポインタ
+ * @return 処理続行ならFALSE、打ち切るならTRUE
  */
-void random_misc(player_type *player_ptr, object_type *o_ptr)
+static bool switch_misc_bias(object_type *o_ptr)
 {
     switch (o_ptr->artifact_bias) {
     case BIAS_RANGER:
-        if (invest_misc_ranger(o_ptr))
-            return;
-
-        break;
+        return invest_misc_ranger(o_ptr);
     case BIAS_STR:
-        if (invest_misc_strength(o_ptr))
-            return;
-
-        break;
+        return invest_misc_strength(o_ptr);
     case BIAS_INT:
-        if (invest_misc_intelligence(o_ptr))
-            return;
-
-        break;
+        return invest_misc_intelligence(o_ptr);
     case BIAS_WIS:
-        if (invest_misc_wisdom(o_ptr))
-            return;
-
-        break;
+        return invest_misc_wisdom(o_ptr);
     case BIAS_DEX:
-        if (invest_misc_dexterity(o_ptr))
-            return;
-
-        break;
+        return invest_misc_dexterity(o_ptr);
     case BIAS_CON:
-        if (invest_misc_constitution(o_ptr))
-            return;
-
-        break;
+        return invest_misc_constitution(o_ptr);
     case BIAS_CHR:
-        if (invest_misc_charisma(o_ptr))
-            return;
-
-        break;
+        return invest_misc_charisma(o_ptr);
     case BIAS_CHAOS:
-        if (invest_misc_chaos(o_ptr))
-            return;
-
-        break;
+        return invest_misc_chaos(o_ptr);
     case BIAS_FIRE:
         if (!(have_flag(o_ptr->art_flags, TR_LITE_1)))
             add_flag(o_ptr->art_flags, TR_LITE_1);
 
-        break;
+        return FALSE;
     default:
-        break;
+        return FALSE;
     }
+}
+
+/*!
+ * @brief ランダムアーティファクト生成中、対象のオブジェクトにその他特性を付加する。/ Add one misc flag on generation of randam artifact.
+ * @details 優先的に付加される耐性がランダムアーティファクトバイアスに依存して存在する。
+ * 原則的候補は各種能力維持、永久光源+1、麻痺知らず、経験値維持、浮遊、透明視、急回復、遅消化、
+ * 乱テレポート、反魔法、反テレポート、警告、テレパシー、各種ESP、一部装備に殺戮修正。
+ * @attention オブジェクトのtval、svalに依存したハードコーディング処理がある。
+ * @param o_ptr 対象のオブジェクト構造体ポインタ
+ * @return なし
+ */
+void random_misc(player_type *player_ptr, object_type *o_ptr)
+{
+    if (switch_misc_bias(o_ptr))
+        return;
 
     switch (randint1(33)) {
     case 1: