OSDN Git Service

[Refactor] #40514 calc_search() を calc_bonuses() から分離. / Separated calc_search()...
authordeskull <deskull@users.sourceforge.jp>
Mon, 29 Jun 2020 04:28:21 +0000 (13:28 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Mon, 29 Jun 2020 04:28:21 +0000 (13:28 +0900)
src/object/object-kind.c
src/player/player-effects.c
src/player/player-race.c
src/player/player-status.c

index 239424c..5efc534 100644 (file)
@@ -61,8 +61,6 @@ void calc_equipment_status(player_type* creature_ptr) {
         if (have_flag(flgs, TR_STEALTH))
             creature_ptr->skill_stl += o_ptr->pval;
         if (have_flag(flgs, TR_SEARCH))
-            creature_ptr->skill_srh += (o_ptr->pval * 5);
-        if (have_flag(flgs, TR_SEARCH))
             creature_ptr->skill_fos += (o_ptr->pval * 5);
         if (have_flag(flgs, TR_INFRA))
             creature_ptr->see_infra += o_ptr->pval;
index de6dd6b..e06b267 100644 (file)
@@ -3997,7 +3997,6 @@ void calc_timelimit_status(player_type *creature_ptr)
         creature_ptr->dis_to_d[1] += 3 + (creature_ptr->lev / 5);
         creature_ptr->to_a -= 10;
         creature_ptr->dis_to_a -= 10;
-        creature_ptr->skill_srh -= 15;
         creature_ptr->skill_fos -= 15;
         creature_ptr->skill_tht -= 20;
         creature_ptr->skill_dig += 30;
index d6a4fb6..03fabac 100644 (file)
@@ -129,7 +129,6 @@ void calc_race_status(player_type *creature_ptr)
 
     creature_ptr->see_infra += tmp_rp_ptr->infra;
     creature_ptr->skill_sav += tmp_rp_ptr->r_sav;
-    creature_ptr->skill_srh += tmp_rp_ptr->r_srh;
     creature_ptr->skill_fos += tmp_rp_ptr->r_fos;
     creature_ptr->skill_thn += tmp_rp_ptr->r_thn;
     creature_ptr->skill_thb += tmp_rp_ptr->r_thb;
index 1735b31..f310f53 100644 (file)
@@ -85,6 +85,7 @@ static void calc_stealth(player_type *creature_ptr);
 static void calc_disarming(player_type *creature_ptr);
 static void calc_device_ability(player_type *creature_ptr);
 static void calc_saving_throw(player_type *creature_ptr);
+static void calc_search(player_type *creature_ptr);
 
 
 
@@ -1221,7 +1222,6 @@ static void clear_creature_bonuses(player_type *creature_ptr)
         creature_ptr->stat_add[i] = 0;
 
        creature_ptr->see_infra = 0;
-    creature_ptr->skill_srh = 0;
     creature_ptr->skill_fos = 0;
     creature_ptr->skill_thn = 0;
     creature_ptr->skill_thb = 0;
@@ -1389,7 +1389,6 @@ void calc_bonuses(player_type *creature_ptr)
        clear_creature_bonuses(creature_ptr);
     calc_race_status(creature_ptr);
 
-       creature_ptr->skill_srh = cp_ptr->c_srh + ap_ptr->a_srh;
        creature_ptr->skill_fos = cp_ptr->c_fos + ap_ptr->a_fos;
        creature_ptr->skill_thn = cp_ptr->c_thn + ap_ptr->a_thn;
        creature_ptr->skill_thb = cp_ptr->c_thb + ap_ptr->a_thb;
@@ -1544,7 +1543,6 @@ void calc_bonuses(player_type *creature_ptr)
                if (creature_ptr->muta3 & MUT3_XTRA_EYES)
                {
                        creature_ptr->skill_fos += 15;
-                       creature_ptr->skill_srh += 15;
                }
 
                if (creature_ptr->muta3 & MUT3_INFRAVIS)
@@ -2463,7 +2461,6 @@ void calc_bonuses(player_type *creature_ptr)
                creature_ptr->ryoute = FALSE;
 
        creature_ptr->skill_dig += adj_str_dig[creature_ptr->stat_ind[A_STR]];
-       creature_ptr->skill_srh += (cp_ptr->x_srh * creature_ptr->lev / 10);
        creature_ptr->skill_fos += (cp_ptr->x_fos * creature_ptr->lev / 10);
        creature_ptr->skill_thn += ((cp_ptr->x_thn * creature_ptr->lev / 10) + (ap_ptr->a_thn * creature_ptr->lev / 50));
        creature_ptr->skill_thb += ((cp_ptr->x_thb * creature_ptr->lev / 10) + (ap_ptr->a_thb * creature_ptr->lev / 50));
@@ -2480,6 +2477,7 @@ void calc_bonuses(player_type *creature_ptr)
     calc_disarming(creature_ptr);
     calc_device_ability(creature_ptr);
     calc_saving_throw(creature_ptr);
+    calc_search(creature_ptr);
 
        if (current_world_ptr->character_xtra) return;
 
@@ -3523,8 +3521,10 @@ static void calc_device_ability(player_type *creature_ptr)
         tmp_rp_ptr = &mimic_info[creature_ptr->mimic_form];
     else
         tmp_rp_ptr = &race_info[creature_ptr->prace];
+    const player_class *c_ptr = &class_info[creature_ptr->pclass];
+    const player_personality *a_ptr = &personality_info[creature_ptr->pseikaku];
 
-       creature_ptr->skill_dev = tmp_rp_ptr->r_dev + cp_ptr->c_dev + ap_ptr->a_dev;
+       creature_ptr->skill_dev = tmp_rp_ptr->r_dev + c_ptr->c_dev + a_ptr->a_dev;
  
        for (int i = INVEN_RARM; i < INVEN_TOTAL; i++) {
                object_type *o_ptr;
@@ -3552,8 +3552,10 @@ static void calc_saving_throw(player_type *creature_ptr)
         tmp_rp_ptr = &mimic_info[creature_ptr->mimic_form];
     else
         tmp_rp_ptr = &race_info[creature_ptr->prace];
+    const player_class *c_ptr = &class_info[creature_ptr->pclass];
+    const player_personality *a_ptr = &personality_info[creature_ptr->pseikaku];
 
-    creature_ptr->skill_sav = tmp_rp_ptr->r_sav + cp_ptr->c_sav + ap_ptr->a_sav;
+    creature_ptr->skill_sav = tmp_rp_ptr->r_sav + c_ptr->c_sav + a_ptr->a_sav;
     if (creature_ptr->shero) creature_ptr->skill_sav -= 30;
        if (creature_ptr->muta3 & MUT3_MAGIC_RES) creature_ptr->skill_sav += (15 + (creature_ptr->lev / 5));
     creature_ptr->skill_sav += adj_wis_sav[creature_ptr->stat_ind[A_WIS]];
@@ -3569,6 +3571,41 @@ static void calc_saving_throw(player_type *creature_ptr)
                creature_ptr->skill_sav /= 2;
 }
 
+static void calc_search(player_type *creature_ptr)
+{
+    const player_race *tmp_rp_ptr;
+
+    if (creature_ptr->mimic_form)
+        tmp_rp_ptr = &mimic_info[creature_ptr->mimic_form];
+    else
+        tmp_rp_ptr = &race_info[creature_ptr->prace];
+    const player_class *c_ptr = &class_info[creature_ptr->pclass];
+    const player_personality *a_ptr = &personality_info[creature_ptr->pseikaku];
+
+    creature_ptr->skill_srh = tmp_rp_ptr->r_srh + c_ptr->c_srh + a_ptr->a_srh;
+
+       for (int i = INVEN_RARM; i < INVEN_TOTAL; i++) {
+        object_type *o_ptr;
+        BIT_FLAGS flgs[TR_FLAG_SIZE];
+        o_ptr = &creature_ptr->inventory_list[i];
+        if (!o_ptr->k_idx)
+            continue;
+        object_flags(o_ptr, flgs);
+        if (have_flag(flgs, TR_SEARCH))
+            creature_ptr->skill_srh += (o_ptr->pval * 5);
+    }
+
+       if (creature_ptr->muta3 & MUT3_XTRA_EYES) {
+        creature_ptr->skill_srh += 15;
+    }
+       creature_ptr->skill_srh += (cp_ptr->x_srh * creature_ptr->lev / 10);
+
+    if (creature_ptr->shero) {
+               creature_ptr->skill_srh -= 15;
+    }
+
+}
+
 /*!
  * @brief プレイヤーの所持重量制限を計算する /
  * Computes current weight limit.