X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fload.c;h=12db4de3e7176240baab672908cd8657be021512;hb=e70ba712cf4b753e7d3876f60980c87cfeec09e3;hp=7572bd43ab723636153382055cea826fe11abb53;hpb=21e8e256948302a798fb67eaaa0d7adf956d6369;p=hengband%2Fhengband.git diff --git a/src/load.c b/src/load.c index 7572bd43a..12db4de3e 100644 --- a/src/load.c +++ b/src/load.c @@ -37,10 +37,12 @@ * the existing "number of turns to protect for", and where each hit * by a monster will reduce the shield by that amount. * - * XXX XXX XXX + * */ #include "angband.h" +#include "generate.h" +#include "trap.h" /* @@ -144,7 +146,7 @@ static bool z_older_than(byte x, byte y, byte z) */ static void note(cptr msg) { - static int y = 2; + static TERM_LEN y = 2; /* Draw the message */ prt(msg, y, 0); @@ -345,7 +347,6 @@ static void rd_item_old(object_type *o_ptr) /* Kind */ rd_s16b(&o_ptr->k_idx); - /* Location */ rd_byte(&tmp8u); o_ptr->iy = (POSITION)tmp8u; rd_byte(&tmp8u); @@ -370,7 +371,9 @@ static void rd_item_old(object_type *o_ptr) rd_byte(&o_ptr->discount); rd_byte(&tmp8u); o_ptr->number = (ITEM_NUMBER)tmp8u; - rd_s16b(&o_ptr->weight); + + rd_s16b(&tmp16s); + o_ptr->weight = tmp16s; rd_byte(&tmp8u); o_ptr->name1 = tmp8u; @@ -606,7 +609,7 @@ static void rd_item_old(object_type *o_ptr) static void rd_item(object_type *o_ptr) { object_kind *k_ptr; - u32b flags; + BIT_FLAGS flags; char buf[128]; byte_hack tmp8u; s16b tmp16s; @@ -624,7 +627,6 @@ static void rd_item(object_type *o_ptr) /* Kind */ rd_s16b(&o_ptr->k_idx); - /* Location */ rd_byte(&tmp8u); o_ptr->iy = (POSITION)tmp8u; rd_byte(&tmp8u); @@ -647,7 +649,8 @@ static void rd_item(object_type *o_ptr) } else o_ptr->number = 1; - rd_s16b(&o_ptr->weight); + rd_s16b(&tmp16s); + o_ptr->weight = tmp16s; if (flags & SAVE_ITEM_NAME1) { @@ -749,7 +752,7 @@ static void rd_item(object_type *o_ptr) if(h_older_than(2,1,2,4)) { - u32b flgs[TR_FLAG_SIZE]; + BIT_FLAGS flgs[TR_FLAG_SIZE]; object_flags(o_ptr, flgs); if ((o_ptr->name2 == EGO_DARK) || (o_ptr->name2 == EGO_ANCIENT_CURSE) || (o_ptr->name1 == ART_NIGHT)) @@ -816,6 +819,7 @@ static void rd_monster_old(monster_type *m_ptr) { byte tmp8u; s16b tmp16s; + u32b tmp32u; char buf[128]; /* Read the monster race */ @@ -863,11 +867,14 @@ static void rd_monster_old(monster_type *m_ptr) } else { - rd_u32b(&m_ptr->dealt_damage); + rd_s32b(&m_ptr->dealt_damage); } rd_s16b(&m_ptr->mtimed[MTIMED_CSLEEP]); - rd_byte(&m_ptr->mspeed); + + rd_byte(&tmp8u); + m_ptr->mspeed = tmp8u; + if (z_older_than(10, 4, 2)) { rd_byte(&tmp8u); @@ -922,10 +929,12 @@ static void rd_monster_old(monster_type *m_ptr) else m_ptr->smart = 0; - if (z_older_than(10, 4, 5)) + if (z_older_than(10, 4, 5)) { m_ptr->exp = 0; - else - rd_u32b(&m_ptr->exp); + } else { + rd_u32b(&tmp32u); + m_ptr->exp = tmp32u; + } if (z_older_than(10, 2, 2)) { @@ -967,10 +976,11 @@ static void rd_monster_old(monster_type *m_ptr) */ static void rd_monster(monster_type *m_ptr) { - u32b flags; + BIT_FLAGS flags; char buf[128]; byte tmp8u; s16b tmp16s; + u32b tmp32u; if (h_older_than(1, 5, 0, 0)) { @@ -1005,7 +1015,7 @@ static void rd_monster(monster_type *m_ptr) } else { - rd_u32b(&m_ptr->dealt_damage); + rd_s32b(&m_ptr->dealt_damage); } /* Monster race index of its appearance */ @@ -1018,7 +1028,8 @@ static void rd_monster(monster_type *m_ptr) if (flags & SAVE_MON_CSLEEP) rd_s16b(&m_ptr->mtimed[MTIMED_CSLEEP]); else m_ptr->mtimed[MTIMED_CSLEEP] = 0; - rd_byte(&m_ptr->mspeed); + rd_byte(&tmp8u); + m_ptr->mspeed = tmp8u; rd_s16b(&m_ptr->energy_need); @@ -1076,7 +1087,11 @@ static void rd_monster(monster_type *m_ptr) if (flags & SAVE_MON_SMART) rd_u32b(&m_ptr->smart); else m_ptr->smart = 0; - if (flags & SAVE_MON_EXP) rd_u32b(&m_ptr->exp); + if (flags & SAVE_MON_EXP) + { + rd_u32b(&tmp32u); + m_ptr->exp = (EXP)tmp32u; + } else m_ptr->exp = 0; m_ptr->mflag = 0; /* Not saved */ @@ -1148,22 +1163,28 @@ static void rd_monster(monster_type *m_ptr) static void rd_lore(MONRACE_IDX r_idx) { byte tmp8u; + s16b tmp16s; monster_race *r_ptr = &r_info[r_idx]; /* Count sights/deaths/kills */ - rd_s16b(&r_ptr->r_sights); - rd_s16b(&r_ptr->r_deaths); - rd_s16b(&r_ptr->r_pkills); + rd_s16b(&tmp16s); + r_ptr->r_sights = (MONSTER_NUMBER)tmp16s; + rd_s16b(&tmp16s); + r_ptr->r_deaths = (MONSTER_NUMBER)tmp16s; + rd_s16b(&tmp16s); + r_ptr->r_pkills = (MONSTER_NUMBER)tmp16s; if (h_older_than(1, 7, 0, 5)) { r_ptr->r_akills = r_ptr->r_pkills; } else { - rd_s16b(&r_ptr->r_akills); + rd_s16b(&tmp16s); + r_ptr->r_akills = (MONSTER_NUMBER)tmp16s; } - rd_s16b(&r_ptr->r_tkills); + rd_s16b(&tmp16s); + r_ptr->r_tkills = (MONSTER_NUMBER)tmp16s; /* Count wakes and ignores */ rd_byte(&r_ptr->r_wake); @@ -1174,8 +1195,10 @@ static void rd_lore(MONRACE_IDX r_idx) rd_byte(&r_ptr->r_xtra2); /* Count drops */ - rd_byte(&r_ptr->r_drop_gold); - rd_byte(&r_ptr->r_drop_item); + rd_byte(&tmp8u); + r_ptr->r_drop_gold = (ITEM_NUMBER)tmp8u; + rd_byte(&tmp8u); + r_ptr->r_drop_item = (ITEM_NUMBER)tmp8u; /* Count spells */ rd_byte(&tmp8u); @@ -1236,7 +1259,8 @@ static void rd_lore(MONRACE_IDX r_idx) } /* Read the "Racial" monster limit per level */ - rd_byte(&r_ptr->max_num); + rd_byte(&tmp8u); + r_ptr->max_num = (MONSTER_NUMBER)tmp8u; /* Location in saved floor */ rd_s16b(&r_ptr->floor_id); @@ -1379,11 +1403,7 @@ static errr rd_store(int town_number, int store_number) { object_type forge; object_type *q_ptr; - - /* Get local object */ q_ptr = &forge; - - /* Wipe the object */ object_wipe(q_ptr); /* Read the item */ @@ -1453,21 +1473,15 @@ static void rd_randomizer(void) static void rd_options(void) { int i, n; - byte b; - u16b c; - u32b flag[8]; - u32b mask[8]; - - - /*** Oops ***/ + BIT_FLAGS flag[8]; + BIT_FLAGS mask[8]; /* Ignore old options */ strip_bytes(16); - /*** Special info */ /* Read "delay_factor" */ @@ -1489,7 +1503,6 @@ static void rd_options(void) mana_warn = b; } - /*** Cheating options ***/ rd_u16b(&c); @@ -1505,6 +1518,7 @@ static void rd_options(void) cheat_save = (c & 0x4000) ? TRUE : FALSE; cheat_diary_output = (c & 0x8000) ? TRUE : FALSE; cheat_turn = (c & 0x0080) ? TRUE : FALSE; + cheat_sight = (c & 0x0040) ? TRUE : FALSE; rd_byte((byte *)&autosave_l); rd_byte((byte *)&autosave_t); @@ -1620,7 +1634,7 @@ static void rd_options(void) * @brief ダミー情報スキップ / Hack -- strip the "ghost" info * @return なし * @details - * XXX XXX XXX This is such a nasty hack it hurts. + * This is such a nasty hack it hurts. */ static void rd_ghost(void) { @@ -1641,6 +1655,7 @@ static void rd_ghost(void) static void load_quick_start(void) { byte tmp8u; + s16b tmp16s; int i; if (z_older_than(11, 0, 13)) @@ -1650,11 +1665,16 @@ static void load_quick_start(void) } rd_byte(&previous_char.psex); - rd_byte(&previous_char.prace); - rd_byte(&previous_char.pclass); - rd_byte(&previous_char.pseikaku); - rd_byte(&previous_char.realm1); - rd_byte(&previous_char.realm2); + rd_byte(&tmp8u); + previous_char.prace = (RACE_IDX)tmp8u; + rd_byte(&tmp8u); + previous_char.pclass = (CLASS_IDX)tmp8u; + rd_byte(&tmp8u); + previous_char.pseikaku = (CHARACTER_IDX)tmp8u; + rd_byte(&tmp8u); + previous_char.realm1 = (REALM_IDX)tmp8u; + rd_byte(&tmp8u); + previous_char.realm2 = (REALM_IDX)tmp8u; rd_s16b(&previous_char.age); rd_s16b(&previous_char.ht); @@ -1662,10 +1682,14 @@ static void load_quick_start(void) rd_s16b(&previous_char.sc); rd_s32b(&previous_char.au); - for (i = 0; i < 6; i++) rd_s16b(&previous_char.stat_max[i]); - for (i = 0; i < 6; i++) rd_s16b(&previous_char.stat_max_max[i]); + for (i = 0; i < A_MAX; i++) rd_s16b(&previous_char.stat_max[i]); + for (i = 0; i < A_MAX; i++) rd_s16b(&previous_char.stat_max_max[i]); - for (i = 0; i < PY_MAX_LEVEL; i++) rd_s16b(&previous_char.player_hp[i]); + for (i = 0; i < PY_MAX_LEVEL; i++) + { + rd_s16b(&tmp16s); + previous_char.player_hp[i] = (HIT_POINT)tmp16s; + } rd_s16b(&previous_char.chaos_patron); @@ -1714,13 +1738,18 @@ static void rd_extra(void) } /* Class/Race/Seikaku/Gender/Spells */ - rd_byte(&p_ptr->prace); - rd_byte(&p_ptr->pclass); - rd_byte(&p_ptr->pseikaku); + rd_byte(&tmp8u); + p_ptr->prace = (RACE_IDX)tmp8u; + rd_byte(&tmp8u); + p_ptr->pclass = (CLASS_IDX)tmp8u; + rd_byte(&tmp8u); + p_ptr->pseikaku = (CHARACTER_IDX)tmp8u; rd_byte(&p_ptr->psex); - rd_byte(&p_ptr->realm1); - rd_byte(&p_ptr->realm2); - rd_byte(&tmp8u); /* oops */ + rd_byte(&tmp8u); + p_ptr->realm1 = (REALM_IDX)tmp8u; + rd_byte(&tmp8u); + p_ptr->realm2 = (REALM_IDX)tmp8u; + rd_byte(&tmp8u); if (z_older_than(10, 4, 4)) { @@ -1741,12 +1770,11 @@ static void rd_extra(void) rd_s16b(&p_ptr->wt); /* Read the stat info */ - for (i = 0; i < 6; i++) rd_s16b(&p_ptr->stat_max[i]); - for (i = 0; i < 6; i++) rd_s16b(&p_ptr->stat_max_max[i]); - for (i = 0; i < 6; i++) rd_s16b(&p_ptr->stat_cur[i]); - - strip_bytes(24); /* oops */ + for (i = 0; i < A_MAX; i++) rd_s16b(&p_ptr->stat_max[i]); + for (i = 0; i < A_MAX; i++) rd_s16b(&p_ptr->stat_max_max[i]); + for (i = 0; i < A_MAX; i++) rd_s16b(&p_ptr->stat_cur[i]); + strip_bytes(24); rd_s32b(&p_ptr->au); rd_s32b(&p_ptr->max_exp); @@ -1812,7 +1840,8 @@ static void rd_extra(void) } else { - rd_byte(&p_ptr->start_race); + rd_byte(&tmp8u); + p_ptr->start_race = (RACE_IDX)tmp8u; rd_s32b(&tmp32s); p_ptr->old_race1 = (BIT_FLAGS)tmp32s; rd_s32b(&tmp32s); @@ -1848,8 +1877,10 @@ static void rd_extra(void) { for (i = 0; i < MAX_MANE; i++) { - rd_s16b(&p_ptr->mane_spell[i]); - rd_s16b(&p_ptr->mane_dam[i]); + rd_s16b(&tmp16s); + p_ptr->mane_spell[i] = (SPELL_IDX)tmp16s; + rd_s16b(&tmp16s); + p_ptr->mane_dam[i] = (SPELL_IDX)tmp16s; } rd_s16b(&p_ptr->mane_num); } @@ -1982,7 +2013,7 @@ static void rd_extra(void) } } - /* Repair maximum player level XXX XXX XXX */ + /* Repair maximum player level */ if (p_ptr->max_plv < p_ptr->lev) p_ptr->max_plv = p_ptr->lev; /* More info */ @@ -2176,8 +2207,9 @@ static void rd_extra(void) rd_byte(&tmp8u); p_ptr->autopick_autoregister = tmp8u ? TRUE : FALSE; - rd_byte(&tmp8u); /* oops */ - rd_byte(&p_ptr->action); + rd_byte(&tmp8u); + rd_byte(&tmp8u); + p_ptr->action = (ACTION_IDX)tmp8u; if (!z_older_than(10, 4, 3)) { rd_byte(&tmp8u); @@ -2323,7 +2355,6 @@ static void rd_extra(void) } else if (z_older_than(10, 3, 10)) { - s32b tmp32s; rd_s32b(&tmp32s); p_ptr->visit = 1L; } @@ -2375,11 +2406,7 @@ static errr rd_inventory(void) /* Nope, we reached the end */ if (n == 0xFFFF) break; - - /* Get local object */ q_ptr = &forge; - - /* Wipe the object */ object_wipe(q_ptr); /* Read the item */ @@ -2407,7 +2434,6 @@ static errr rd_inventory(void) /* Warning -- backpack is full */ else if (inven_cnt == INVEN_PACK) { - /* Oops */ note(_("持ち物の中のアイテムが多すぎる!", "Too many items in the inventory!")); /* Fail */ @@ -2447,6 +2473,7 @@ static void rd_messages(void) { int i; char buf[128]; + int message_max; if (h_older_than(2, 2, 0, 75)) @@ -2454,9 +2481,10 @@ static void rd_messages(void) u16b num; /* Total */ rd_u16b(&num); + message_max = (int)num; /* Read the messages */ - for (i = 0; i < num; i++) + for (i = 0; i < message_max; i++) { /* Read the message */ rd_string(buf, sizeof(buf)); @@ -2470,9 +2498,10 @@ static void rd_messages(void) u32b num; /* Total */ rd_u32b(&num); + message_max = (int)num; /* Read the messages */ - for (i = 0; i < num; i++) + for (i = 0; i < message_max; i++) { /* Read the message */ rd_string(buf, sizeof(buf)); @@ -2541,7 +2570,8 @@ static errr rd_dungeon_old(void) rd_s16b(&tmp16s); base_level = (DEPTH)tmp16s; - rd_s16b(&num_repro); + rd_s16b(&tmp16s); + num_repro = (MONSTER_NUMBER)tmp16s; rd_s16b(&tmp16s); p_ptr->y = (POSITION)tmp16s; rd_s16b(&tmp16s); @@ -2813,7 +2843,7 @@ static errr rd_dungeon_old(void) /* Read the dungeon items */ for (i = 1; i < limit; i++) { - IDX o_idx; + OBJECT_IDX o_idx; object_type *o_ptr; @@ -2821,7 +2851,6 @@ static errr rd_dungeon_old(void) /* Get a new record */ o_idx = o_pop(); - /* Oops */ if (i != o_idx) { note(format(_("アイテム配置エラー (%d <> %d)", "Object allocation error (%d <> %d)"), i, o_idx)); @@ -2836,7 +2865,7 @@ static errr rd_dungeon_old(void) rd_item(o_ptr); - /* XXX XXX XXX XXX XXX */ + /* XXX XXX */ /* Monster */ if (o_ptr->held_m_idx) @@ -2889,7 +2918,6 @@ static errr rd_dungeon_old(void) /* Get a new record */ m_idx = m_pop(); - /* Oops */ if (i != m_idx) { note(format(_("モンスター配置エラー (%d <> %d)", "Monster allocation error (%d <> %d)"), i, m_idx)); @@ -2929,15 +2957,22 @@ static errr rd_dungeon_old(void) /*! * @brief 保存されたフロアを読み込む / Read the saved floor - * @return なし + * @return info読み込みエラーコード * @details + * この関数は、セーブデータの互換性を保つために多くのデータ改変処理を備えている。 + * 現在確認している処理は以下の通り、 + * * The monsters/objects must be loaded in the same order * that they were stored, since the actual indexes matter. */ static errr rd_saved_floor(saved_floor_type *sf_ptr) { - int ymax, xmax; - int i, y, x; + POSITION ymax, xmax; + POSITION y, x; + int i; byte count; byte tmp8u; s16b tmp16s; @@ -2994,13 +3029,14 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr) rd_s16b(&tmp16s); base_level = (DEPTH)tmp16s; - rd_s16b(&num_repro); + rd_s16b(&tmp16s); + num_repro = (MONSTER_NUMBER)tmp16s; rd_u16b(&tmp16u); - p_ptr->y = (int)tmp16u; + p_ptr->y = (POSITION)tmp16u; rd_u16b(&tmp16u); - p_ptr->x = (int)tmp16u; + p_ptr->x = (POSITION)tmp16u; rd_s16b(&tmp16s); cur_hgt = (POSITION)tmp16s; @@ -3025,7 +3061,8 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr) cave_template_type *ct_ptr = &templates[i]; /* Read it */ - rd_u16b(&ct_ptr->info); + rd_u16b(&tmp16u); + ct_ptr->info = (BIT_FLAGS)tmp16u; if (h_older_than(1, 7, 0, 2)) { rd_byte(&tmp8u); @@ -3108,7 +3145,7 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr) } } else if ((c_ptr->feat == OLD_FEAT_QUEST_EXIT) && - (p_ptr->inside_quest == OLD_QUEST_WATER_CAVE)) + (p_ptr->inside_quest == OLD_QUEST_WATER_CAVE)) { c_ptr->feat = feat_up_stair; c_ptr->special = 0; @@ -3132,14 +3169,13 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr) /* Read the dungeon items */ for (i = 1; i < limit; i++) { - IDX o_idx; + OBJECT_IDX o_idx; object_type *o_ptr; /* Get a new record */ o_idx = o_pop(); - /* Oops */ if (i != o_idx) return 152; /* Acquire place */ @@ -3197,7 +3233,6 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr) /* Get a new record */ m_idx = m_pop(); - /* Oops */ if (i != m_idx) return 162; @@ -3234,6 +3269,7 @@ static errr rd_dungeon(void) { errr err = 0; s16b tmp16s; + byte_hack tmp8u; byte num; int i; @@ -3262,8 +3298,8 @@ static errr rd_dungeon(void) rd_s16b(&max_floor_id); /* Current dungeon type */ - rd_byte(&dungeon_type); - + rd_byte(&tmp8u); + dungeon_type = (DUNGEON_IDX)tmp8u; /* Number of the saved_floors array elements */ rd_byte(&num); @@ -3285,7 +3321,8 @@ static errr rd_dungeon(void) saved_floor_type *sf_ptr = &saved_floors[i]; rd_s16b(&sf_ptr->floor_id); - rd_byte(&sf_ptr->savefile_id); + rd_byte(&tmp8u); + sf_ptr->savefile_id = (s16b)tmp8u; rd_s16b(&tmp16s); sf_ptr->dun_level = (DEPTH)tmp16s; @@ -3301,7 +3338,6 @@ static errr rd_dungeon(void) for (i = 0; i < num; i++) { saved_floor_type *sf_ptr = &saved_floors[i]; - byte tmp8u; /* Unused element */ if (!sf_ptr->floor_id) continue; @@ -3483,7 +3519,7 @@ static errr rd_savefile_new_aux(void) for (i = 0; i < tmp16u; i++) { /* Read the lore */ - rd_lore(i); + rd_lore((MONRACE_IDX)i); } if (arg_fiddle) note(_("モンスターの思い出をロードしました", "Loaded Monster Memory")); @@ -3540,7 +3576,7 @@ static errr rd_savefile_new_aux(void) } /* Incompatible save files */ - if (max_quests_load > max_quests) + if (max_quests_load > max_q_idx) { note(format(_("クエストが多すぎる(%u)!", "Too many (%u) quests!"), max_quests_load)); return (23); @@ -3548,7 +3584,7 @@ static errr rd_savefile_new_aux(void) for (i = 0; i < max_quests_load; i++) { - if (i < max_quests) + if (i < max_q_idx) { quest_type* const q_ptr = &quest[i]; @@ -3562,7 +3598,8 @@ static errr rd_savefile_new_aux(void) } else { - rd_byte(&q_ptr->complev); + rd_byte(&tmp8u); + q_ptr->complev = tmp8u; } if(h_older_than(2, 1, 2, 2)) { @@ -3578,8 +3615,10 @@ static errr rd_savefile_new_aux(void) (!z_older_than(10, 3, 14) && (q_ptr->status == QUEST_STATUS_COMPLETED)) || (!z_older_than(11, 0, 7) && (i >= MIN_RANDOM_QUEST) && (i <= (MIN_RANDOM_QUEST + max_rquests_load)))) { - rd_s16b(&q_ptr->cur_num); - rd_s16b(&q_ptr->max_num); + rd_s16b(&tmp16s); + q_ptr->cur_num = (MONSTER_NUMBER)tmp16s; + rd_s16b(&tmp16s); + q_ptr->max_num = (MONSTER_NUMBER)tmp16s; rd_s16b(&q_ptr->type); /* Load quest monster index */ @@ -3596,7 +3635,8 @@ static errr rd_savefile_new_aux(void) if (q_ptr->k_idx) a_info[q_ptr->k_idx].gen_flags |= TRG_QUESTITEM; - rd_byte(&q_ptr->flags); + rd_byte(&tmp8u); + q_ptr->flags = tmp8u; if (z_older_than(10, 3, 11)) { @@ -3607,7 +3647,7 @@ static errr rd_savefile_new_aux(void) else { init_flags = INIT_ASSIGN; - p_ptr->inside_quest = i; + p_ptr->inside_quest = (QUEST_IDX)i; process_dungeon_file("q_info.txt", 0, 0, 0, 0); p_ptr->inside_quest = old_inside_quest; @@ -3615,7 +3655,8 @@ static errr rd_savefile_new_aux(void) } else { - rd_byte(&q_ptr->dungeon); + rd_byte(&tmp8u); + q_ptr->dungeon = tmp8u; } /* Mark uniques */ if (q_ptr->status == QUEST_STATUS_TAKEN || q_ptr->status == QUEST_STATUS_UNTAKEN) @@ -3736,7 +3777,8 @@ static errr rd_savefile_new_aux(void) /* Read the player_hp array */ for (i = 0; i < tmp16u; i++) { - rd_s16b(&p_ptr->player_hp[i]); + rd_s16b(&tmp16s); + p_ptr->player_hp[i] = (HIT_POINT)tmp16s; } /* Important -- Initialize the sex */ @@ -3805,7 +3847,8 @@ static errr rd_savefile_new_aux(void) for (i = 0; i < 64; i++) { - rd_byte(&p_ptr->spell_order[i]); + rd_byte(&tmp8u); + p_ptr->spell_order[i] = (SPELL_IDX)tmp8u; } @@ -3873,7 +3916,7 @@ static errr rd_savefile_new_aux(void) if (!z_older_than(11, 0, 9)) { - char buf[SCREEN_BUF_SIZE]; + char buf[SCREEN_BUF_MAX_SIZE]; rd_string(buf, sizeof(buf)); if (buf[0]) screen_dump = string_make(buf); } @@ -3983,11 +4026,7 @@ errr rd_savefile_new(void) /* Check for errors */ if (ferror(fff)) err = -1; - - /* Close the file */ my_fclose(fff); - - /* Result */ return (err); } @@ -4061,7 +4100,7 @@ static bool load_floor_aux(saved_floor_type *sf_ptr) * @param mode オプション * @return 成功したらtrue */ -bool load_floor(saved_floor_type *sf_ptr, u32b mode) +bool load_floor(saved_floor_type *sf_ptr, BIT_FLAGS mode) { FILE *old_fff = NULL; byte old_xor_byte = 0; @@ -4133,8 +4172,6 @@ bool load_floor(saved_floor_type *sf_ptr, u32b mode) /* Check for errors */ if (ferror(fff)) ok = FALSE; - - /* Close the file */ my_fclose(fff); /* Grab permissions */ @@ -4163,7 +4200,5 @@ bool load_floor(saved_floor_type *sf_ptr, u32b mode) /* Restore old knowledge */ kanji_code = old_kanji_code; - - /* Result */ return ok; }