42 lines
1.1 KiB
C++
42 lines
1.1 KiB
C++
#include "precompile.h"
|
|
|
|
#include "smoke_mitask.h"
|
|
#include "room.h"
|
|
#include "player.h"
|
|
#include "metadata.h"
|
|
|
|
void SmokeMiTask::Check()
|
|
{
|
|
{
|
|
std::list<Player*> deleted_hums;
|
|
for (auto& hum : player_set) {
|
|
if (bomb_pos.Distance(hum->GetPos()) > gun_meta->i->bullet_rad() + hum->meta->i->radius()) {
|
|
hum->RemoveBuffByEffectId(kBET_HunLuan);
|
|
deleted_hums.push_back(hum);
|
|
}
|
|
}
|
|
for (auto& hum : deleted_hums) {
|
|
player_set.erase(hum);
|
|
}
|
|
}
|
|
room->TraversePlayerList
|
|
(a8::XParams(),
|
|
[this] (Player* hum, a8::XParams&) -> bool
|
|
{
|
|
if (bomb_pos.Distance(hum->GetPos()) < gun_meta->i->bullet_rad() + hum->meta->i->radius()) {
|
|
if (!hum->HasBuffEffect(kBET_HunLuan)) {
|
|
hum->AddBuff(nullptr, buff_meta, 1, nullptr);
|
|
player_set.insert(hum);
|
|
}
|
|
}
|
|
return true;
|
|
});
|
|
}
|
|
|
|
void SmokeMiTask::Done()
|
|
{
|
|
for (auto& hum : player_set) {
|
|
hum->RemoveBuffByEffectId(kBET_HunLuan);
|
|
}
|
|
}
|