diff --git a/server/gameserver/mt/Grasp.cc b/server/gameserver/mt/Grasp.cc index 460dafce..9552578f 100644 --- a/server/gameserver/mt/Grasp.cc +++ b/server/gameserver/mt/Grasp.cc @@ -3,7 +3,7 @@ #include "mt/Grasp.h" IMPL_TABLE(mt::Grasp) -std::map> mt::Grasp::hero_id_lv_hash_; +std::map>> mt::Grasp::hero_id_lv_gun_hash_; namespace mt { @@ -35,11 +35,16 @@ namespace mt { } - std::set* Grasp::GetBuffs(int hero_id, int hero_lv) + std::set* Grasp::GetBuffs(int hero_id, int hero_lv, int gun_id) { long long key = a8::MakeInt64(hero_id, hero_lv); - auto itr = hero_id_lv_hash_.find(key); - return itr != hero_id_lv_hash_.end() ? &itr->second : nullptr; + auto itr = hero_id_lv_gun_hash_.find(key); + if (itr != hero_id_lv_gun_hash_.end()) { + if (std::get<0>(itr->second) == gun_id) { + return &std::get<1>(itr->second); + } + } + return nullptr; } } diff --git a/server/gameserver/mt/Grasp.h b/server/gameserver/mt/Grasp.h index ca9c10fe..0b047972 100644 --- a/server/gameserver/mt/Grasp.h +++ b/server/gameserver/mt/Grasp.h @@ -17,10 +17,10 @@ namespace mt void StaticPreInit(); - std::set* GetBuffs(int hero_id, int hero_lv); + std::set* GetBuffs(int hero_id, int hero_lv, int gun_id); private: - static std::map> hero_id_lv_hash_; + static std::map>> hero_id_lv_gun_hash_; std::set _add_buff_list; std::set _remove_buff_list;