From 6d4aa34c9e27346a2c1ed3b9f2af258644681bd6 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sun, 2 Apr 2023 17:18:25 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/callfunc.cc | 8 +++----- server/gameserver/creature.cc | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/server/gameserver/buff/callfunc.cc b/server/gameserver/buff/callfunc.cc index 24494b1f..09bc444d 100644 --- a/server/gameserver/buff/callfunc.cc +++ b/server/gameserver/buff/callfunc.cc @@ -745,9 +745,7 @@ void CallFuncBuff::SummonObstacleSpecDistance() void CallFuncBuff::ClearSummonObstacle() { -#if 0 - int hero_id = meta->_int_buff_param2; - float hero_num = meta->GetBuffParam3(this); - owner->RemoveSurplusHero(hero_id, hero_num); -#endif + int id = meta->_int_buff_param2; + float num = meta->GetBuffParam3(this); + owner->RemoveSurplusObstacle(id, num); } diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 73a19a19..0247c003 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -3074,3 +3074,23 @@ std::shared_ptr> Creature::CalcReporterList(const mt::Equip* weapo } return p; } + +void Creature::RemoveSurplusObstacle(int id, int num) +{ + #if 0 + if (slave_things_.size() >= num && num > 0) { + std::vector matched_things; + for (auto& itr : slave_things_) { + if (std::get<0>(itr) == buff_id && + std::get<1>(itr).Get() && + std::get<1>(itr).Get()->meta->thing_id() == id) { + matched_things.push_back(std::get<1>(itr)); + } + } + while (matched_things.size() > num) { + matched_things[0].Get()->Destory(); + matched_things.erase(matched_things.begin()); + } + } + #endif +}