diff --git a/server/gameserver/ability.cc b/server/gameserver/ability.cc index 316af149..f015d8d1 100644 --- a/server/gameserver/ability.cc +++ b/server/gameserver/ability.cc @@ -464,12 +464,16 @@ int Ability::GetSwitchTimes(int type) float Ability::GetAttr(int attr_id) { + float val = 0.0f; if (IsValidHumanAttr(attr_id)) { - return std::get<0>(attr_add_[attr_id]) + std::get<0>(attr_dec_[attr_id]); + val = std::get<0>(attr_add_[attr_id]) + std::get<0>(attr_dec_[attr_id]); } else if (IsValidHumanVirtualAttr(attr_id)) { - return std::get<0>(vattr_add_[attr_id - kHVAT_Begin]) + std::get<0>(vattr_dec_[attr_id - kHVAT_Begin]); + val = std::get<0>(vattr_add_[attr_id - kHVAT_Begin]) + std::get<0>(vattr_dec_[attr_id - kHVAT_Begin]); } - return 0.0f; + if (IsMulCalc(attr_id)) { + val = 1 - val; + } + return val; } bool Ability::HasAttr(int attr_id)