diff --git a/src/monster.cpp b/src/monster.cpp index e4e5f1d8d93f3..5e7a4d8ba1256 100644 --- a/src/monster.cpp +++ b/src/monster.cpp @@ -1132,19 +1132,20 @@ monster_attitude monster::attitude( const Character *u ) const } for( const trait_id &mut : u->get_mutations() ) { - for( const std::pair &elem : mut.obj().anger_relations ) { - if( type->in_species( elem.first ) ) { - effective_anger += elem.second; - } + const mutation_branch &branch = *mut; + if( branch.ignored_by.empty() && branch.anger_relations.empty() ) { + continue; } - } - - for( const trait_id &mut : u->get_mutations() ) { - for( const species_id &spe : mut.obj().ignored_by ) { + for( const species_id &spe : branch.ignored_by ) { if( type->in_species( spe ) ) { return MATT_IGNORE; } } + for( const std::pair &elem : branch.anger_relations ) { + if( type->in_species( elem.first ) ) { + effective_anger += elem.second; + } + } } }