From: Hourier Date: Sat, 4 Jul 2020 11:35:07 +0000 (+0900) Subject: [Refactor] #40467 Separated item-loader.c/h from load.c/h X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=138a9a545bfc7153f89da45b8b76891afee6ab4d;p=hengband%2Fhengband.git [Refactor] #40467 Separated item-loader.c/h from load.c/h --- diff --git a/Hengband/Hengband/Hengband.vcxproj b/Hengband/Hengband/Hengband.vcxproj index 893a9d27d..5e731efa6 100644 --- a/Hengband/Hengband/Hengband.vcxproj +++ b/Hengband/Hengband/Hengband.vcxproj @@ -237,6 +237,7 @@ + @@ -698,9 +699,11 @@ + + diff --git a/Hengband/Hengband/Hengband.vcxproj.filters b/Hengband/Hengband/Hengband.vcxproj.filters index f834a7c6b..5f59802af 100644 --- a/Hengband/Hengband/Hengband.vcxproj.filters +++ b/Hengband/Hengband/Hengband.vcxproj.filters @@ -1610,6 +1610,9 @@ savedata + + savedata + @@ -3520,6 +3523,12 @@ savedata + + savedata + + + savedata + diff --git a/src/Makefile.am b/src/Makefile.am index d3ff19b25..6ebbd92e1 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -520,6 +520,7 @@ hengband_SOURCES = \ room/pit-nest-kinds-table.c room/pit-nest-kinds-table.h \ \ savedata/angband-version-comparer.c savedata/angband-version-comparer.h \ + savedata/item-loader.c savedata/item-loader.h \ savedata/old-feature-types.h \ savedata/load-util.c savedata/load-util.h \ savedata/load-v1-5-0.c savedata/load-v1-5-0.h \ diff --git a/src/savedata/item-loader.c b/src/savedata/item-loader.c new file mode 100644 index 000000000..61c9abf06 --- /dev/null +++ b/src/savedata/item-loader.c @@ -0,0 +1,260 @@ +#include "savedata/item-loader.h" +#include "art-definition/art-accessory-types.h" +#include "object-enchant/object-ego.h" +#include "object-enchant/tr-types.h" +#include "object-hook/hook-enchant.h" +#include "object/object-flags.h" +#include "object/object-kind.h" +#include "savedata/angband-version-comparer.h" +#include "savedata/load-v1-5-0.h" +#include "savedata/load-util.h" +#include "savedata/savedata-flag-types.h" +#include "sv-definition/sv-lite-types.h" +#include "system/object-type-definition.h" +#include "util/bit-flags-calculator.h" +#include "util/quarks.h" + +/*! + * @brief アイテムオブジェクトを読み込む(現版) / Read an object (New method) + * @param o_ptr アイテムオブジェクト保存先ポインタ + * @return なし + */ +void rd_item(player_type *player_ptr, object_type *o_ptr) +{ + if (h_older_than(1, 5, 0, 0)) { + rd_item_old(player_ptr, o_ptr); + return; + } + + BIT_FLAGS flags; + rd_u32b(&flags); + rd_s16b(&o_ptr->k_idx); + + byte tmp8u; + rd_byte(&tmp8u); + o_ptr->iy = (POSITION)tmp8u; + rd_byte(&tmp8u); + o_ptr->ix = (POSITION)tmp8u; + + object_kind *k_ptr; + k_ptr = &k_info[o_ptr->k_idx]; + o_ptr->tval = k_ptr->tval; + o_ptr->sval = k_ptr->sval; + + if (flags & SAVE_ITEM_PVAL) + rd_s16b(&o_ptr->pval); + else + o_ptr->pval = 0; + + if (flags & SAVE_ITEM_DISCOUNT) + rd_byte(&o_ptr->discount); + else + o_ptr->discount = 0; + if (flags & SAVE_ITEM_NUMBER) { + rd_byte(&tmp8u); + o_ptr->number = tmp8u; + } else + o_ptr->number = 1; + + s16b tmp16s; + rd_s16b(&tmp16s); + o_ptr->weight = tmp16s; + + if (flags & SAVE_ITEM_NAME1) { + rd_byte(&tmp8u); + o_ptr->name1 = tmp8u; + } else + o_ptr->name1 = 0; + + if (flags & SAVE_ITEM_NAME2) { + rd_byte(&tmp8u); + o_ptr->name2 = tmp8u; + } else + o_ptr->name2 = 0; + + if (flags & SAVE_ITEM_TIMEOUT) + rd_s16b(&o_ptr->timeout); + else + o_ptr->timeout = 0; + + if (flags & SAVE_ITEM_TO_H) + rd_s16b(&o_ptr->to_h); + else + o_ptr->to_h = 0; + + if (flags & SAVE_ITEM_TO_D) { + rd_s16b(&tmp16s); + o_ptr->to_d = tmp16s; + } else + o_ptr->to_d = 0; + + if (flags & SAVE_ITEM_TO_A) + rd_s16b(&o_ptr->to_a); + else + o_ptr->to_a = 0; + + if (flags & SAVE_ITEM_AC) + rd_s16b(&o_ptr->ac); + else + o_ptr->ac = 0; + + if (flags & SAVE_ITEM_DD) { + rd_byte(&tmp8u); + o_ptr->dd = tmp8u; + } else + o_ptr->dd = 0; + + if (flags & SAVE_ITEM_DS) { + rd_byte(&tmp8u); + o_ptr->ds = tmp8u; + } else + o_ptr->ds = 0; + + if (flags & SAVE_ITEM_IDENT) + rd_byte(&o_ptr->ident); + else + o_ptr->ident = 0; + + if (flags & SAVE_ITEM_MARKED) + rd_byte(&o_ptr->marked); + else + o_ptr->marked = 0; + + /* Object flags */ + if (flags & SAVE_ITEM_ART_FLAGS0) + rd_u32b(&o_ptr->art_flags[0]); + else + o_ptr->art_flags[0] = 0; + + if (flags & SAVE_ITEM_ART_FLAGS1) + rd_u32b(&o_ptr->art_flags[1]); + else + o_ptr->art_flags[1] = 0; + + if (flags & SAVE_ITEM_ART_FLAGS2) + rd_u32b(&o_ptr->art_flags[2]); + else + o_ptr->art_flags[2] = 0; + + if (flags & SAVE_ITEM_ART_FLAGS3) + rd_u32b(&o_ptr->art_flags[3]); + else + o_ptr->art_flags[3] = 0; + + if (flags & SAVE_ITEM_ART_FLAGS4) + rd_u32b(&o_ptr->art_flags[4]); + else + o_ptr->art_flags[4] = 0; + + if (flags & SAVE_ITEM_CURSE_FLAGS) + rd_u32b(&o_ptr->curse_flags); + else + o_ptr->curse_flags = 0; + + /* Monster holding object */ + if (flags & SAVE_ITEM_HELD_M_IDX) + rd_s16b(&o_ptr->held_m_idx); + else + o_ptr->held_m_idx = 0; + + /* Special powers */ + if (flags & SAVE_ITEM_XTRA1) + rd_byte(&o_ptr->xtra1); + else + o_ptr->xtra1 = 0; + + if (flags & SAVE_ITEM_XTRA2) + rd_byte(&o_ptr->xtra2); + else + o_ptr->xtra2 = 0; + + if (flags & SAVE_ITEM_XTRA3) + rd_byte(&o_ptr->xtra3); + else + o_ptr->xtra3 = 0; + + if (flags & SAVE_ITEM_XTRA4) + rd_s16b(&o_ptr->xtra4); + else + o_ptr->xtra4 = 0; + + if (flags & SAVE_ITEM_XTRA5) + rd_s16b(&o_ptr->xtra5); + else + o_ptr->xtra5 = 0; + + if (flags & SAVE_ITEM_FEELING) + rd_byte(&o_ptr->feeling); + else + o_ptr->feeling = 0; + + if (flags & SAVE_ITEM_INSCRIPTION) { + char buf[128]; + rd_string(buf, sizeof(buf)); + o_ptr->inscription = quark_add(buf); + } else + o_ptr->inscription = 0; + + if (flags & SAVE_ITEM_ART_NAME) { + char buf[128]; + rd_string(buf, sizeof(buf)); + o_ptr->art_name = quark_add(buf); + } else { + o_ptr->art_name = 0; + } + + if (!h_older_than(2, 1, 2, 4)) + return; + + BIT_FLAGS flgs[TR_FLAG_SIZE]; + object_flags(player_ptr, o_ptr, flgs); + + if ((o_ptr->name2 == EGO_DARK) || (o_ptr->name2 == EGO_ANCIENT_CURSE) || (o_ptr->name1 == ART_NIGHT)) { + add_flag(o_ptr->art_flags, TR_LITE_M1); + remove_flag(o_ptr->art_flags, TR_LITE_1); + remove_flag(o_ptr->art_flags, TR_LITE_2); + remove_flag(o_ptr->art_flags, TR_LITE_3); + return; + } + + if (o_ptr->name2 == EGO_LITE_DARKNESS) { + if (o_ptr->tval != TV_LITE) { + add_flag(o_ptr->art_flags, TR_LITE_M1); + return; + } + + if (o_ptr->sval == SV_LITE_TORCH) { + add_flag(o_ptr->art_flags, TR_LITE_M1); + } else if (o_ptr->sval == SV_LITE_LANTERN) { + add_flag(o_ptr->art_flags, TR_LITE_M2); + } else if (o_ptr->sval == SV_LITE_FEANOR) { + add_flag(o_ptr->art_flags, TR_LITE_M3); + } + + return; + } + + if (o_ptr->tval == TV_LITE) { + if (object_is_fixed_artifact(o_ptr)) { + add_flag(o_ptr->art_flags, TR_LITE_3); + return; + } + + if (o_ptr->sval == SV_LITE_TORCH) { + add_flag(o_ptr->art_flags, TR_LITE_1); + add_flag(o_ptr->art_flags, TR_LITE_FUEL); + return; + } + + if (o_ptr->sval == SV_LITE_LANTERN) { + add_flag(o_ptr->art_flags, TR_LITE_2); + add_flag(o_ptr->art_flags, TR_LITE_FUEL); + return; + } + + if (o_ptr->sval == SV_LITE_FEANOR) { + add_flag(o_ptr->art_flags, TR_LITE_2); + return; + } + } +} diff --git a/src/savedata/item-loader.h b/src/savedata/item-loader.h new file mode 100644 index 000000000..2bbe17b98 --- /dev/null +++ b/src/savedata/item-loader.h @@ -0,0 +1,5 @@ +#pragma once + +#include "system/angband.h" + +void rd_item(player_type *player_ptr, object_type *o_ptr); diff --git a/src/savedata/load.c b/src/savedata/load.c index 33c54945b..fe7efe5ac 100644 --- a/src/savedata/load.c +++ b/src/savedata/load.c @@ -74,9 +74,10 @@ #include "player/race-info-table.h" #include "player/special-defense-types.h" #include "savedata/angband-version-comparer.h" +#include "savedata/item-loader.h" #include "savedata/load-util.h" -#include "savedata/load-v1-5-0.h" #include "savedata/old-feature-types.h" +#include "savedata/savedata-flag-types.h" #include "savedata/save.h" #include "spell/spells-status.h" #include "store/store-util.h" @@ -102,251 +103,6 @@ static const int QUEST_OLD_CASTLE = 27; // 古い城. static const int QUEST_ROYAL_CRYPT = 28; // 王家の墓. /*! - * @brief アイテムオブジェクトを読み込む(現版) / Read an object (New method) - * @param o_ptr アイテムオブジェクト保存先ポインタ - * @return なし - */ -static void rd_item(player_type *player_ptr, object_type *o_ptr) -{ - if (h_older_than(1, 5, 0, 0)) { - rd_item_old(player_ptr, o_ptr); - return; - } - - BIT_FLAGS flags; - rd_u32b(&flags); - rd_s16b(&o_ptr->k_idx); - - byte tmp8u; - rd_byte(&tmp8u); - o_ptr->iy = (POSITION)tmp8u; - rd_byte(&tmp8u); - o_ptr->ix = (POSITION)tmp8u; - - object_kind *k_ptr; - k_ptr = &k_info[o_ptr->k_idx]; - o_ptr->tval = k_ptr->tval; - o_ptr->sval = k_ptr->sval; - - if (flags & SAVE_ITEM_PVAL) - rd_s16b(&o_ptr->pval); - else - o_ptr->pval = 0; - - if (flags & SAVE_ITEM_DISCOUNT) - rd_byte(&o_ptr->discount); - else - o_ptr->discount = 0; - if (flags & SAVE_ITEM_NUMBER) { - rd_byte(&tmp8u); - o_ptr->number = tmp8u; - } else - o_ptr->number = 1; - - s16b tmp16s; - rd_s16b(&tmp16s); - o_ptr->weight = tmp16s; - - if (flags & SAVE_ITEM_NAME1) { - rd_byte(&tmp8u); - o_ptr->name1 = tmp8u; - } else - o_ptr->name1 = 0; - - if (flags & SAVE_ITEM_NAME2) { - rd_byte(&tmp8u); - o_ptr->name2 = tmp8u; - } else - o_ptr->name2 = 0; - - if (flags & SAVE_ITEM_TIMEOUT) - rd_s16b(&o_ptr->timeout); - else - o_ptr->timeout = 0; - - if (flags & SAVE_ITEM_TO_H) - rd_s16b(&o_ptr->to_h); - else - o_ptr->to_h = 0; - - if (flags & SAVE_ITEM_TO_D) { - rd_s16b(&tmp16s); - o_ptr->to_d = tmp16s; - } else - o_ptr->to_d = 0; - - if (flags & SAVE_ITEM_TO_A) - rd_s16b(&o_ptr->to_a); - else - o_ptr->to_a = 0; - - if (flags & SAVE_ITEM_AC) - rd_s16b(&o_ptr->ac); - else - o_ptr->ac = 0; - - if (flags & SAVE_ITEM_DD) { - rd_byte(&tmp8u); - o_ptr->dd = tmp8u; - } else - o_ptr->dd = 0; - - if (flags & SAVE_ITEM_DS) { - rd_byte(&tmp8u); - o_ptr->ds = tmp8u; - } else - o_ptr->ds = 0; - - if (flags & SAVE_ITEM_IDENT) - rd_byte(&o_ptr->ident); - else - o_ptr->ident = 0; - - if (flags & SAVE_ITEM_MARKED) - rd_byte(&o_ptr->marked); - else - o_ptr->marked = 0; - - /* Object flags */ - if (flags & SAVE_ITEM_ART_FLAGS0) - rd_u32b(&o_ptr->art_flags[0]); - else - o_ptr->art_flags[0] = 0; - - if (flags & SAVE_ITEM_ART_FLAGS1) - rd_u32b(&o_ptr->art_flags[1]); - else - o_ptr->art_flags[1] = 0; - - if (flags & SAVE_ITEM_ART_FLAGS2) - rd_u32b(&o_ptr->art_flags[2]); - else - o_ptr->art_flags[2] = 0; - - if (flags & SAVE_ITEM_ART_FLAGS3) - rd_u32b(&o_ptr->art_flags[3]); - else - o_ptr->art_flags[3] = 0; - - if (flags & SAVE_ITEM_ART_FLAGS4) - rd_u32b(&o_ptr->art_flags[4]); - else - o_ptr->art_flags[4] = 0; - - if (flags & SAVE_ITEM_CURSE_FLAGS) - rd_u32b(&o_ptr->curse_flags); - else - o_ptr->curse_flags = 0; - - /* Monster holding object */ - if (flags & SAVE_ITEM_HELD_M_IDX) - rd_s16b(&o_ptr->held_m_idx); - else - o_ptr->held_m_idx = 0; - - /* Special powers */ - if (flags & SAVE_ITEM_XTRA1) - rd_byte(&o_ptr->xtra1); - else - o_ptr->xtra1 = 0; - - if (flags & SAVE_ITEM_XTRA2) - rd_byte(&o_ptr->xtra2); - else - o_ptr->xtra2 = 0; - - if (flags & SAVE_ITEM_XTRA3) - rd_byte(&o_ptr->xtra3); - else - o_ptr->xtra3 = 0; - - if (flags & SAVE_ITEM_XTRA4) - rd_s16b(&o_ptr->xtra4); - else - o_ptr->xtra4 = 0; - - if (flags & SAVE_ITEM_XTRA5) - rd_s16b(&o_ptr->xtra5); - else - o_ptr->xtra5 = 0; - - if (flags & SAVE_ITEM_FEELING) - rd_byte(&o_ptr->feeling); - else - o_ptr->feeling = 0; - - if (flags & SAVE_ITEM_INSCRIPTION) { - char buf[128]; - rd_string(buf, sizeof(buf)); - o_ptr->inscription = quark_add(buf); - } else - o_ptr->inscription = 0; - - if (flags & SAVE_ITEM_ART_NAME) { - char buf[128]; - rd_string(buf, sizeof(buf)); - o_ptr->art_name = quark_add(buf); - } else { - o_ptr->art_name = 0; - } - - if (!h_older_than(2, 1, 2, 4)) - return; - - BIT_FLAGS flgs[TR_FLAG_SIZE]; - object_flags(player_ptr, o_ptr, flgs); - - if ((o_ptr->name2 == EGO_DARK) || (o_ptr->name2 == EGO_ANCIENT_CURSE) || (o_ptr->name1 == ART_NIGHT)) { - add_flag(o_ptr->art_flags, TR_LITE_M1); - remove_flag(o_ptr->art_flags, TR_LITE_1); - remove_flag(o_ptr->art_flags, TR_LITE_2); - remove_flag(o_ptr->art_flags, TR_LITE_3); - return; - } - - if (o_ptr->name2 == EGO_LITE_DARKNESS) { - if (o_ptr->tval != TV_LITE) { - add_flag(o_ptr->art_flags, TR_LITE_M1); - return; - } - - if (o_ptr->sval == SV_LITE_TORCH) { - add_flag(o_ptr->art_flags, TR_LITE_M1); - } else if (o_ptr->sval == SV_LITE_LANTERN) { - add_flag(o_ptr->art_flags, TR_LITE_M2); - } else if (o_ptr->sval == SV_LITE_FEANOR) { - add_flag(o_ptr->art_flags, TR_LITE_M3); - } - - return; - } - - if (o_ptr->tval == TV_LITE) { - if (object_is_fixed_artifact(o_ptr)) { - add_flag(o_ptr->art_flags, TR_LITE_3); - return; - } - - if (o_ptr->sval == SV_LITE_TORCH) { - add_flag(o_ptr->art_flags, TR_LITE_1); - add_flag(o_ptr->art_flags, TR_LITE_FUEL); - return; - } - - if (o_ptr->sval == SV_LITE_LANTERN) { - add_flag(o_ptr->art_flags, TR_LITE_2); - add_flag(o_ptr->art_flags, TR_LITE_FUEL); - return; - } - - if (o_ptr->sval == SV_LITE_FEANOR) { - add_flag(o_ptr->art_flags, TR_LITE_2); - return; - } - } -} - -/*! * @brief モンスターを読み込む(現版) / Read a monster (New method) * @param player_ptr プレーヤーへの参照ポインタ * @param m_ptr モンスター保存先ポインタ diff --git a/src/savedata/load.h b/src/savedata/load.h index 0aba2ad6b..ac98a23f5 100644 --- a/src/savedata/load.h +++ b/src/savedata/load.h @@ -3,59 +3,5 @@ #include "floor/floor-save.h" #include "system/angband.h" -/* - * Flags for wr_item()/rd_item() - */ -#define SAVE_ITEM_PVAL 0x00000001 -#define SAVE_ITEM_DISCOUNT 0x00000002 -#define SAVE_ITEM_NUMBER 0x00000004 -#define SAVE_ITEM_NAME1 0x00000008 -#define SAVE_ITEM_NAME2 0x00000010 -#define SAVE_ITEM_TIMEOUT 0x00000020 -#define SAVE_ITEM_TO_H 0x00000040 -#define SAVE_ITEM_TO_D 0x00000080 -#define SAVE_ITEM_TO_A 0x00000100 -#define SAVE_ITEM_AC 0x00000200 -#define SAVE_ITEM_DD 0x00000400 -#define SAVE_ITEM_DS 0x00000800 -#define SAVE_ITEM_IDENT 0x00001000 -#define SAVE_ITEM_MARKED 0x00002000 -#define SAVE_ITEM_ART_FLAGS0 0x00004000 -#define SAVE_ITEM_ART_FLAGS1 0x00008000 -#define SAVE_ITEM_ART_FLAGS2 0x00010000 -#define SAVE_ITEM_ART_FLAGS3 0x00020000 -#define SAVE_ITEM_CURSE_FLAGS 0x00040000 -#define SAVE_ITEM_HELD_M_IDX 0x00080000 -#define SAVE_ITEM_XTRA1 0x00100000 -#define SAVE_ITEM_XTRA2 0x00200000 -#define SAVE_ITEM_XTRA3 0x00400000 -#define SAVE_ITEM_XTRA4 0x00800000 -#define SAVE_ITEM_XTRA5 0x01000000 -#define SAVE_ITEM_FEELING 0x02000000 -#define SAVE_ITEM_INSCRIPTION 0x04000000 -#define SAVE_ITEM_ART_NAME 0x08000000 -#define SAVE_ITEM_ART_FLAGS4 0x10000000 - - /* - * Flags for wr_monster()/rd_monster() - */ -#define SAVE_MON_AP_R_IDX 0x00000001 -#define SAVE_MON_SUB_ALIGN 0x00000002 -#define SAVE_MON_CSLEEP 0x00000004 -#define SAVE_MON_FAST 0x00000008 -#define SAVE_MON_SLOW 0x00000010 -#define SAVE_MON_STUNNED 0x00000020 -#define SAVE_MON_CONFUSED 0x00000040 -#define SAVE_MON_MONFEAR 0x00000080 -#define SAVE_MON_TARGET_Y 0x00000100 -#define SAVE_MON_TARGET_X 0x00000200 -#define SAVE_MON_INVULNER 0x00000400 -#define SAVE_MON_SMART 0x00000800 -#define SAVE_MON_EXP 0x00001000 -#define SAVE_MON_MFLAG2 0x00002000 -#define SAVE_MON_NICKNAME 0x00004000 -#define SAVE_MON_PARENT 0x00008000 - -/* load.c */ -extern errr rd_savefile_new(player_type *player_ptr); -extern bool load_floor(player_type *player_ptr, saved_floor_type *sf_ptr, BIT_FLAGS mode); +errr rd_savefile_new(player_type *player_ptr); +bool load_floor(player_type *player_ptr, saved_floor_type *sf_ptr, BIT_FLAGS mode); diff --git a/src/savedata/save.c b/src/savedata/save.c index cf91a1972..576e5ddf6 100644 --- a/src/savedata/save.c +++ b/src/savedata/save.c @@ -38,6 +38,7 @@ #include "object-enchant/artifact.h" #include "object/object-kind.h" #include "savedata/load.h" +#include "savedata/savedata-flag-types.h" #include "store/store-util.h" #include "store/store.h" #include "system/angband-version.h" diff --git a/src/savedata/savedata-flag-types.h b/src/savedata/savedata-flag-types.h new file mode 100644 index 000000000..b47c3e0d5 --- /dev/null +++ b/src/savedata/savedata-flag-types.h @@ -0,0 +1,52 @@ +#pragma once + +typedef enum savedata_item_flag_type { + SAVE_ITEM_PVAL = 0x00000001, + SAVE_ITEM_DISCOUNT = 0x00000002, + SAVE_ITEM_NUMBER = 0x00000004, + SAVE_ITEM_NAME1 = 0x00000008, + SAVE_ITEM_NAME2 = 0x00000010, + SAVE_ITEM_TIMEOUT = 0x00000020, + SAVE_ITEM_TO_H = 0x00000040, + SAVE_ITEM_TO_D = 0x00000080, + SAVE_ITEM_TO_A = 0x00000100, + SAVE_ITEM_AC = 0x00000200, + SAVE_ITEM_DD = 0x00000400, + SAVE_ITEM_DS = 0x00000800, + SAVE_ITEM_IDENT = 0x00001000, + SAVE_ITEM_MARKED = 0x00002000, + SAVE_ITEM_ART_FLAGS0 = 0x00004000, + SAVE_ITEM_ART_FLAGS1 = 0x00008000, + SAVE_ITEM_ART_FLAGS2 = 0x00010000, + SAVE_ITEM_ART_FLAGS3 = 0x00020000, + SAVE_ITEM_CURSE_FLAGS = 0x00040000, + SAVE_ITEM_HELD_M_IDX = 0x00080000, + SAVE_ITEM_XTRA1 = 0x00100000, + SAVE_ITEM_XTRA2 = 0x00200000, + SAVE_ITEM_XTRA3 = 0x00400000, + SAVE_ITEM_XTRA4 = 0x00800000, + SAVE_ITEM_XTRA5 = 0x01000000, + SAVE_ITEM_FEELING = 0x02000000, + SAVE_ITEM_INSCRIPTION = 0x04000000, + SAVE_ITEM_ART_NAME = 0x08000000, + SAVE_ITEM_ART_FLAGS4 = 0x10000000, +} savedata_item_flag_type; + +typedef enum savedata_monster_flag_type { + SAVE_MON_AP_R_IDX = 0x00000001, + SAVE_MON_SUB_ALIGN = 0x00000002, + SAVE_MON_CSLEEP = 0x00000004, + SAVE_MON_FAST = 0x00000008, + SAVE_MON_SLOW = 0x00000010, + SAVE_MON_STUNNED = 0x00000020, + SAVE_MON_CONFUSED = 0x00000040, + SAVE_MON_MONFEAR = 0x00000080, + SAVE_MON_TARGET_Y = 0x00000100, + SAVE_MON_TARGET_X = 0x00000200, + SAVE_MON_INVULNER = 0x00000400, + SAVE_MON_SMART = 0x00000800, + SAVE_MON_EXP = 0x00001000, + SAVE_MON_MFLAG2 = 0x00002000, + SAVE_MON_NICKNAME = 0x00004000, + SAVE_MON_PARENT = 0x00008000, +} savedata_monster_flag_type;