OSDN Git Service

Merge pull request #3848 from Slimebreath6078/feature/Add_Damage_Cap
[hengbandforosx/hengbandosx.git] / src / save / monster-writer.cpp
index 156ec0a..4e84e3a 100644 (file)
@@ -1,16 +1,15 @@
-#include "save/monster-writer.h"
+#include "save/monster-writer.h"
 #include "load/old/monster-flag-types-savefile50.h"
 #include "monster-race/monster-race.h"
 #include "monster/monster-info.h"
 #include "monster/monster-status.h"
 #include "save/save-util.h"
-#include "system/monster-race-definition.h"
-#include "system/monster-type-definition.h"
+#include "system/monster-entity.h"
+#include "system/monster-race-info.h"
 #include "util/bit-flags-calculator.h"
 #include "util/enum-converter.h"
-#include "util/quarks.h"
 
-static void write_monster_flags(monster_type *m_ptr, BIT_FLAGS *flags)
+static void write_monster_flags(MonsterEntity *m_ptr, BIT_FLAGS *flags)
 {
     if (!m_ptr->is_original_ap()) {
         set_bits(*flags, SaveDataMonsterFlagType::AP_R_IDX);
@@ -40,7 +39,7 @@ static void write_monster_flags(monster_type *m_ptr, BIT_FLAGS *flags)
         set_bits(*flags, SaveDataMonsterFlagType::CONFUSED);
     }
 
-    if (monster_fear_remaining(m_ptr)) {
+    if (m_ptr->is_fearful()) {
         set_bits(*flags, SaveDataMonsterFlagType::MONFEAR);
     }
 
@@ -52,7 +51,7 @@ static void write_monster_flags(monster_type *m_ptr, BIT_FLAGS *flags)
         set_bits(*flags, SaveDataMonsterFlagType::TARGET_X);
     }
 
-    if (monster_invulner_remaining(m_ptr)) {
+    if (m_ptr->is_invulnerable()) {
         set_bits(*flags, SaveDataMonsterFlagType::INVULNER);
     }
 
@@ -68,7 +67,7 @@ static void write_monster_flags(monster_type *m_ptr, BIT_FLAGS *flags)
         set_bits(*flags, SaveDataMonsterFlagType::MFLAG2);
     }
 
-    if (m_ptr->nickname) {
+    if (m_ptr->is_named()) {
         set_bits(*flags, SaveDataMonsterFlagType::NICKNAME);
     }
 
@@ -79,7 +78,7 @@ static void write_monster_flags(monster_type *m_ptr, BIT_FLAGS *flags)
     wr_u32b(*flags);
 }
 
-static void write_monster_info(monster_type *m_ptr, const BIT_FLAGS flags)
+static void write_monster_info(MonsterEntity *m_ptr, const BIT_FLAGS flags)
 {
     byte tmp8u;
     if (any_bits(flags, SaveDataMonsterFlagType::FAST)) {
@@ -133,7 +132,7 @@ static void write_monster_info(monster_type *m_ptr, const BIT_FLAGS flags)
     }
 
     if (any_bits(flags, SaveDataMonsterFlagType::NICKNAME)) {
-        wr_string(quark_str(m_ptr->nickname));
+        wr_string(m_ptr->nickname);
     }
 
     if (any_bits(flags, SaveDataMonsterFlagType::PARENT)) {
@@ -145,7 +144,7 @@ static void write_monster_info(monster_type *m_ptr, const BIT_FLAGS flags)
  * @brief モンスター情報を書き込む / Write a "monster" record
  * @param m_ptr モンスター情報保存元ポインタ
  */
-void wr_monster(monster_type *m_ptr)
+void wr_monster(MonsterEntity *m_ptr)
 {
     BIT_FLAGS flags = 0x00000000;
     write_monster_flags(m_ptr, &flags);
@@ -181,7 +180,7 @@ void wr_monster(monster_type *m_ptr)
  */
 void wr_lore(MonsterRaceId r_idx)
 {
-    auto *r_ptr = &r_info[r_idx];
+    auto *r_ptr = &monraces_info[r_idx];
     wr_s16b((int16_t)r_ptr->r_sights);
     wr_s16b((int16_t)r_ptr->r_deaths);
     wr_s16b((int16_t)r_ptr->r_pkills);
@@ -215,6 +214,7 @@ void wr_lore(MonsterRaceId r_idx)
     wr_FlagGroup(r_ptr->r_kind_flags, wr_byte);
     wr_FlagGroup(r_ptr->r_drop_flags, wr_byte);
     wr_FlagGroup(r_ptr->r_feature_flags, wr_byte);
+    wr_FlagGroup(r_ptr->r_special_flags, wr_byte);
 
     wr_byte((byte)r_ptr->max_num);
     wr_s16b(r_ptr->floor_id);