From a5d5be071ead1df1813d0fca4e2cf440678d9e0b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 8 Jul 2021 09:04:39 +0000 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index fcb1a46..96d727f 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -186,6 +186,24 @@ void Creature::AddBuff(Creature* caster, int skill_lv, MetaData::Skill* buff_skill_meta) { + if (buff_meta->i->buff_interval() > 0) { + if (buff_interval_hash_.find(buff_meta->i->buff_id()) != buff_interval_hash_.end()) { + return; + } + buff_interval_hash_[buff_meta->i->buff_id()] = room->GetFrameNo(); + room->xtimer.AddDeadLineTimerAndAttach + ( + buff_meta->i->buff_interval() / FRAME_RATE_MS, + a8::XParams() + .SetSender(this) + .SetParam1(buff_meta->i->buff_id()), + [] (const a8::XParams& param) + { + Creature* c = (Creature*)param.sender.GetUserData(); + c->buff_interval_hash_.erase(param.param1); + }, + &xtimer_attacher.timer_list_); + } if (buff_meta->i->coexist_num() > 0){ if (GetBuffNum(buff_meta->i->buff_id()) >= buff_meta->i->coexist_num()) { return;