void Creature::mod_stat( std::string stat, int modifier ) { if( stat == "str" ) { mod_str_bonus( modifier ); } else if( stat == "dex" ) { mod_dex_bonus( modifier ); } else if( stat == "per" ) { mod_per_bonus( modifier ); } else if( stat == "int" ) { mod_int_bonus( modifier ); } else if( stat == "speed" ) { mod_speed_bonus( modifier ); } else if( stat == "dodge" ) { mod_dodge_bonus( modifier ); } else if( stat == "block" ) { mod_block_bonus( modifier ); } else if( stat == "hit" ) { mod_hit_bonus( modifier ); } else if( stat == "bash" ) { mod_bash_bonus( modifier ); } else if( stat == "cut" ) { mod_cut_bonus( modifier ); } else if( stat == "pain" ) { mod_pain( modifier ); } else if( stat == "moves" ) { mod_moves( modifier ); } else { add_msg( "Tried to modify a nonexistent stat %s.", stat.c_str() ); } }
void Character::mod_stat( const std::string &stat, int modifier ) { if( stat == "str" ) { mod_str_bonus( modifier ); } else if( stat == "dex" ) { mod_dex_bonus( modifier ); } else if( stat == "per" ) { mod_per_bonus( modifier ); } else if( stat == "int" ) { mod_int_bonus( modifier ); } else if( stat == "healthy" ) { mod_healthy( modifier ); } else if( stat == "hunger" ) { mod_hunger( modifier ); } else if( stat == "speed" ) { mod_speed_bonus( modifier ); } else if( stat == "dodge" ) { mod_dodge_bonus( modifier ); } else if( stat == "block" ) { mod_block_bonus( modifier ); } else if( stat == "hit" ) { mod_hit_bonus( modifier ); } else if( stat == "bash" ) { mod_bash_bonus( modifier ); } else if( stat == "cut" ) { mod_cut_bonus( modifier ); } else if( stat == "pain" ) { mod_pain( modifier ); } else if( stat == "moves" ) { mod_moves( modifier ); } else { Creature::mod_stat( stat, modifier ); } }
void Character::reset_stats() { // Bionic buffs if (has_active_bionic("bio_hydraulics")) mod_str_bonus(20); if (has_bionic("bio_eye_enhancer")) mod_per_bonus(2); if (has_bionic("bio_str_enhancer")) mod_str_bonus(2); if (has_bionic("bio_int_enhancer")) mod_int_bonus(2); if (has_bionic("bio_dex_enhancer")) mod_dex_bonus(2); // Trait / mutation buffs if (has_trait("THICK_SCALES")) { mod_dex_bonus(-2); } if (has_trait("CHITIN2") || has_trait("CHITIN3") || has_trait("CHITIN_FUR3")) { mod_dex_bonus(-1); } if (has_trait("BIRD_EYE")) { mod_per_bonus(4); } if (has_trait("INSECT_ARMS")) { mod_dex_bonus(-2); } if (has_trait("WEBBED")) { mod_dex_bonus(-1); } if (has_trait("ARACHNID_ARMS")) { mod_dex_bonus(-4); } if (has_trait("ARM_TENTACLES") || has_trait("ARM_TENTACLES_4") || has_trait("ARM_TENTACLES_8")) { mod_dex_bonus(1); } // Dodge-related effects if (has_trait("TAIL_LONG")) { mod_dodge_bonus(2); } if (has_trait("TAIL_CATTLE")) { mod_dodge_bonus(1); } if (has_trait("TAIL_RAT")) { mod_dodge_bonus(2); } if (has_trait("TAIL_THICK") && !(has_active_mutation("TAIL_THICK")) ) { mod_dodge_bonus(1); } if (has_trait("TAIL_RAPTOR")) { mod_dodge_bonus(3); } if (has_trait("TAIL_FLUFFY")) { mod_dodge_bonus(4); } if (has_trait("WINGS_BAT")) { mod_dodge_bonus(-3); } if (has_trait("WINGS_BUTTERFLY")) { mod_dodge_bonus(-4); } ///\EFFECT_STR_MAX above 15 decreases Dodge bonus by 1 (NEGATIVE) if (str_max >= 16) {mod_dodge_bonus(-1);} // Penalty if we're huge ///\EFFECT_STR_MAX below 6 increases Dodge bonus by 1 else if (str_max <= 5) {mod_dodge_bonus(1);} // Bonus if we're small nv_cached = false; // Reset our stats to normal levels // Any persistent buffs/debuffs will take place in effects, // player::suffer(), etc. // repopulate the stat fields str_cur = str_max + get_str_bonus(); dex_cur = dex_max + get_dex_bonus(); per_cur = per_max + get_per_bonus(); int_cur = int_max + get_int_bonus(); // Floor for our stats. No stat changes should occur after this! if( dex_cur < 0 ) { dex_cur = 0; } if( str_cur < 0 ) { str_cur = 0; } if( per_cur < 0 ) { per_cur = 0; } if( int_cur < 0 ) { int_cur = 0; } // Does nothing! TODO: Remove Creature::reset_stats(); }
void Character::reset_stats() { Creature::reset_stats(); // Bionic buffs if (has_active_bionic("bio_hydraulics")) mod_str_bonus(20); if (has_bionic("bio_eye_enhancer")) mod_per_bonus(2); if (has_bionic("bio_str_enhancer")) mod_str_bonus(2); if (has_bionic("bio_int_enhancer")) mod_int_bonus(2); if (has_bionic("bio_dex_enhancer")) mod_dex_bonus(2); // Trait / mutation buffs if (has_trait("THICK_SCALES")) { mod_dex_bonus(-2); } if (has_trait("CHITIN2") || has_trait("CHITIN3") || has_trait("CHITIN_FUR3")) { mod_dex_bonus(-1); } if (has_trait("BIRD_EYE")) { mod_per_bonus(4); } if (has_trait("INSECT_ARMS")) { mod_dex_bonus(-2); } if (has_trait("WEBBED")) { mod_dex_bonus(-1); } if (has_trait("ARACHNID_ARMS")) { mod_dex_bonus(-4); } if (has_trait("ARM_TENTACLES") || has_trait("ARM_TENTACLES_4") || has_trait("ARM_TENTACLES_8")) { mod_dex_bonus(1); } // Dodge-related effects if (has_trait("TAIL_LONG")) { mod_dodge_bonus(2); } if (has_trait("TAIL_CATTLE")) { mod_dodge_bonus(1); } if (has_trait("TAIL_RAT")) { mod_dodge_bonus(2); } if (has_trait("TAIL_THICK") && !(has_active_mutation("TAIL_THICK")) ) { mod_dodge_bonus(1); } if (has_trait("TAIL_RAPTOR")) { mod_dodge_bonus(3); } if (has_trait("TAIL_FLUFFY")) { mod_dodge_bonus(4); } if (has_trait("WINGS_BAT")) { mod_dodge_bonus(-3); } if (has_trait("WINGS_BUTTERFLY")) { mod_dodge_bonus(-4); } if (str_max >= 16) {mod_dodge_bonus(-1);} // Penalty if we're huge else if (str_max <= 5) {mod_dodge_bonus(1);} // Bonus if we're small nv_cached = false; }