1 #include "load/lore-loader.h"
2 #include "game-option/runtime-arguments.h"
3 #include "monster-race/monster-race.h"
4 #include "load/load-util.h"
5 #include "load/load-v1-5-0.h"
6 #include "load/angband-version-comparer.h"
9 * @brief モンスターの思い出を読み込む / Read the monster lore
10 * @param r_ptr 読み込み先モンスター種族情報へのポインタ
11 * @param r_idx 読み込み先モンスターID(種族特定用)
14 void rd_lore(monster_race *r_ptr, MONRACE_IDX r_idx)
18 r_ptr->r_sights = (MONSTER_NUMBER)tmp16s;
21 r_ptr->r_deaths = (MONSTER_NUMBER)tmp16s;
24 r_ptr->r_pkills = (MONSTER_NUMBER)tmp16s;
26 if (h_older_than(1, 7, 0, 5)) {
27 r_ptr->r_akills = r_ptr->r_pkills;
30 r_ptr->r_akills = (MONSTER_NUMBER)tmp16s;
34 r_ptr->r_tkills = (MONSTER_NUMBER)tmp16s;
36 rd_byte(&r_ptr->r_wake);
37 rd_byte(&r_ptr->r_ignore);
38 rd_byte(&r_ptr->r_xtra1);
39 rd_byte(&r_ptr->r_xtra2);
43 r_ptr->r_drop_gold = (ITEM_NUMBER)tmp8u;
45 r_ptr->r_drop_item = (ITEM_NUMBER)tmp8u;
48 rd_byte(&r_ptr->r_cast_spell);
50 rd_byte(&r_ptr->r_blows[0]);
51 rd_byte(&r_ptr->r_blows[1]);
52 rd_byte(&r_ptr->r_blows[2]);
53 rd_byte(&r_ptr->r_blows[3]);
55 rd_u32b(&r_ptr->r_flags1);
56 rd_u32b(&r_ptr->r_flags2);
57 rd_u32b(&r_ptr->r_flags3);
58 if (loading_savefile_version_is_older_than(3)) {
63 if (h_older_than(1, 5, 0, 3))
64 set_old_lore(r_ptr, f4, r_idx);
66 rd_u32b(&r_ptr->r_flagsr);
68 auto migrate = [r_ptr](u32b f, int start_idx) {
69 std::bitset<32> flag_bits(f);
70 for (size_t i = 0; i < flag_bits.size(); i++) {
71 auto ability = static_cast<RF_ABILITY>(start_idx + i);
72 r_ptr->r_ability_flags[ability] = flag_bits[i];
79 rd_u32b(&r_ptr->r_flagsr);
80 rd_FlagGroup(r_ptr->r_ability_flags, rd_byte);
84 r_ptr->max_num = (MONSTER_NUMBER)tmp8u;
86 rd_s16b(&r_ptr->floor_id);
89 r_ptr->r_flags1 &= r_ptr->flags1;
90 r_ptr->r_flags2 &= r_ptr->flags2;
91 r_ptr->r_flags3 &= r_ptr->flags3;
92 r_ptr->r_flagsr &= r_ptr->flagsr;
93 r_ptr->r_ability_flags &= r_ptr->ability_flags;
98 u16b loading_max_r_idx;
99 rd_u16b(&loading_max_r_idx);
103 for (int i = 0; i < loading_max_r_idx; i++) {
109 rd_lore(r_ptr, (MONRACE_IDX)i);
113 load_note(_("モンスターの思い出をロードしました", "Loaded Monster Memory"));