int ItemEntity::calc_capture_value() const
{
- auto capture_r_idx = i2enum<MonsterRaceId>(this->pval);
- if (!MonsterRace(capture_r_idx).is_valid()) {
- return 1000;
- }
-
- return (monraces_info[capture_r_idx].level) * 50 + 1000;
+ const auto r_idx = i2enum<MonsterRaceId>(this->pval);
+ return MonraceList::get_instance().calc_capture_value(r_idx);
}
bool ItemEntity::is_specific_artifact(FixedArtifactId id) const
return 14000 + (level - 50) * 2000;
}
+
+int MonraceList::calc_capture_value(const MonsterRaceId r_idx) const
+{
+ if (r_idx == MonsterRaceId::PLAYER) {
+ return 1000;
+ }
+
+ return (*this)[r_idx].level * 50 + 1000;
+}
bool is_separated(const MonsterRaceId r_idx) const;
bool can_select_separate(const MonsterRaceId r_idx, const int hp, const int maxhp) const;
int calc_figurine_value(const MonsterRaceId r_idx) const;
+ int calc_capture_value(const MonsterRaceId r_idx) const;
private:
MonraceList() = default;