44 lines
1.1 KiB
C++
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);
|
|
}
|
|
}
|