static void rd_item_old(object_type *o_ptr)
{
char buf[128];
+ byte_hack tmp8u;
+ s16b tmp16s;
/* Kind */
rd_s16b(&o_ptr->k_idx);
/* Location */
- rd_byte(&o_ptr->iy);
- rd_byte(&o_ptr->ix);
+ rd_byte(&tmp8u);
+ o_ptr->iy = (POSITION)tmp8u;
+ rd_byte(&tmp8u);
+ o_ptr->ix = (POSITION)tmp8u;
/* Type/Subtype */
rd_byte(&o_ptr->tval);
rd_s16b(&o_ptr->timeout);
rd_s16b(&o_ptr->to_h);
- rd_s16b(&o_ptr->to_d);
+
+ rd_s16b(&tmp16s);
+ o_ptr->to_d = tmp16s;
rd_s16b(&o_ptr->to_a);
rd_s16b(&o_ptr->ac);
object_kind *k_ptr;
u32b flags;
char buf[128];
+ byte_hack tmp8u;
+ s16b tmp16s;
if (h_older_than(1, 5, 0, 0))
{
rd_s16b(&o_ptr->k_idx);
/* Location */
- rd_byte(&o_ptr->iy);
- rd_byte(&o_ptr->ix);
+ rd_byte(&tmp8u);
+ o_ptr->iy = (POSITION)tmp8u;
+ rd_byte(&tmp8u);
+ o_ptr->ix = (POSITION)tmp8u;
/* Type/Subtype */
k_ptr = &k_info[o_ptr->k_idx];
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(&o_ptr->to_d);
+ 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;
static void rd_monster_old(monster_type *m_ptr)
{
byte tmp8u;
+ s16b tmp16s;
char buf[128];
/* Read the monster race */
rd_byte(&m_ptr->sub_align);
/* Read the other information */
- rd_byte(&m_ptr->fy);
- rd_byte(&m_ptr->fx);
- rd_s16b(&m_ptr->hp);
- rd_s16b(&m_ptr->maxhp);
+ rd_byte(&tmp8u);
+ m_ptr->fy = (POSITION)tmp8u;
+ rd_byte(&tmp8u);
+ m_ptr->fx = (POSITION)tmp8u;
+
+ rd_s16b(&tmp16s);
+ m_ptr->hp = tmp16s;
+ rd_s16b(&tmp16s);
+ m_ptr->maxhp = tmp16s;
+
if (z_older_than(11, 0, 5))
{
m_ptr->max_maxhp = m_ptr->maxhp;
}
else
{
- rd_s16b(&m_ptr->max_maxhp);
+ rd_s16b(&tmp16s);
+ m_ptr->max_maxhp = (HIT_POINT)tmp16s;
}
if(h_older_than(2, 1, 2, 1))
{
}
else if (z_older_than(10,0,11))
{
- s16b tmp16s;
rd_s16b(&tmp16s);
reset_target(m_ptr);
}
else
{
- rd_s16b(&m_ptr->target_y);
- rd_s16b(&m_ptr->target_x);
+ rd_s16b(&tmp16s);
+ m_ptr->target_y = (POSITION)tmp16s;
+ rd_s16b(&tmp16s);
+ m_ptr->target_x = (POSITION)tmp16s;
}
rd_byte(&tmp8u);
u32b flags;
char buf[128];
byte tmp8u;
+ s16b tmp16s;
if (h_older_than(1, 5, 0, 0))
{
rd_s16b(&m_ptr->r_idx);
/* Read the other information */
- rd_byte(&m_ptr->fy);
- rd_byte(&m_ptr->fx);
- rd_s16b(&m_ptr->hp);
- rd_s16b(&m_ptr->maxhp);
- rd_s16b(&m_ptr->max_maxhp);
+ rd_byte(&tmp8u);
+ m_ptr->fy = (POSITION)tmp8u;
+ rd_byte(&tmp8u);
+ m_ptr->fx = (POSITION)tmp8u;
+
+ rd_s16b(&tmp16s);
+ m_ptr->hp = (HIT_POINT)tmp16s;
+ rd_s16b(&tmp16s);
+ m_ptr->maxhp = (HIT_POINT)tmp16s;
+ rd_s16b(&tmp16s);
+ m_ptr->max_maxhp = (HIT_POINT)tmp16s;
+
if(h_older_than(2, 1, 2, 1))
{
m_ptr->dealt_damage = 0;
}
else m_ptr->mtimed[MTIMED_MONFEAR] = 0;
- if (flags & SAVE_MON_TARGET_Y) rd_s16b(&m_ptr->target_y);
+ if (flags & SAVE_MON_TARGET_Y)
+ {
+ rd_s16b(&tmp16s);
+ m_ptr->target_y = (POSITION)tmp16s;
+ }
else m_ptr->target_y = 0;
- if (flags & SAVE_MON_TARGET_X) rd_s16b(&m_ptr->target_x);
+ if (flags & SAVE_MON_TARGET_X)
+ {
+ rd_s16b(&tmp16s);
+ m_ptr->target_x = (POSITION)tmp16s;
+ }
else m_ptr->target_x = 0;
if (flags & SAVE_MON_INVULNER)
r_ptr->r_flags2 &= r_ptr->flags2;
r_ptr->r_flags3 &= r_ptr->flags3;
r_ptr->r_flags4 &= r_ptr->flags4;
- r_ptr->r_flags5 &= r_ptr->flags5;
- r_ptr->r_flags6 &= r_ptr->flags6;
+ r_ptr->r_flags5 &= r_ptr->a_ability_flags1;
+ r_ptr->r_flags6 &= r_ptr->a_ability_flags2;
r_ptr->r_flagsr &= r_ptr->flagsr;
}
cheat_know = (c & 0x1000) ? TRUE : FALSE;
cheat_live = (c & 0x2000) ? TRUE : FALSE;
cheat_save = (c & 0x4000) ? TRUE : FALSE;
+ cheat_diary_output = (c & 0x8000) ? TRUE : FALSE;
+ cheat_turn = (c & 0x0080) ? TRUE : FALSE;
rd_byte((byte *)&autosave_l);
rd_byte((byte *)&autosave_t);
}
/* Special Race/Class info */
- rd_byte(&p_ptr->hitdie);
+ rd_byte(&tmp8u);
+ p_ptr->hitdie = tmp8u;
rd_u16b(&p_ptr->expfact);
/* Age/Height/Weight */
for (i = 0; i < 5; i++) for (j = 0; j < 60; j++) rd_s16b(&p_ptr->weapon_exp[i][j]);
else
for (i = 0; i < 5; i++) for (j = 0; j < 64; j++) rd_s16b(&p_ptr->weapon_exp[i][j]);
- for (i = 0; i < 10; i++) rd_s16b(&p_ptr->skill_exp[i]);
+ for (i = 0; i < GINOU_MAX; i++) rd_s16b(&p_ptr->skill_exp[i]);
if (z_older_than(10, 4, 1))
{
if (p_ptr->pclass != CLASS_BEASTMASTER) p_ptr->skill_exp[GINOU_RIDING] /= 2;
rd_byte(&p_ptr->exit_bldg);
rd_byte(&tmp8u);
- rd_s16b(&p_ptr->oldpx);
- rd_s16b(&p_ptr->oldpy);
+ rd_s16b(&tmp16s);
+ p_ptr->oldpx = (POSITION)tmp16s;
+ rd_s16b(&tmp16s);
+ p_ptr->oldpy = (POSITION)tmp16s;
+
if (z_older_than(10, 3, 13) && !dun_level && !p_ptr->inside_arena) {p_ptr->oldpy = 33;p_ptr->oldpx = 131;}
/* Was p_ptr->rewards[MAX_BACT] */
int i;
char buf[128];
- s16b num;
- /* Total */
- rd_s16b(&num);
+ if (h_older_than(2, 2, 0, 75))
+ {
+ u16b num;
+ /* Total */
+ rd_u16b(&num);
- /* Read the messages */
- for (i = 0; i < num; i++)
+ /* Read the messages */
+ for (i = 0; i < num; i++)
+ {
+ /* Read the message */
+ rd_string(buf, sizeof(buf));
+
+ /* Save the message */
+ message_add(buf);
+ }
+ }
+ else
{
- /* Read the message */
- rd_string(buf, sizeof(buf));
+ u32b num;
+ /* Total */
+ rd_u32b(&num);
- /* Save the message */
- message_add(buf);
+ /* Read the messages */
+ for (i = 0; i < num; i++)
+ {
+ /* Read the message */
+ rd_string(buf, sizeof(buf));
+
+ /* Save the message */
+ message_add(buf);
+ }
}
+
}
/*** Basic info ***/
/* Header info */
- rd_s16b(&dun_level);
+ rd_s16b(&tmp16s);
+ dun_level = (DEPTH)tmp16s;
if (z_older_than(10, 3, 8)) dungeon_type = DUNGEON_ANGBAND;
else rd_byte(&dungeon_type);
/* Set the base level for old versions */
base_level = dun_level;
- rd_s16b(&base_level);
+ rd_s16b(&tmp16s);
+ base_level = (DEPTH)tmp16s;
rd_s16b(&num_repro);
rd_s16b(&tmp16s);
rd_s16b(&tmp16s);
p_ptr->x = (int)tmp16s;
if (z_older_than(10, 3, 13) && !dun_level && !p_ptr->inside_arena) {p_ptr->y = 33;p_ptr->x = 131;}
- rd_s16b(&cur_hgt);
- rd_s16b(&cur_wid);
+ rd_s16b(&tmp16s);
+ cur_hgt = (POSITION)tmp16s;
+ rd_s16b(&tmp16s);
+ cur_wid = (POSITION)tmp16s;
rd_s16b(&tmp16s); /* max_panel_rows */
rd_s16b(&tmp16s); /* max_panel_cols */
/* Read the dungeon items */
for (i = 1; i < limit; i++)
{
- int o_idx;
+ IDX o_idx;
object_type *o_ptr;
{
/*** Not a saved floor ***/
- rd_s16b(&dun_level);
+ rd_s16b(&tmp16s);
+ dun_level = (DEPTH)tmp16s;
base_level = dun_level;
}
else
if (tmp16s != sf_ptr->lower_floor_id) return 171;
}
- rd_s16b(&base_level);
+ rd_s16b(&tmp16s);
+ base_level = (DEPTH)tmp16s;
rd_s16b(&num_repro);
rd_u16b(&tmp16u);
rd_u16b(&tmp16u);
p_ptr->x = (int)tmp16u;
- rd_s16b(&cur_hgt);
- rd_s16b(&cur_wid);
+ rd_s16b(&tmp16s);
+ cur_hgt = (POSITION)tmp16s;
+ rd_s16b(&tmp16s);
+ cur_wid = (POSITION)tmp16s;
rd_byte(&p_ptr->feeling);
#endif
- /* Mention the savefile version */
- note(format(
- _("バージョン %d.%d.%d のセーブ・ファイルをロード中...", "Loading a %d.%d.%d savefile..."),
- (z_major > 9) ? z_major - 10 : z_major, z_minor, z_patch));
-
-
/* Strip the version bytes */
strip_bytes(4);
rd_byte(&h_ver_minor);
rd_byte(&h_ver_major);
+ /* Mention the savefile version */
+ note(format(
+ _("バージョン %d.%d.%d.%d のセーブ・ファイルをロード中...", "Loading a %d.%d.%d.%d savefile..."),
+ (h_ver_major > 9) ? h_ver_major - 10 : h_ver_major, h_ver_minor, h_ver_patch, h_ver_extra));
+
+
/* Operating system info */
rd_u32b(&sf_system);
/* Read the object memory */
for (i = 0; i < tmp16u; i++)
{
- byte tmp8u;
object_kind *k_ptr = &k_info[i];
rd_byte(&tmp8u);