From 474ca0365085906b7aed5f461d4d5995059b0e00 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 9 Jan 2024 15:54:56 +0800 Subject: [PATCH] 1 --- server/gameserver/ability.cc | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/server/gameserver/ability.cc b/server/gameserver/ability.cc index ad0fe228..b77e3b62 100644 --- a/server/gameserver/ability.cc +++ b/server/gameserver/ability.cc @@ -465,14 +465,25 @@ int Ability::GetSwitchTimes(int type) float Ability::GetAttr(int attr_id) { float val = 0.0f; - if (IsValidHumanAttr(attr_id)) { - val = std::get<0>(attr_add_[attr_id]) + std::get<0>(attr_dec_[attr_id]); - } else if (IsValidHumanVirtualAttr(attr_id)) { - val = std::get<0>(vattr_add_[attr_id - kHVAT_Begin]) + std::get<0>(vattr_dec_[attr_id - kHVAT_Begin]); + if (!HasAttr(attr_id)) { + return 0.0f; } if (IsMulCalc(attr_id)) { - if (HasAttr(attr_id)) { - val = 1 - val; + if (IsValidHumanAttr(attr_id)) { + val = std::get<0>(attr_add_[attr_id]) * + std::get<0>(attr_dec_[attr_id]); + } else if (IsValidHumanVirtualAttr(attr_id)) { + val = std::get<0>(vattr_add_[attr_id - kHVAT_Begin]) * + std::get<0>(vattr_dec_[attr_id - kHVAT_Begin]); + } + val = 1.0f - val; + } else { + if (IsValidHumanAttr(attr_id)) { + val = std::get<0>(attr_add_[attr_id]) + + std::get<0>(attr_dec_[attr_id]); + } else if (IsValidHumanVirtualAttr(attr_id)) { + val = std::get<0>(vattr_add_[attr_id - kHVAT_Begin]) + + std::get<0>(vattr_dec_[attr_id - kHVAT_Begin]); } } return val;