35 lines
757 B
C++
35 lines
757 B
C++
#include "precompile.h"
|
|
|
|
#include "buff/disperse.h"
|
|
|
|
#include "creature.h"
|
|
|
|
#include "mt/Buff.h"
|
|
|
|
void DisperseBuff::Activate()
|
|
{
|
|
std::vector<int> del_buffs;
|
|
owner->TraverseBuff
|
|
(
|
|
[this, &del_buffs] (Buff* buff, bool& stop)
|
|
{
|
|
for (int tag : meta->_buff_param1_int_set) {
|
|
if (buff->meta->_tags.find(tag) != buff->meta->_tags.end()) {
|
|
del_buffs.push_back(buff->buff_uniid);
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
for (int buff_uniid : del_buffs) {
|
|
owner->RemoveBuffByUniId(buff_uniid);
|
|
}
|
|
if (!del_buffs.empty()) {
|
|
owner->TryAddBuff(owner, meta->_int_buff_param2);
|
|
}
|
|
}
|
|
|
|
void DisperseBuff::Deactivate()
|
|
{
|
|
|
|
}
|