diff --git a/server/gameserver/ability.cc b/server/gameserver/ability.cc index 62630544..4b038205 100644 --- a/server/gameserver/ability.cc +++ b/server/gameserver/ability.cc @@ -539,7 +539,23 @@ void Ability::RecalcAttrRuduce(int attr_id) AttrRuduce* e = list_entry(pos, AttrRuduce, entry); - new_val += e->value; + switch (attr_id) { + case kHAT_Speed: + { + new_val = std::max(new_val, e->value); + } + break; + case kHVAT_Dmg: + { + new_val *= 1.0f - e->value; + } + break; + default: + { + new_val += e->value; + } + break; + } } std::get<0>(attr_dec_[attr_id]) = new_val; }