From 325a27806de05d2efeef44530fea77408b89c60c Mon Sep 17 00:00:00 2001 From: "J. Tyne" Date: Fri, 15 Feb 2013 16:45:16 +0000 Subject: [PATCH] Fewer calculations in unit::resistance_against()... ...for the common case of no resistance abilities. --- src/unit.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/unit.cpp b/src/unit.cpp index 78d48c9ea8e..b25e13f8917 100644 --- a/src/unit.cpp +++ b/src/unit.cpp @@ -2289,26 +2289,27 @@ bool unit::resistance_filter_matches(const config& cfg, bool attacker, const std int unit::resistance_against(const std::string& damage_name,bool attacker,const map_location& loc) const { - int res = 0; + int res = 100; if (const config &resistance = cfg_.child("resistance")) { - res = 100 - resistance[damage_name].to_int(100); + res = resistance[damage_name].to_int(100); } unit_ability_list resistance_abilities = get_abilities("resistance",loc); for (unit_ability_list::iterator i = resistance_abilities.begin(); i != resistance_abilities.end();) { - if(!resistance_filter_matches(*i->first, attacker, damage_name, res)) { + if(!resistance_filter_matches(*i->first, attacker, damage_name, 100-res)) { i = resistance_abilities.erase(i); } else { ++i; } } if(!resistance_abilities.empty()) { - unit_abilities::effect resist_effect(resistance_abilities,res,false); + unit_abilities::effect resist_effect(resistance_abilities, 100-res, false); - res = std::min(resist_effect.get_composite_value(),resistance_abilities.highest("max_value").first); + res = 100 - std::min(resist_effect.get_composite_value(), + resistance_abilities.highest("max_value").first); } - return 100 - res; + return res; } utils::string_map unit::get_base_resistances() const