game2006/server/gameserver/smoke_mitask.cc
aozhiwei 797b9f2fbd 1
2022-12-23 17:52:11 +08:00

44 lines
1.1 KiB
C++

#include "precompile.h"
#include "smoke_mitask.h"
#include "room.h"
#include "player.h"
#include "mt/Hero.h"
#include "mt/Equip.h"
void SmokeMiTask::Check()
{
{
std::list<Player*> deleted_hums;
for (auto& hum : player_set) {
if (bomb_pos.Distance2D2(hum->GetPos()) > gun_meta->_float_param1 + hum->meta->radius()) {
hum->RemoveBuffByEffectId(kBET_HunLuan);
deleted_hums.push_back(hum);
}
}
for (auto& hum : deleted_hums) {
player_set.erase(hum);
}
}
room->TraversePlayerList
(
[this] (Player* hum) -> bool
{
if (bomb_pos.Distance2D2(hum->GetPos()) < gun_meta->_float_param1 + hum->meta->radius()) {
if (!hum->HasBuffEffect(kBET_HunLuan)) {
hum->AddBuff(nullptr, buff_meta, nullptr);
player_set.insert(hum);
}
}
return true;
});
}
void SmokeMiTask::Done()
{
for (auto& hum : player_set) {
hum->RemoveBuffByEffectId(kBET_HunLuan);
}
}