diff --git a/server/gameserver/mt/Grasp.cc b/server/gameserver/mt/Grasp.cc index ad75ee06..0131c04a 100644 --- a/server/gameserver/mt/Grasp.cc +++ b/server/gameserver/mt/Grasp.cc @@ -62,23 +62,38 @@ namespace mt } } }); + auto merge_func = + [] (mt::GraspBuffs* a, mt::GraspBuffs* b) + { + + }; for (auto& pair : hero_weapon_hash_) { if (!pair.second.empty()) { - std::vector> buffs; + std::vector> tuples; { for (auto& pair2 : pair.second) { - buffs.push_back(std::make_tuple(pair2.first, &pair2.second)); + tuples.push_back(std::make_tuple(pair2.first, &pair2.second)); } } -#if 0 - auto& parent_buffs = pair.second[i]; - for (size_t ii = 0; ii < i; ++ii) { - auto& child_buffs = pair.second[ii]; - for (size_t iii = 0; iii < parent_buffs.size(); ++iii) { - + std::sort + (tuples.begin(), tuples.end(), + [] (std::tuple& a, std::tuple& b) -> bool + { + if (std::get<0>(a) == std::get<0>(b)) { + abort(); + } else { + return std::get<0>(a) > std::get<0>(b); + } + }); + for (size_t i = tuples.size() - 1; i >= 0; ++i) { + int lv = std::get<0>(tuples[i]); + auto buffs = std::get<1>(tuples[i]); + for (size_t ii = 0; ii < tuples.size(); ++ii) { + if (std::get<0>(tuples[ii]) < lv) { + merge_func(buffs, std::get<1>(tuples[ii])); + } } } -#endif } } }