From fc90b604cc6b783c38ce5dcdd5bf502a7a9b7e3a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 31 Jul 2020 09:59:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BB=B6=E8=BF=9Fbuff?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/human.cc | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 5ade276..0366eda 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -3059,6 +3059,30 @@ void Human::ProcBuffEffect(Human* caster, Buff* buff) 0); } break; + case kBET_DelayAddBuff: + { + room->xtimer.AddDeadLineTimerAndAttach + ( + SERVER_FRAME_RATE * buff->meta->param1 / 1000.0f, + a8::XParams() + .SetSender(this) + .SetParam1(caster) + .SetParam2(buff->meta->param2) + .SetParam3(caster->skill_meta_), + [] (const a8::XParams& param) + { + Human* hum = (Human*)param.sender.GetUserData(); + Human* caster = (Human*)param.param1.GetUserData(); + int buff_id = param.param2; + MetaData::Skill* skill = (MetaData::Skill*)param.param3.GetUserData(); + MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id); + if (buff_meta && skill == caster->skill_meta_ && caster) { + hum->AddBuff(caster, buff_meta, caster->GetSkillLv(), skill); + } + }, + &buff->xtimer_attacher.timer_list_); + } + break; default: { }