diff --git a/server/gameserver/ability.cc b/server/gameserver/ability.cc index 266b621a..ec54f3e5 100644 --- a/server/gameserver/ability.cc +++ b/server/gameserver/ability.cc @@ -248,10 +248,9 @@ void Ability::IncImmuneTimes(int tag) { auto itr = immune_tags_.find(tag); if (itr != immune_tags_.end()) { - --itr->second; - if (itr->second <= 0) { - immune_tags_.erase(itr); - } + ++itr->second; + } else { + immune_tags_[tag] = 1; } } @@ -259,9 +258,10 @@ void Ability::DecImmuneTimes(int tag) { auto itr = immune_tags_.find(tag); if (itr != immune_tags_.end()) { - ++itr->second; - } else { - immune_tags_[tag] = 1; + --itr->second; + if (itr->second <= 0) { + immune_tags_.erase(itr); + } } } diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index 5a71e413..2fb50619 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -801,6 +801,7 @@ void Buff::ProcDisperse() for (int buff_uniid : del_buffs) { owner->RemoveBuffByUniId(buff_uniid); } + owner->TryAddBuff(owner, meta->int_param2); } void Buff::CalcPassengerShotOffset()