void Character::set_mutation(const std::string &flag) { const auto iter = my_mutations.find( flag ); if( iter == my_mutations.end() ) { my_mutations[flag]; // Creates a new entry with default values } else { debugmsg("Trying to set %s mutation, but the character already has it.", flag.c_str()); } recalc_sight_limits(); reset_encumbrance(); }
void Character::unset_mutation(const std::string &flag) { const auto iter = my_mutations.find( flag ); if( iter == my_mutations.end() ) { debugmsg("Trying to unset %s mutation, but the character does not have it.", flag.c_str()); } else { my_mutations.erase( iter ); } recalc_sight_limits(); reset_encumbrance(); }
void Character::set_mutation( const trait_id &flag ) { const auto iter = my_mutations.find( flag ); if( iter == my_mutations.end() ) { my_mutations[flag]; // Creates a new entry with default values cached_mutations.push_back( &flag.obj() ); } else { return; } recalc_sight_limits(); reset_encumbrance(); }
void Character::unset_mutation( const trait_id &flag ) { const auto iter = my_mutations.find( flag ); if( iter != my_mutations.end() ) { my_mutations.erase( iter ); const mutation_branch &mut = *flag; cached_mutations.erase( std::remove( cached_mutations.begin(), cached_mutations.end(), &mut ), cached_mutations.end() ); } else { return; } recalc_sight_limits(); reset_encumbrance(); }
void Character::toggle_trait(const std::string &flag) { const auto titer = my_traits.find( flag ); if( titer == my_traits.end() ) { my_traits.insert( flag ); } else { my_traits.erase( titer ); } const auto miter = my_mutations.find( flag ); if( miter == my_mutations.end() ) { my_mutations[flag]; // Creates a new entry with default values mutation_effect(flag); } else { my_mutations.erase( miter ); mutation_loss_effect(flag); } recalc_sight_limits(); reset_encumbrance(); }