<ClCompile Include="..\..\src\object-hook\hook-armor.c" />\r
<ClCompile Include="..\..\src\object-potion\quaff-execution.c" />\r
<ClCompile Include="..\..\src\savedata\angband-version-comparer.c" />\r
+ <ClCompile Include="..\..\src\savedata\item-loader.c" />\r
<ClCompile Include="..\..\src\savedata\load-util.c" />\r
<ClCompile Include="..\..\src\savedata\load-v1-5-0.c" />\r
<ClCompile Include="..\..\src\specific-object\death-crimson.c" />\r
<ClInclude Include="..\..\src\object-hook\hook-weapon.h" />\r
<ClInclude Include="..\..\src\object-potion\quaff-execution.h" />\r
<ClInclude Include="..\..\src\savedata\angband-version-comparer.h" />\r
+ <ClInclude Include="..\..\src\savedata\item-loader.h" />\r
<ClInclude Include="..\..\src\savedata\load-util.h" />\r
<ClInclude Include="..\..\src\savedata\load-v1-5-0.h" />\r
<ClInclude Include="..\..\src\savedata\old-feature-types.h" />\r
+ <ClInclude Include="..\..\src\savedata\savedata-flag-types.h" />\r
<ClInclude Include="..\..\src\specific-object\death-crimson.h" />\r
<ClInclude Include="..\..\src\spell-kind\blood-curse.h" />\r
<ClInclude Include="..\..\src\spell-kind\spells-enchant.h" />\r
<ClCompile Include="..\..\src\savedata\load-v1-5-0.c">
<Filter>savedata</Filter>
</ClCompile>
+ <ClCompile Include="..\..\src\savedata\item-loader.c">
+ <Filter>savedata</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\cmd\cmd-basic.h">
<ClInclude Include="..\..\src\savedata\load-v1-5-0.h">
<Filter>savedata</Filter>
</ClInclude>
+ <ClInclude Include="..\..\src\savedata\item-loader.h">
+ <Filter>savedata</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\src\savedata\savedata-flag-types.h">
+ <Filter>savedata</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\src\wall.bmp" />
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 \
--- /dev/null
+#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;
+ }
+ }
+}
--- /dev/null
+#pragma once
+
+#include "system/angband.h"
+
+void rd_item(player_type *player_ptr, object_type *o_ptr);
#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"
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 モンスター保存先ポインタ
#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);
#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"
--- /dev/null
+#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;