#include "monster-race/race-flags2.h"
#include "monster-race/race-flags3.h"
#include "monster-race/race-indice-types.h"
+#include "monster/monster-info.h"
#include "system/floor-type-definition.h"
#include "system/monster-race-definition.h"
#include "system/monster-type-definition.h"
{
this->change_virtue_non_beginner();
this->change_virtue_unique();
- auto *r_ptr = &r_info[m_ptr->r_idx];
+ auto *r_ptr = real_r_ptr(this->m_ptr);
if (m_ptr->r_idx == MON_BEGGAR || m_ptr->r_idx == MON_LEPER) {
chg_virtue(this->player_ptr, V_COMPASSION, -1);
}
bool MonsterDamageProcessor::process_dead_exp_virtue(concptr note, monster_type *exp_mon)
{
auto *m_ptr = &this->player_ptr->current_floor_ptr->m_list[this->m_idx];
- auto *r_ptr = &r_info[m_ptr->r_idx];
+ auto *r_ptr = real_r_ptr(m_ptr);
if (m_ptr->hp >= 0) {
return false;
}
if (m_ptr->mflag2.has(MFLAG2::CHAMELEON)) {
r_ptr = real_r_ptr(m_ptr);
+ r_idx = real_r_idx(m_ptr);
if (r_ptr->r_sights < MAX_SHORT) {
r_ptr->r_sights++;
}
void MonsterDamageProcessor::increase_kill_numbers()
{
auto *m_ptr = &this->player_ptr->current_floor_ptr->m_list[this->m_idx];
- auto *r_ptr = &r_info[m_ptr->r_idx];
+ auto *r_ptr = real_r_ptr(m_ptr);
if (((m_ptr->ml == 0) || this->player_ptr->hallucinated) && none_bits(r_ptr->flags1, RF1_UNIQUE)) {
return;
}
void MonsterDamageProcessor::death_amberites(GAME_TEXT *m_name)
{
auto *m_ptr = &this->player_ptr->current_floor_ptr->m_list[this->m_idx];
- auto *r_ptr = &r_info[m_ptr->r_idx];
+ auto *r_ptr = real_r_ptr(m_ptr);
if (none_bits(r_ptr->flags3, RF3_AMBERITE) || one_in_(2)) {
return;
}
void MonsterDamageProcessor::dying_scream(GAME_TEXT *m_name)
{
auto *m_ptr = &this->player_ptr->current_floor_ptr->m_list[this->m_idx];
- auto *r_ptr = &r_info[m_ptr->r_idx];
+ auto *r_ptr = real_r_ptr(m_ptr);
if (none_bits(r_ptr->flags2, RF2_CAN_SPEAK)) {
return;
}
{
auto *floor_ptr = this->player_ptr->current_floor_ptr;
auto *m_ptr = &floor_ptr->m_list[this->m_idx];
- auto *r_ptr = &r_info[m_ptr->r_idx];
+ auto *r_ptr = real_r_ptr(m_ptr);
if (note != nullptr) {
msg_format("%^s%s", m_name, note);
return;
{
auto *floor_ptr = this->player_ptr->current_floor_ptr;
auto *m_ptr = &floor_ptr->m_list[this->m_idx];
- auto *r_ptr = &r_info[m_ptr->r_idx];
+ auto *r_ptr = real_r_ptr(m_ptr);
if (none_bits(r_ptr->flags1, RF1_UNIQUE) || m_ptr->mflag2.has(MFLAG2::CLONED) || vanilla_town) {
return;
}