From 02fb1575ee2d70e5e4114bf19c65b1efcb7fded4 Mon Sep 17 00:00:00 2001 From: Deskull Date: Wed, 27 Sep 2017 20:40:19 +0900 Subject: [PATCH] =?utf8?q?#37287=20#37353=20(2.2.0.89)=20ITEM=5FNUMBER?= =?utf8?q?=E3=82=92s32b=E3=81=AB=E5=86=8D=E5=AE=9A=E7=BE=A9=E3=80=81?= =?utf8?q?=E5=9E=8B=E3=81=AE=E7=BD=AE=E6=8F=9B=E3=82=92=E7=B6=99=E7=B6=9A?= =?utf8?q?=E4=B8=AD=E3=80=82=20/=20Redefine=20ITEM=5FNUMBER=20to=20s32b,?= =?utf8?q?=20ongoing=20type=20replacement.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/h-type.h | 2 +- src/load.c | 8 ++++++-- src/save.c | 14 +++++++------- src/scores.c | 4 ++-- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/h-type.h b/src/h-type.h index 63355d574..a28e95d61 100644 --- a/src/h-type.h +++ b/src/h-type.h @@ -110,7 +110,7 @@ typedef s32b HIT_POINT; /*!< ゲーム中のHP/ダメージ型を定義 */ typedef s32b MANA_POINT; /*!< ゲーム中のMP型を定義 */ typedef s16b HIT_PROB; /*!< ゲーム中の命中修正値を定義 */ typedef s16b BASE_STATUS; /*!< ゲーム中の基礎能力値型を定義 */ -typedef byte ITEM_NUMBER; /*!< ゲーム中のアイテム数型を定義 */ +typedef s32b ITEM_NUMBER; /*!< ゲーム中のアイテム数型を定義 */ typedef s16b ACTION_ENERGY; /*!< ゲーム中の行動エネルギー型を定義 */ typedef s16b ARMOUR_CLASS; /*!< ゲーム中の行動アーマークラス型を定義 */ typedef s16b TIME_EFFECT; /*!< ゲーム中の時限期間の型を定義 */ diff --git a/src/load.c b/src/load.c index f3f57d5f9..8e7ed731e 100644 --- a/src/load.c +++ b/src/load.c @@ -366,7 +366,8 @@ static void rd_item_old(object_type *o_ptr) rd_s16b(&o_ptr->pval); rd_byte(&o_ptr->discount); - rd_byte(&o_ptr->number); + rd_byte(&tmp8u); + o_ptr->number = (ITEM_NUMBER)tmp8u; rd_s16b(&o_ptr->weight); rd_byte(&tmp8u); @@ -636,7 +637,10 @@ static void rd_item(object_type *o_ptr) if (flags & SAVE_ITEM_DISCOUNT) rd_byte(&o_ptr->discount); else o_ptr->discount = 0; - if (flags & SAVE_ITEM_NUMBER) rd_byte(&o_ptr->number); + if (flags & SAVE_ITEM_NUMBER) { + rd_byte(&tmp8u); + o_ptr->number = tmp8u; + } else o_ptr->number = 1; rd_s16b(&o_ptr->weight); diff --git a/src/save.c b/src/save.c index 59debc6e3..7f416928f 100644 --- a/src/save.c +++ b/src/save.c @@ -171,12 +171,12 @@ static void wr_item(object_type *o_ptr) if (flags & SAVE_ITEM_PVAL) wr_s16b(o_ptr->pval); if (flags & SAVE_ITEM_DISCOUNT) wr_byte(o_ptr->discount); - if (flags & SAVE_ITEM_NUMBER) wr_byte(o_ptr->number); + if (flags & SAVE_ITEM_NUMBER) wr_byte((byte_hack)o_ptr->number); wr_s16b(o_ptr->weight); - if (flags & SAVE_ITEM_NAME1) wr_byte(o_ptr->name1); - if (flags & SAVE_ITEM_NAME2) wr_byte(o_ptr->name2); + if (flags & SAVE_ITEM_NAME1) wr_byte((byte_hack)o_ptr->name1); + if (flags & SAVE_ITEM_NAME2) wr_byte((byte_hack)o_ptr->name2); if (flags & SAVE_ITEM_TIMEOUT) wr_s16b(o_ptr->timeout); if (flags & SAVE_ITEM_TO_H) wr_s16b(o_ptr->to_h); @@ -711,7 +711,7 @@ static void wr_extra(void) tmp8u = (byte)max_d_idx; wr_byte(tmp8u); for (i = 0; i < tmp8u; i++) - wr_s16b(max_dlv[i]); + wr_s16b((s16b)max_dlv[i]); /* More info */ wr_s16b(0); /* oops */ @@ -941,7 +941,7 @@ static void wr_saved_floor(saved_floor_type *sf_ptr) wr_s16b(sf_ptr->floor_id); wr_byte(sf_ptr->savefile_id); - wr_s16b(sf_ptr->dun_level); + wr_s16b((s16b)sf_ptr->dun_level); wr_s32b(sf_ptr->last_visit); wr_u32b(sf_ptr->visit_mark); wr_s16b(sf_ptr->upper_floor_id); @@ -1074,7 +1074,7 @@ static void wr_saved_floor(saved_floor_type *sf_ptr) } /* Extract an ID */ - tmp16u = i; + tmp16u = (u16b)i; /* If the run is broken, or too full, flush it */ if ((tmp16u != prev_u16b) || (count == MAX_UCHAR)) @@ -1212,7 +1212,7 @@ static bool wr_dungeon(void) wr_s16b(sf_ptr->floor_id); wr_byte(sf_ptr->savefile_id); - wr_s16b(sf_ptr->dun_level); + wr_s16b((s16b)sf_ptr->dun_level); wr_s32b(sf_ptr->last_visit); wr_u32b(sf_ptr->visit_mark); wr_s16b(sf_ptr->upper_floor_id); diff --git a/src/scores.c b/src/scores.c index 6a9c0a215..c808f6398 100644 --- a/src/scores.c +++ b/src/scores.c @@ -510,9 +510,9 @@ errr top_twenty(void) /* Save the level and such */ sprintf(the_score.cur_lev, "%3d", p_ptr->lev); - sprintf(the_score.cur_dun, "%3d", dun_level); + sprintf(the_score.cur_dun, "%3d", (int)dun_level); sprintf(the_score.max_lev, "%3d", p_ptr->max_plv); - sprintf(the_score.max_dun, "%3d", max_dlv[dungeon_type]); + sprintf(the_score.max_dun, "%3d", (int)max_dlv[dungeon_type]); /* Save the cause of death (31 chars) */ if (strlen(p_ptr->died_from) >= sizeof(the_score.how)) -- 2.11.0