OSDN Git Service

[Refactor] #2844 k_ptr をbii_ptr に改名し、flavor-describer.cpp からベースアイテム情報の直接書き換えコードをなくし...
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 10 Dec 2022 13:35:25 +0000 (22:35 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sun, 11 Dec 2022 02:42:30 +0000 (11:42 +0900)
src/flavor/flavor-describer.cpp
src/flavor/flavor-util.cpp
src/flavor/flavor-util.h
src/info-reader/baseitem-reader.cpp
src/info-reader/parse-error-types.h

index 337a16e..695f324 100644 (file)
@@ -64,7 +64,7 @@ static void check_object_known_aware(flavor_type *flavor_ptr)
         flavor_ptr->aware = false;
         flavor_ptr->flavor = true;
         flavor_ptr->known = false;
-        flavor_ptr->flavor_k_ptr = flavor_ptr->k_ptr;
+        flavor_ptr->flavor_bii_ptr = flavor_ptr->bii_ptr;
     }
 }
 
@@ -374,10 +374,6 @@ static std::string describe_charges_rod(const ItemEntity &item)
     }
 
     const auto timeout_per_one = baseitems_info[item.bi_id].pval;
-    if (timeout_per_one <= 0) {
-        return "";
-    }
-
     auto num_of_charging = (item.timeout + (timeout_per_one - 1)) / timeout_per_one;
     if (num_of_charging > item.number) {
         num_of_charging = item.number;
index a19641d..5cc25b8 100644 (file)
@@ -27,8 +27,8 @@ flavor_type *initialize_flavor_type(flavor_type *flavor_ptr, char *buf, ItemEnti
     flavor_ptr->b2 = ']';
     flavor_ptr->c1 = '{';
     flavor_ptr->c2 = '}';
-    flavor_ptr->k_ptr = &baseitems_info[o_ptr->bi_id];
-    flavor_ptr->flavor_k_ptr = &baseitems_info[flavor_ptr->k_ptr->flavor];
+    flavor_ptr->bii_ptr = &baseitems_info[o_ptr->bi_id];
+    flavor_ptr->flavor_bii_ptr = &baseitems_info[flavor_ptr->bii_ptr->flavor];
     return flavor_ptr;
 }
 
index 23cf363..f81a1a7 100644 (file)
@@ -27,8 +27,8 @@ struct flavor_type {
     char fake_insc_buf[30];
     TrFlags tr_flags;
     ItemEntity *bow_ptr;
-    BaseitemInfo *k_ptr;
-    BaseitemInfo *flavor_k_ptr;
+    BaseitemInfo *bii_ptr;
+    BaseitemInfo *flavor_bii_ptr;
     int avgdam;
 };
 
index e099fb2..bea32dc 100644 (file)
@@ -11,6 +11,7 @@
 #include "info-reader/parse-error-types.h"
 #include "main/angband-headers.h"
 #include "object-enchant/tr-types.h"
+#include "object/tval-types.h"
 #include "system/baseitem-info.h"
 #include "term/gameterm.h"
 #include "util/bit-flags-calculator.h"
@@ -130,6 +131,9 @@ errr parse_baseitems_info(std::string_view buf, angband_header *head)
         const auto sval = std::stoi(tokens[2], nullptr, base);
         bii_ptr->bi_key = { tval, sval };
         info_set_value(bii_ptr->pval, tokens[3]);
+        if ((tval == ItemKindType::ROD) && (bii_ptr->pval <= 0)) {
+            return PAESE_ERROR_INVALID_PVAL;
+        }
     } else if (tokens[0] == "W") {
         // W:level:weight:cost
         if (tokens.size() < 4) {
index 0a52515..3900479 100644 (file)
@@ -12,5 +12,6 @@ enum parse_error_type : int {
     PARSE_ERROR_OUT_OF_BOUNDS = 8,
     PARSE_ERROR_TOO_FEW_ARGUMENTS = 9,
     PARSE_ERROR_UNDEFINED_TERRAIN_TAG = 10,
-    PARSE_ERROR_MAX = 11,
+    PAESE_ERROR_INVALID_PVAL = 11,
+    PARSE_ERROR_MAX,
 };