From 0b2fda75326756a7945c96991613695fab0e05ce Mon Sep 17 00:00:00 2001 From: Hourier Date: Sun, 7 Jun 2020 12:40:17 +0900 Subject: [PATCH] [Refactor] #40399 Separated object-flags.c/h from object1.c/h --- Hengband/Hengband/Hengband.vcxproj | 2 + Hengband/Hengband/Hengband.vcxproj.filters | 6 + src/Makefile.am | 1 + src/cmd-item/cmd-activate.c | 1 + src/cmd-item/cmd-smith.c | 2 +- src/cmd/cmd-basic.c | 1 + src/combat/shoot.c | 1 + src/combat/slaying.c | 4 +- src/effect/effect-item.c | 2 +- src/inventory/inventory-curse.c | 2 +- src/io/load.c | 2 +- src/knowledge/knowledge-inventory.c | 2 +- src/market/building-craft-fix.c | 2 +- src/market/building-craft-weapon.c | 1 + src/monster/monster-object.c | 2 +- src/object-enchant/artifact.c | 2 +- src/object/object-broken.c | 2 +- src/object/object-flags.c | 176 ++++++++++++++++++++++ src/object/object-flags.h | 6 + src/object/object-hook.c | 1 + src/object/object-value-calc.c | 2 +- src/object/object-value.c | 2 +- src/object/object1.c | 231 +---------------------------- src/object/object1.h | 2 - src/object/warning.c | 2 +- src/perception/identification.c | 1 + src/player-attack/player-attack.c | 2 +- src/player/player-damage.c | 2 +- src/player/player-status.c | 1 + src/player/race-resistances.c | 2 +- src/player/selfinfo.c | 2 +- src/realm/realm-hex.c | 2 +- src/specific-object/death-scythe.c | 2 +- src/spell-kind/spells-teleport.c | 2 +- src/spell/spells-object.c | 2 +- src/store/store-util.c | 2 +- src/view/display-characteristic.c | 2 +- src/view/display-player-stat-info.c | 2 +- src/view/status-first-page.c | 6 +- src/wizard/wizard-special-process.c | 2 +- src/wizard/wizard-spoiler.c | 1 + 41 files changed, 230 insertions(+), 260 deletions(-) create mode 100644 src/object/object-flags.c create mode 100644 src/object/object-flags.h diff --git a/Hengband/Hengband/Hengband.vcxproj b/Hengband/Hengband/Hengband.vcxproj index ea1ba7e83..9d427e01c 100644 --- a/Hengband/Hengband/Hengband.vcxproj +++ b/Hengband/Hengband/Hengband.vcxproj @@ -186,6 +186,7 @@ + @@ -526,6 +527,7 @@ + diff --git a/Hengband/Hengband/Hengband.vcxproj.filters b/Hengband/Hengband/Hengband.vcxproj.filters index c7ceb8ed6..ac121bc7f 100644 --- a/Hengband/Hengband/Hengband.vcxproj.filters +++ b/Hengband/Hengband/Hengband.vcxproj.filters @@ -1238,6 +1238,9 @@ core + + object + @@ -2665,6 +2668,9 @@ object-enchant + + object + diff --git a/src/Makefile.am b/src/Makefile.am index 6600632f9..554f871d5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -325,6 +325,7 @@ hengband_SOURCES = \ \ object/object1.c object/object1.h \ object/object-broken.c object/object-broken.h \ + object/object-flags.c object/object-flags.h \ object/object-flavor.c object/object-flavor.h \ object/object-generator.c object/object-generator.h \ object/object-hook.c object/object-hook.h \ diff --git a/src/cmd-item/cmd-activate.c b/src/cmd-item/cmd-activate.c index 84dce1a26..634dac70b 100644 --- a/src/cmd-item/cmd-activate.c +++ b/src/cmd-item/cmd-activate.c @@ -22,6 +22,7 @@ #include "object-enchant/artifact.h" #include "object-enchant/object-ego.h" #include "object/item-use-flags.h" +#include "object/object-flags.h" #include "object/object-hook.h" #include "object/object-kind.h" #include "object/object1.h" diff --git a/src/cmd-item/cmd-smith.c b/src/cmd-item/cmd-smith.c index 81b95a712..d8be3216d 100644 --- a/src/cmd-item/cmd-smith.c +++ b/src/cmd-item/cmd-smith.c @@ -13,10 +13,10 @@ #include "object-enchant/tr-types.h" #include "object-enchant/trc-types.h" #include "object/item-use-flags.h" +#include "object/object-flags.h" // todo 相互参照している. #include "object/object-flavor.h" #include "object/object-generator.h" #include "object/object-hook.h" -#include "object/object1.h" #include "perception/object-perception.h" #include "player/player-status.h" #include "term/term-color-types.h" diff --git a/src/cmd/cmd-basic.c b/src/cmd/cmd-basic.c index e39912bcf..a518d6765 100644 --- a/src/cmd/cmd-basic.c +++ b/src/cmd/cmd-basic.c @@ -42,6 +42,7 @@ #include "object-enchant/tr-types.h" #include "object/item-use-flags.h" #include "object/object-broken.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-generator.h" #include "object/object-hook.h" diff --git a/src/combat/shoot.c b/src/combat/shoot.c index f18a1ad3d..16e072d00 100644 --- a/src/combat/shoot.c +++ b/src/combat/shoot.c @@ -15,6 +15,7 @@ #include "object-enchant/artifact.h" #include "object-enchant/tr-types.h" #include "object/object-broken.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-generator.h" #include "object/object-hook.h" diff --git a/src/combat/slaying.c b/src/combat/slaying.c index 755213139..1f02d4bf2 100644 --- a/src/combat/slaying.c +++ b/src/combat/slaying.c @@ -2,9 +2,9 @@ #include "art-definition/art-sword-types.h" #include "mind/mind-samurai.h" #include "object-enchant/tr-types.h" -#include "object/object1.h" -#include "specific-object/torch.h" +#include "object/object-flags.h" #include "realm/realm-hex-numbers.h" +#include "specific-object/torch.h" #include "spell-realm/spells-hex.h" /*! diff --git a/src/effect/effect-item.c b/src/effect/effect-item.c index bd71011ec..20df70255 100644 --- a/src/effect/effect-item.c +++ b/src/effect/effect-item.c @@ -3,10 +3,10 @@ #include "floor/floor-object.h" #include "perception/object-perception.h" #include "object/object-broken.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-hook.h" #include "object/object-mark-types.h" -#include "object/object1.h" #include "sv-definition/sv-other-types.h" #include "sv-definition/sv-scroll-types.h" #include "object-enchant/tr-types.h" diff --git a/src/inventory/inventory-curse.c b/src/inventory/inventory-curse.c index d6fb6a425..aa5509004 100644 --- a/src/inventory/inventory-curse.c +++ b/src/inventory/inventory-curse.c @@ -6,8 +6,8 @@ #include "object-enchant/special-object-flags.h" #include "object-enchant/tr-types.h" #include "object-enchant/trc-types.h" +#include "object/object-flags.h" #include "object/object-flavor.h" -#include "object/object1.h" #include "perception/object-perception.h" #include "player/player-damage.h" #include "player/player-effects.h" diff --git a/src/io/load.c b/src/io/load.c index 1f8e1fa39..7ab409280 100644 --- a/src/io/load.c +++ b/src/io/load.c @@ -70,6 +70,7 @@ #include "object-enchant/tr-types.h" #include "object-enchant/trc-types.h" #include "object-enchant/trg-types.h" +#include "object/object-flags.h" #include "object/object-generator.h" #include "object/object-hook.h" #include "object/object-kind-hook.h" @@ -77,7 +78,6 @@ #include "object/object-mark-types.h" #include "object/object-stack.h" #include "object/object-value.h" -#include "object/object1.h" #include "pet/pet-util.h" #include "player/avatar.h" #include "player/patron.h" diff --git a/src/knowledge/knowledge-inventory.c b/src/knowledge/knowledge-inventory.c index 4700ad738..4d84d3b84 100644 --- a/src/knowledge/knowledge-inventory.c +++ b/src/knowledge/knowledge-inventory.c @@ -10,9 +10,9 @@ #include "io-dump/dump-util.h" #include "object-enchant/special-object-flags.h" #include "object-enchant/tr-types.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-hook.h" -#include "object/object1.h" #include "perception/object-perception.h" #include "store/store-util.h" #include "sv-definition/sv-amulet-types.h" diff --git a/src/market/building-craft-fix.c b/src/market/building-craft-fix.c index 0b6d08911..c078b6414 100644 --- a/src/market/building-craft-fix.c +++ b/src/market/building-craft-fix.c @@ -9,12 +9,12 @@ #include "object-enchant/special-object-flags.h" #include "object-enchant/tr-types.h" #include "object/item-use-flags.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-hook.h" #include "object/object-kind-hook.h" #include "object/object-kind.h" #include "object/object-value.h" -#include "object/object1.h" #include "player/player-effects.h" #include "spell-realm/spells-hex.h" #include "sv-definition/sv-other-types.h" diff --git a/src/market/building-craft-weapon.c b/src/market/building-craft-weapon.c index 5af232475..f42fc649d 100644 --- a/src/market/building-craft-weapon.c +++ b/src/market/building-craft-weapon.c @@ -7,6 +7,7 @@ #include "market/building-util.h" #include "object-enchant/tr-types.h" #include "object/item-use-flags.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-generator.h" #include "object/object-hook.h" diff --git a/src/monster/monster-object.c b/src/monster/monster-object.c index 3e24da40d..89b3961ff 100644 --- a/src/monster/monster-object.c +++ b/src/monster/monster-object.c @@ -7,10 +7,10 @@ #include "monster/monster-object.h" #include "floor/floor-object.h" #include "object-enchant/tr-types.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-hook.h" #include "object/object-mark-types.h" -#include "object/object1.h" /*! * @brief オブジェクトのフラグを更新する diff --git a/src/object-enchant/artifact.c b/src/object-enchant/artifact.c index c9a1082ac..173ea6f90 100644 --- a/src/object-enchant/artifact.c +++ b/src/object-enchant/artifact.c @@ -29,13 +29,13 @@ #include "object-enchant/object-ego.h" #include "object-enchant/random-art-bias-types.h" #include "object-enchant/trg-types.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-generator.h" #include "object/object-hook.h" #include "object/object-kind-hook.h" #include "object/object-kind.h" #include "object/object-value-calc.h" -#include "object/object1.h" // 相互参照している. #include "object-enchant/special-object-flags.h" #include "sv-definition/sv-armor-types.h" #include "sv-definition/sv-weapon-types.h" diff --git a/src/object/object-broken.c b/src/object/object-broken.c index 40237f585..d36a9bf3a 100644 --- a/src/object/object-broken.c +++ b/src/object/object-broken.c @@ -6,8 +6,8 @@ #include "object/object-broken.h" #include "combat/snipe.h" #include "effect/effect-characteristics.h" +#include "object/object-flags.h" #include "object/object-kind.h" -#include "object/object1.h" #include "sv-definition/sv-potion-types.h" #include "object-enchant/tr-types.h" #include "spell/process-effect.h" diff --git a/src/object/object-flags.c b/src/object/object-flags.c new file mode 100644 index 000000000..d21911184 --- /dev/null +++ b/src/object/object-flags.c @@ -0,0 +1,176 @@ +#include "object/object-flags.h" +#include "cmd-item/cmd-smith.h" +#include "object-enchant/artifact.h" +#include "object-enchant/object-ego.h" +#include "object/object-hook.h" +#include "object/object-kind.h" +#include "perception/object-perception.h" +#include "sv-definition/sv-lite-types.h" + +/*! + * @brief オブジェクトのフラグ類を配列に与える + * Obtain the "flags" for an item + * @param o_ptr フラグ取得元のオブジェクト構造体ポインタ + * @param flgs フラグ情報を受け取る配列 + * @return なし + */ +void object_flags(object_type *o_ptr, BIT_FLAGS flgs[TR_FLAG_SIZE]) +{ + object_kind *k_ptr = &k_info[o_ptr->k_idx]; + + /* Base object */ + for (int i = 0; i < TR_FLAG_SIZE; i++) { + flgs[i] = k_ptr->flags[i]; + } + + if (object_is_fixed_artifact(o_ptr)) { + artifact_type *a_ptr = &a_info[o_ptr->name1]; + for (int i = 0; i < TR_FLAG_SIZE; i++) { + flgs[i] = a_ptr->flags[i]; + } + } + + if (object_is_ego(o_ptr)) { + ego_item_type *e_ptr = &e_info[o_ptr->name2]; + for (int i = 0; i < TR_FLAG_SIZE; i++) { + flgs[i] |= e_ptr->flags[i]; + } + + if ((o_ptr->name2 == EGO_LITE_AURA_FIRE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN)) { + remove_flag(flgs, TR_SH_FIRE); + } else if ((o_ptr->name2 == EGO_LITE_INFRA) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN)) { + remove_flag(flgs, TR_INFRA); + } else if ((o_ptr->name2 == EGO_LITE_EYE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN)) { + remove_flag(flgs, TR_RES_BLIND); + remove_flag(flgs, TR_SEE_INVIS); + } + } + + /* Random artifact ! */ + for (int i = 0; i < TR_FLAG_SIZE; i++) { + flgs[i] |= o_ptr->art_flags[i]; + } + + if (object_is_smith(o_ptr)) { + int add = o_ptr->xtra3 - 1; + if (add < TR_FLAG_MAX) { + add_flag(flgs, add); + } else if (add == ESSENCE_TMP_RES_ACID) { + add_flag(flgs, TR_RES_ACID); + add_flag(flgs, TR_ACTIVATE); + } else if (add == ESSENCE_TMP_RES_ELEC) { + add_flag(flgs, TR_RES_ELEC); + add_flag(flgs, TR_ACTIVATE); + } else if (add == ESSENCE_TMP_RES_FIRE) { + add_flag(flgs, TR_RES_FIRE); + add_flag(flgs, TR_ACTIVATE); + } else if (add == ESSENCE_TMP_RES_COLD) { + add_flag(flgs, TR_RES_COLD); + add_flag(flgs, TR_ACTIVATE); + } else if (add == ESSENCE_SH_FIRE) { + add_flag(flgs, TR_RES_FIRE); + add_flag(flgs, TR_SH_FIRE); + } else if (add == ESSENCE_SH_ELEC) { + add_flag(flgs, TR_RES_ELEC); + add_flag(flgs, TR_SH_ELEC); + } else if (add == ESSENCE_SH_COLD) { + add_flag(flgs, TR_RES_COLD); + add_flag(flgs, TR_SH_COLD); + } else if (add == ESSENCE_RESISTANCE) { + add_flag(flgs, TR_RES_ACID); + add_flag(flgs, TR_RES_ELEC); + add_flag(flgs, TR_RES_FIRE); + add_flag(flgs, TR_RES_COLD); + } else if (add == TR_IMPACT) { + add_flag(flgs, TR_ACTIVATE); + } + } +} + +/*! + * @brief オブジェクトの明示されているフラグ類を取得する + * Obtain the "flags" for an item which are known to the player + * @param o_ptr フラグ取得元のオブジェクト構造体ポインタ + * @param flgs フラグ情報を受け取る配列 + * @return なし + */ +void object_flags_known(object_type *o_ptr, BIT_FLAGS flgs[TR_FLAG_SIZE]) +{ + bool spoil = FALSE; + object_kind *k_ptr = &k_info[o_ptr->k_idx]; + for (int i = 0; i < TR_FLAG_SIZE; i++) { + flgs[i] = 0; + } + + if (!object_is_aware(o_ptr)) + return; + + /* Base object */ + for (int i = 0; i < TR_FLAG_SIZE; i++) { + flgs[i] = k_ptr->flags[i]; + } + + if (!object_is_known(o_ptr)) + return; + + if (object_is_ego(o_ptr)) { + ego_item_type *e_ptr = &e_info[o_ptr->name2]; + for (int i = 0; i < TR_FLAG_SIZE; i++) { + flgs[i] |= e_ptr->flags[i]; + } + + if ((o_ptr->name2 == EGO_LITE_AURA_FIRE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN)) { + remove_flag(flgs, TR_SH_FIRE); + } else if ((o_ptr->name2 == EGO_LITE_INFRA) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN)) { + remove_flag(flgs, TR_INFRA); + } else if ((o_ptr->name2 == EGO_LITE_EYE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN)) { + remove_flag(flgs, TR_RES_BLIND); + remove_flag(flgs, TR_SEE_INVIS); + } + } + + if (spoil || object_is_fully_known(o_ptr)) { + if (object_is_fixed_artifact(o_ptr)) { + artifact_type *a_ptr = &a_info[o_ptr->name1]; + + for (int i = 0; i < TR_FLAG_SIZE; i++) { + flgs[i] = a_ptr->flags[i]; + } + } + + /* Random artifact ! */ + for (int i = 0; i < TR_FLAG_SIZE; i++) { + flgs[i] |= o_ptr->art_flags[i]; + } + } + + if (!object_is_smith(o_ptr)) + return; + + int add = o_ptr->xtra3 - 1; + if (add < TR_FLAG_MAX) { + add_flag(flgs, add); + } else if (add == ESSENCE_TMP_RES_ACID) { + add_flag(flgs, TR_RES_ACID); + } else if (add == ESSENCE_TMP_RES_ELEC) { + add_flag(flgs, TR_RES_ELEC); + } else if (add == ESSENCE_TMP_RES_FIRE) { + add_flag(flgs, TR_RES_FIRE); + } else if (add == ESSENCE_TMP_RES_COLD) { + add_flag(flgs, TR_RES_COLD); + } else if (add == ESSENCE_SH_FIRE) { + add_flag(flgs, TR_RES_FIRE); + add_flag(flgs, TR_SH_FIRE); + } else if (add == ESSENCE_SH_ELEC) { + add_flag(flgs, TR_RES_ELEC); + add_flag(flgs, TR_SH_ELEC); + } else if (add == ESSENCE_SH_COLD) { + add_flag(flgs, TR_RES_COLD); + add_flag(flgs, TR_SH_COLD); + } else if (add == ESSENCE_RESISTANCE) { + add_flag(flgs, TR_RES_ACID); + add_flag(flgs, TR_RES_ELEC); + add_flag(flgs, TR_RES_FIRE); + add_flag(flgs, TR_RES_COLD); + } +} diff --git a/src/object/object-flags.h b/src/object/object-flags.h new file mode 100644 index 000000000..1a9b13649 --- /dev/null +++ b/src/object/object-flags.h @@ -0,0 +1,6 @@ +#pragma once + +#include "system/angband.h" + +void object_flags(object_type *o_ptr, BIT_FLAGS flgs[TR_FLAG_SIZE]); +void object_flags_known(object_type *o_ptr, BIT_FLAGS flgs[TR_FLAG_SIZE]); diff --git a/src/object/object-hook.c b/src/object/object-hook.c index a05f6f7a1..8fd915500 100644 --- a/src/object/object-hook.c +++ b/src/object/object-hook.c @@ -15,6 +15,7 @@ #include "object-enchant/special-object-flags.h" #include "object-enchant/tr-types.h" #include "object-enchant/trg-types.h" +#include "object/object-flags.h" #include "object/object-kind.h" #include "object/object1.h" #include "perception/object-perception.h" diff --git a/src/object/object-value-calc.c b/src/object/object-value-calc.c index 620e2c8c3..445169250 100644 --- a/src/object/object-value-calc.c +++ b/src/object/object-value-calc.c @@ -3,9 +3,9 @@ #include "object-enchant/object-ego.h" #include "object-enchant/tr-types.h" #include "object-enchant/trc-types.h" +#include "object/object-flags.h" #include "object/object-hook.h" #include "object/object-kind.h" -#include "object/object1.h" /*! * @brief オブジェクトのフラグ類から価格を算出する / diff --git a/src/object/object-value.c b/src/object/object-value.c index 7e405751b..0c17ca89b 100644 --- a/src/object/object-value.c +++ b/src/object/object-value.c @@ -5,10 +5,10 @@ #include "object/object-broken.h" #include "object-enchant/object-curse.h" #include "object-enchant/object-ego.h" +#include "object/object-flags.h" #include "object/object-hook.h" #include "object/object-kind.h" #include "object/object-value-calc.h" -#include "object/object1.h" #include "object-enchant/special-object-flags.h" /*! diff --git a/src/object/object1.c b/src/object/object1.c index 81d877287..4de7b497a 100644 --- a/src/object/object1.c +++ b/src/object/object1.c @@ -20,10 +20,11 @@ #include "io/files-util.h" #include "io/read-pref-file.h" #include "monster/monster.h" -#include "object-enchant/artifact.h" // 相互参照している. +#include "object-enchant/artifact.h" #include "object-enchant/item-apply-magic.h" #include "perception/object-perception.h" #include "object-enchant/object-ego.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-hook.h" #include "object/object-kind.h" @@ -43,234 +44,6 @@ #include "view/display-main-window.h" /*! - * @brief オブジェクトのフラグ類を配列に与える - * Obtain the "flags" for an item - * @param o_ptr フラグ取得元のオブジェクト構造体ポインタ - * @param flgs フラグ情報を受け取る配列 - * @return なし - */ -void object_flags(object_type *o_ptr, BIT_FLAGS flgs[TR_FLAG_SIZE]) -{ - object_kind *k_ptr = &k_info[o_ptr->k_idx]; - - /* Base object */ - for (int i = 0; i < TR_FLAG_SIZE; i++) - { - flgs[i] = k_ptr->flags[i]; - } - - if (object_is_fixed_artifact(o_ptr)) - { - artifact_type *a_ptr = &a_info[o_ptr->name1]; - for (int i = 0; i < TR_FLAG_SIZE; i++) - { - flgs[i] = a_ptr->flags[i]; - } - } - - if (object_is_ego(o_ptr)) - { - ego_item_type *e_ptr = &e_info[o_ptr->name2]; - for (int i = 0; i < TR_FLAG_SIZE; i++) - { - flgs[i] |= e_ptr->flags[i]; - } - - if ((o_ptr->name2 == EGO_LITE_AURA_FIRE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN)) - { - remove_flag(flgs, TR_SH_FIRE); - } - else if ((o_ptr->name2 == EGO_LITE_INFRA) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN)) - { - remove_flag(flgs, TR_INFRA); - } - else if ((o_ptr->name2 == EGO_LITE_EYE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN)) - { - remove_flag(flgs, TR_RES_BLIND); - remove_flag(flgs, TR_SEE_INVIS); - } - } - - /* Random artifact ! */ - for (int i = 0; i < TR_FLAG_SIZE; i++) - { - flgs[i] |= o_ptr->art_flags[i]; - } - - if (object_is_smith(o_ptr)) - { - int add = o_ptr->xtra3 - 1; - if (add < TR_FLAG_MAX) - { - add_flag(flgs, add); - } - else if (add == ESSENCE_TMP_RES_ACID) - { - add_flag(flgs, TR_RES_ACID); - add_flag(flgs, TR_ACTIVATE); - } - else if (add == ESSENCE_TMP_RES_ELEC) - { - add_flag(flgs, TR_RES_ELEC); - add_flag(flgs, TR_ACTIVATE); - } - else if (add == ESSENCE_TMP_RES_FIRE) - { - add_flag(flgs, TR_RES_FIRE); - add_flag(flgs, TR_ACTIVATE); - } - else if (add == ESSENCE_TMP_RES_COLD) - { - add_flag(flgs, TR_RES_COLD); - add_flag(flgs, TR_ACTIVATE); - } - else if (add == ESSENCE_SH_FIRE) - { - add_flag(flgs, TR_RES_FIRE); - add_flag(flgs, TR_SH_FIRE); - } - else if (add == ESSENCE_SH_ELEC) - { - add_flag(flgs, TR_RES_ELEC); - add_flag(flgs, TR_SH_ELEC); - } - else if (add == ESSENCE_SH_COLD) - { - add_flag(flgs, TR_RES_COLD); - add_flag(flgs, TR_SH_COLD); - } - else if (add == ESSENCE_RESISTANCE) - { - add_flag(flgs, TR_RES_ACID); - add_flag(flgs, TR_RES_ELEC); - add_flag(flgs, TR_RES_FIRE); - add_flag(flgs, TR_RES_COLD); - } - else if (add == TR_IMPACT) - { - add_flag(flgs, TR_ACTIVATE); - } - } -} - - -/*! - * @brief オブジェクトの明示されているフラグ類を取得する - * Obtain the "flags" for an item which are known to the player - * @param o_ptr フラグ取得元のオブジェクト構造体ポインタ - * @param flgs フラグ情報を受け取る配列 - * @return なし - */ -void object_flags_known(object_type *o_ptr, BIT_FLAGS flgs[TR_FLAG_SIZE]) -{ - bool spoil = FALSE; - object_kind *k_ptr = &k_info[o_ptr->k_idx]; - for (int i = 0; i < TR_FLAG_SIZE; i++) - { - flgs[i] = 0; - } - - if (!object_is_aware(o_ptr)) return; - - /* Base object */ - for (int i = 0; i < TR_FLAG_SIZE; i++) - { - flgs[i] = k_ptr->flags[i]; - } - - if (!object_is_known(o_ptr)) return; - - if (object_is_ego(o_ptr)) - { - ego_item_type *e_ptr = &e_info[o_ptr->name2]; - for (int i = 0; i < TR_FLAG_SIZE; i++) - { - flgs[i] |= e_ptr->flags[i]; - } - - if ((o_ptr->name2 == EGO_LITE_AURA_FIRE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN)) - { - remove_flag(flgs, TR_SH_FIRE); - } - else if ((o_ptr->name2 == EGO_LITE_INFRA) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN)) - { - remove_flag(flgs, TR_INFRA); - } - else if ((o_ptr->name2 == EGO_LITE_EYE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN)) - { - remove_flag(flgs, TR_RES_BLIND); - remove_flag(flgs, TR_SEE_INVIS); - } - } - - if (spoil || object_is_fully_known(o_ptr)) - { - if (object_is_fixed_artifact(o_ptr)) - { - artifact_type *a_ptr = &a_info[o_ptr->name1]; - - for (int i = 0; i < TR_FLAG_SIZE; i++) - { - flgs[i] = a_ptr->flags[i]; - } - } - - /* Random artifact ! */ - for (int i = 0; i < TR_FLAG_SIZE; i++) - { - flgs[i] |= o_ptr->art_flags[i]; - } - } - - if (!object_is_smith(o_ptr)) return; - - int add = o_ptr->xtra3 - 1; - if (add < TR_FLAG_MAX) - { - add_flag(flgs, add); - } - else if (add == ESSENCE_TMP_RES_ACID) - { - add_flag(flgs, TR_RES_ACID); - } - else if (add == ESSENCE_TMP_RES_ELEC) - { - add_flag(flgs, TR_RES_ELEC); - } - else if (add == ESSENCE_TMP_RES_FIRE) - { - add_flag(flgs, TR_RES_FIRE); - } - else if (add == ESSENCE_TMP_RES_COLD) - { - add_flag(flgs, TR_RES_COLD); - } - else if (add == ESSENCE_SH_FIRE) - { - add_flag(flgs, TR_RES_FIRE); - add_flag(flgs, TR_SH_FIRE); - } - else if (add == ESSENCE_SH_ELEC) - { - add_flag(flgs, TR_RES_ELEC); - add_flag(flgs, TR_SH_ELEC); - } - else if (add == ESSENCE_SH_COLD) - { - add_flag(flgs, TR_RES_COLD); - add_flag(flgs, TR_SH_COLD); - } - else if (add == ESSENCE_RESISTANCE) - { - add_flag(flgs, TR_RES_ACID); - add_flag(flgs, TR_RES_ELEC); - add_flag(flgs, TR_RES_FIRE); - add_flag(flgs, TR_RES_COLD); - } -} - - -/*! * @brief オブジェクトの発動効果名称を返す(サブルーチン/ブレス) * @param o_ptr 名称を取得する元のオブジェクト構造体参照ポインタ * @return concptr 発動名称を返す文字列ポインタ diff --git a/src/object/object1.h b/src/object/object1.h index 3006958b4..a73f4f621 100644 --- a/src/object/object1.h +++ b/src/object/object1.h @@ -5,8 +5,6 @@ #define OBJ_GOLD_LIST 480 /* First "gold" entry */ -void object_flags(object_type *o_ptr, BIT_FLAGS flgs[TR_FLAG_SIZE]); -void object_flags_known(object_type *o_ptr, BIT_FLAGS flgs[TR_FLAG_SIZE]); concptr item_activation(object_type *o_ptr); char index_to_label(int i); s16b wield_slot(player_type *owner_ptr, object_type *o_ptr); diff --git a/src/object/warning.c b/src/object/warning.c index 8522e3579..d4315b0da 100644 --- a/src/object/warning.c +++ b/src/object/warning.c @@ -10,8 +10,8 @@ #include "mspell/mspell-damage-calculator.h" #include "mspell/mspell-type.h" #include "object-enchant/tr-types.h" +#include "object/object-flags.h" #include "object/object-flavor.h" -#include "object/object1.h" #include "player/mimic-info-table.h" #include "player/player-class.h" #include "player/player-move.h" diff --git a/src/perception/identification.c b/src/perception/identification.c index 71b2ca39b..5e356596a 100644 --- a/src/perception/identification.c +++ b/src/perception/identification.c @@ -4,6 +4,7 @@ #include "object-enchant/object-ego.h" #include "object-enchant/tr-types.h" #include "object-enchant/trc-types.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-hook.h" #include "object/object-kind.h" diff --git a/src/player-attack/player-attack.c b/src/player-attack/player-attack.c index 2e7ca008f..b263c1f2a 100644 --- a/src/player-attack/player-attack.c +++ b/src/player-attack/player-attack.c @@ -19,9 +19,9 @@ #include "monster/monster-status.h" #include "object-enchant/tr-types.h" #include "object-enchant/vorpal-weapon.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-hook.h" -#include "object/object1.h" #include "player-attack/attack-chaos-effect.h" #include "player-attack/blood-sucking-processor.h" #include "player-attack/player-attack-util.h" diff --git a/src/player/player-damage.c b/src/player/player-damage.c index a27ca02f5..70fb6783f 100644 --- a/src/player/player-damage.c +++ b/src/player/player-damage.c @@ -18,9 +18,9 @@ #include "mspell/monster-spell.h" #include "object-enchant/tr-types.h" #include "object/object-broken.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-hook.h" -#include "object/object1.h" #include "player/avatar.h" #include "player/player-class.h" #include "player/player-effects.h" diff --git a/src/player/player-status.c b/src/player/player-status.c index 2f4304ea4..36ca519ea 100644 --- a/src/player/player-status.c +++ b/src/player/player-status.c @@ -32,6 +32,7 @@ #include "object-enchant/special-object-flags.h" #include "object-enchant/tr-types.h" #include "object-enchant/trc-types.h" +#include "object/object-flags.h" #include "object/object-hook.h" #include "object/object-mark-types.h" #include "object/object1.h" diff --git a/src/player/race-resistances.c b/src/player/race-resistances.c index b543ca160..c4ae5b8c0 100644 --- a/src/player/race-resistances.c +++ b/src/player/race-resistances.c @@ -1,6 +1,6 @@ #include "race-resistances.h" #include "player/player-races-table.h" -#include "object/object1.h" +#include "object/object-flags.h" #include "object-enchant/tr-types.h" /*! diff --git a/src/player/selfinfo.c b/src/player/selfinfo.c index 9f44bf2c6..b0e9067d7 100644 --- a/src/player/selfinfo.c +++ b/src/player/selfinfo.c @@ -17,7 +17,7 @@ #include "player/selfinfo.h" #include "object-enchant/tr-types.h" #include "object-enchant/trc-types.h" -#include "object/object1.h" +#include "object/object-flags.h" #include "player/avatar.h" #include "player/player-class.h" #include "player/player-races-table.h" diff --git a/src/realm/realm-hex.c b/src/realm/realm-hex.c index 89d720c7a..96205167e 100644 --- a/src/realm/realm-hex.c +++ b/src/realm/realm-hex.c @@ -28,9 +28,9 @@ #include "object-enchant/tr-types.h" #include "object-enchant/trc-types.h" #include "object/item-use-flags.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-hook.h" -#include "object/object1.h" #include "player/player-effects.h" #include "player/player-skill.h" #include "player/player-status.h" diff --git a/src/specific-object/death-scythe.c b/src/specific-object/death-scythe.c index d9bf9d325..c2361e093 100644 --- a/src/specific-object/death-scythe.c +++ b/src/specific-object/death-scythe.c @@ -10,7 +10,7 @@ #include "core/stuff-handler.h" #include "main/sound-definitions-table.h" #include "object-enchant/tr-types.h" -#include "object/object1.h" +#include "object/object-flags.h" #include "player/player-damage.h" /*! diff --git a/src/spell-kind/spells-teleport.c b/src/spell-kind/spells-teleport.c index a259f6411..84d9c4ee2 100644 --- a/src/spell-kind/spells-teleport.c +++ b/src/spell-kind/spells-teleport.c @@ -17,8 +17,8 @@ #include "monster/creature.h" #include "monster/monster-status.h" #include "object-enchant/tr-types.h" +#include "object/object-flags.h" #include "object/object-hook.h" -#include "object/object1.h" #include "player/avatar.h" #include "player/player-move.h" #include "spell-kind/spells-launcher.h" diff --git a/src/spell/spells-object.c b/src/spell/spells-object.c index a8d999b8e..aa40c2f5c 100644 --- a/src/spell/spells-object.c +++ b/src/spell/spells-object.c @@ -25,12 +25,12 @@ #include "object-enchant/trc-types.h" #include "object-enchant/trg-types.h" #include "object/item-use-flags.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-generator.h" #include "object/object-hook.h" #include "object/object-kind-hook.h" #include "object/object-kind.h" -#include "object/object1.h" #include "perception/object-perception.h" #include "player/avatar.h" #include "player/player-class.h" diff --git a/src/store/store-util.c b/src/store/store-util.c index 93797b755..2d015261b 100644 --- a/src/store/store-util.c +++ b/src/store/store-util.c @@ -11,11 +11,11 @@ #include "object-enchant/special-object-flags.h" #include "object-enchant/tr-types.h" #include "perception/object-perception.h" +#include "object/object-flags.h" #include "object/object-generator.h" #include "object/object-hook.h" #include "object/object-kind.h" #include "object/object-value.h" -#include "object/object1.h" #include "sv-definition/sv-lite-types.h" #include "sv-definition/sv-potion-types.h" #include "sv-definition/sv-scroll-types.h" diff --git a/src/view/display-characteristic.c b/src/view/display-characteristic.c index 2eb370e34..cb6da333b 100644 --- a/src/view/display-characteristic.c +++ b/src/view/display-characteristic.c @@ -7,8 +7,8 @@ #include "display-characteristic.h" #include "object-enchant/tr-types.h" #include "object-enchant/trc-types.h" +#include "object/object-flags.h" #include "object/object-flavor.h" -#include "object/object1.h" #include "player/permanent-resistances.h" #include "player/race-resistances.h" #include "player/temporary-resistances.h" diff --git a/src/view/display-player-stat-info.c b/src/view/display-player-stat-info.c index 607d10c4b..10b5b1621 100644 --- a/src/view/display-player-stat-info.c +++ b/src/view/display-player-stat-info.c @@ -8,7 +8,7 @@ #include "display-player-stat-info.h" #include "object-enchant/tr-types.h" -#include "object/object1.h" +#include "object/object-flags.h" #include "player/mimic-info-table.h" #include "player/permanent-resistances.h" #include "player/player-personality.h" diff --git a/src/view/status-first-page.c b/src/view/status-first-page.c index 5c874a24d..1d1f21532 100644 --- a/src/view/status-first-page.c +++ b/src/view/status-first-page.c @@ -11,11 +11,11 @@ #include "combat/attack-power-table.h" #include "combat/shoot.h" #include "display-util.h" -#include "perception/object-perception.h" -#include "object/object1.h" #include "object-enchant/special-object-flags.h" -#include "sv-definition/sv-weapon-types.h" #include "object-enchant/tr-types.h" +#include "object/object-flags.h" +#include "perception/object-perception.h" +#include "sv-definition/sv-weapon-types.h" #include "term/term-color-types.h" static TERM_COLOR likert_color = TERM_WHITE; diff --git a/src/wizard/wizard-special-process.c b/src/wizard/wizard-special-process.c index c9f1a4824..ea9d2ebe8 100644 --- a/src/wizard/wizard-special-process.c +++ b/src/wizard/wizard-special-process.c @@ -39,12 +39,12 @@ #include "object-enchant/trc-types.h" #include "object-enchant/trg-types.h" #include "object/item-use-flags.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-generator.h" #include "object/object-hook.h" #include "object/object-kind.h" #include "object/object-value.h" -#include "object/object1.h" #include "perception/object-perception.h" #include "player/patron.h" #include "player/player-class.h" diff --git a/src/wizard/wizard-spoiler.c b/src/wizard/wizard-spoiler.c index d65c86f53..f58ed4ecc 100644 --- a/src/wizard/wizard-spoiler.c +++ b/src/wizard/wizard-spoiler.c @@ -21,6 +21,7 @@ #include "object-enchant/tr-types.h" #include "object-enchant/trc-types.h" #include "object-enchant/trg-types.h" +#include "object/object-flags.h" #include "object/object-flavor.h" #include "object/object-generator.h" #include "object/object-kind-hook.h" -- 2.11.0