diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index 0d1dfee..8c0ab7d 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -76,14 +76,35 @@ void Buff::InternalTimerAddBuff(Creature* caster) a8::XParams param; param.SetSender(this); param.SetParam1(caster_state); - param.SetParam2(meta); + param.SetParam2(meta->i->buff_param2()); param.SetParam3(caster->CurrentSkill() ? caster->CurrentSkill()->meta : nullptr); - owner->room->xtimer.AddRepeatTimerAndAttach - ( - meta->param1 / FRAME_RATE_MS, - param, - timer_func, - &xtimer_attacher.timer_list_, - timer_after_func); + switch (meta->i->buff_effect() ) { + case kBET_DelayAddBuff: + { + owner->room->xtimer.AddDeadLineTimerAndAttach + ( + meta->param1 * SERVER_FRAME_RATE, + param, + timer_func, + &xtimer_attacher.timer_list_, + timer_after_func); + } + break; + case kBET_IntervalAddBuff: + { + owner->room->xtimer.AddRepeatTimerAndAttach + ( + meta->param1 / FRAME_RATE_MS, + param, + timer_func, + &xtimer_attacher.timer_list_, + timer_after_func); + } + break; + default: + { + } + break; + } }