typedef s16b IDX; /*!< ゲーム中のID型を定義 */
typedef s32b POSITION; /*!< ゲーム中の座標型を定義 */
-typedef s16b HIT_POINT; /*!< ゲーム中のHP/ダメージ型を定義 */
+typedef s32b HIT_POINT; /*!< ゲーム中のHP/ダメージ型を定義 */
+typedef s32b MANA_POINT; /*!< ゲーム中のMP型を定義 */
typedef s16b HIT_PROB; /*!< ゲーム中の命中修正値を定義 */
typedef s16b BASE_STATUS; /*!< ゲーム中の基礎能力値型を定義 */
typedef byte ITEM_NUMBER; /*!< ゲーム中のアイテム数型を定義 */
{
char buf[128];
byte_hack tmp8u;
+ s16b tmp16s;
/* Kind */
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);
u32b flags;
char buf[128];
byte_hack tmp8u;
+ s16b tmp16s;
if (h_older_than(1, 5, 0, 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(&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(&tmp8u);
m_ptr->fx = (POSITION)tmp8u;
- rd_s16b(&m_ptr->hp);
- rd_s16b(&m_ptr->maxhp);
+ 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_byte(&tmp8u);
m_ptr->fx = (POSITION)tmp8u;
- rd_s16b(&m_ptr->hp);
- rd_s16b(&m_ptr->maxhp);
- rd_s16b(&m_ptr->max_maxhp);
+ 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)
}
/* Special Race/Class info */
- rd_byte(&p_ptr->hitdie);
+ rd_byte(&tmp8u);
+ p_ptr->hitdie = tmp8u;
rd_u16b(&p_ptr->expfact);
/* Age/Height/Weight */
if (flags & SAVE_ITEM_TIMEOUT) wr_s16b(o_ptr->timeout);
if (flags & SAVE_ITEM_TO_H) wr_s16b(o_ptr->to_h);
- if (flags & SAVE_ITEM_TO_D) wr_s16b(o_ptr->to_d);
+ if (flags & SAVE_ITEM_TO_D) wr_s16b((s16b)o_ptr->to_d);
if (flags & SAVE_ITEM_TO_A) wr_s16b(o_ptr->to_a);
if (flags & SAVE_ITEM_AC) wr_s16b(o_ptr->ac);
if (flags & SAVE_ITEM_DD) wr_byte(o_ptr->dd);
wr_s16b(m_ptr->r_idx);
wr_byte((byte_hack)m_ptr->fy);
wr_byte((byte_hack)m_ptr->fx);
- wr_s16b(m_ptr->hp);
- wr_s16b(m_ptr->maxhp);
- wr_s16b(m_ptr->max_maxhp);
+ wr_s16b((s16b)m_ptr->hp);
+ wr_s16b((s16b)m_ptr->maxhp);
+ wr_s16b((s16b)m_ptr->max_maxhp);
wr_u32b(m_ptr->dealt_damage);
tmp8u = (byte)m_ptr->mtimed[MTIMED_MONFEAR];
wr_byte(tmp8u);
}
- if (flags & SAVE_MON_TARGET_Y) wr_s16b(m_ptr->target_y);
- if (flags & SAVE_MON_TARGET_X) wr_s16b(m_ptr->target_x);
+ if (flags & SAVE_MON_TARGET_Y) wr_s16b((s16b)m_ptr->target_y);
+ if (flags & SAVE_MON_TARGET_X) wr_s16b((s16b)m_ptr->target_x);
if (flags & SAVE_MON_INVULNER)
{
tmp8u = (byte)m_ptr->mtimed[MTIMED_INVULNER];
wr_byte(p_ptr->realm2);
wr_byte(0); /* oops */
- wr_byte(p_ptr->hitdie);
+ wr_byte((byte)p_ptr->hitdie);
wr_u16b(p_ptr->expfact);
wr_s16b(p_ptr->age);
IDX inside_quest; /* Inside quest level */
bool inside_battle; /* Is character inside tougijou? */
- s32b wilderness_x; /* Coordinates in the wilderness */
- s32b wilderness_y;
+ POSITION wilderness_x; /* Coordinates in the wilderness */
+ POSITION wilderness_y;
bool wild_mode;
- s32b mhp; /* Max hit pts */
- s32b chp; /* Cur hit pts */
+ HIT_POINT mhp; /* Max hit pts */
+ HIT_POINT chp; /* Cur hit pts */
u32b chp_frac; /* Cur hit frac (times 2^16) */
- s32b msp; /* Max mana pts */
- s32b csp; /* Cur mana pts */
+ MANA_POINT msp; /* Max mana pts */
+ MANA_POINT csp; /* Cur mana pts */
u32b csp_frac; /* Cur mana frac (times 2^16) */
s16b max_plv; /* Max Player Level */