From 1cbc1b2d7496df99486a28f9949e3d307aa6c892 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 26 Oct 2022 19:46:41 +0800 Subject: [PATCH] 1 --- server/gameserver/buff.cc | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index 1d930a6d..103463fe 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -1386,5 +1386,34 @@ void Buff::ProcSputteringFunc(Bullet* bullet) void Buff::ProcIntervalRangeAddBuffFunc() { - + owner->room->xtimer.AddRepeatTimerAndAttach + ( + meta->param4 / FRAME_RATE_MS, + a8::XParams() + .SetSender(this), + [] (const a8::XParams& param) + { + Buff* buff = (Buff*)param.sender.GetUserData(); + buff->owner->TraverseCreatures + ( + [buff] (Creature* c, bool& stop) + { + if (c->dead) { + return; + } + if (buff->owner->GetUniId() == c->GetUniId()) { + return; + } + if (!buff->GetCaster().Get()) { + return; + } + if (buff->GetCaster().Get()->team_id != c->team_id) { + if (buff->owner->GetPos().Distance(c->GetPos()) < buff->meta->param2) { + c->TryAddBuff(buff->GetCaster().Get(), buff->meta->int_param3, buff->skill_meta); + } + } + }); + }, + &xtimer_attacher.timer_list_ + ); }