1
This commit is contained in:
parent
7cd76949bf
commit
0b84b9cd37
@ -224,17 +224,41 @@ void Creature::MustBeAddBuff(Creature* caster, int buff_id)
|
||||
|
||||
void Creature::RemoveBuffById(int buff_id)
|
||||
{
|
||||
std::vector<MetaData::Buff*> removed_buffs;
|
||||
for (auto itr = buff_list_.begin(); itr != buff_list_.end(); ++itr) {
|
||||
const Buff& buff = *itr;
|
||||
if (buff.meta->i->buff_id() == buff_id) {
|
||||
if (buff_effect_[buff.meta->i->buff_effect()] == &(*itr)) {
|
||||
buff_effect_[buff.meta->i->buff_effect()] = nullptr;
|
||||
}
|
||||
removed_buffs.push_back(buff.meta);
|
||||
OnBuffRemove(buff);
|
||||
buff_list_.erase(itr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (MetaData::Buff* buff_meta : removed_buffs) {
|
||||
for (const auto& tuple : buff_meta->post_remove_action) {
|
||||
switch (std::get<0>(tuple)) {
|
||||
case kRemoveBuffByIdAction:
|
||||
{
|
||||
for (int buff_id :std::get<1>(tuple)) {
|
||||
RemoveBuffById(buff_id);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case kRemoveBuffByEffectAction:
|
||||
{
|
||||
for (int buff_effect :std::get<1>(tuple)) {
|
||||
RemoveBuffByEffectId(buff_effect);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
RecalcBuffAttr();
|
||||
#ifdef DEBUG
|
||||
SendDebugMsg(a8::Format("移除buff_id:%d",
|
||||
@ -283,8 +307,9 @@ void Creature::OnBuffRemove(const Buff& buff)
|
||||
void Creature::RemoveBuffByEffectId(int buff_effect_id)
|
||||
{
|
||||
Buff* buff = GetBuffByEffectId(buff_effect_id);
|
||||
if (buff) {
|
||||
while (buff) {
|
||||
RemoveBuffById(buff->meta->i->buff_id());
|
||||
buff = GetBuffByEffectId(buff_effect_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user