Esempio n. 1
0
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();
}
Esempio n. 2
0
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();
}
Esempio n. 3
0
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();
}
Esempio n. 4
0
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();
}
Esempio n. 5
0
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();
}