diff --git a/server/gameserver/buff.h b/server/gameserver/buff.h index 89b81d86..8442746c 100644 --- a/server/gameserver/buff.h +++ b/server/gameserver/buff.h @@ -34,6 +34,8 @@ class Buff list_head on_remove_contexts; a8::XTimerWp remover_timer; std::shared_ptr init_args; + float res_scale = 1; + long long res_scale_frameno = 0; Buff(); ~Buff(); diff --git a/server/gameserver/buff/callfunc.cc b/server/gameserver/buff/callfunc.cc index e999cbe7..91f71376 100644 --- a/server/gameserver/buff/callfunc.cc +++ b/server/gameserver/buff/callfunc.cc @@ -440,10 +440,20 @@ void CallFuncBuff::ProcLightCircle() } else if (kActiveDjsSkillTimerEvent == event) { context->in_human_infos.clear(); context->active_skill_meta = args->Get(0); + Buff* buff = owner->GetBuffByUniId(context->keep_buff_uniid); + if (buff) { + buff->res_scale = 2.0f; + buff->res_scale_frameno = room->GetFrameNo(); + } check_cb(); } else if (kDeactiveDjsSkillTimerEvent == event) { context->in_human_infos.clear(); context->active_skill_meta = nullptr; + Buff* buff = owner->GetBuffByUniId(context->keep_buff_uniid); + if (buff) { + buff->res_scale = 1.0f; + buff->res_scale_frameno = room->GetFrameNo(); + } check_cb(); } }, diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index f7065e0c..087f82ef 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -295,6 +295,9 @@ void Buff::FillMFBuff(cs::MFBuff* buff_pb) buff_pb->set_left_time(GetLeftTime()); buff_pb->set_lasting_time(GetLastingTime()); buff_pb->set_buff_uniid(buff_uniid); + if (res_scale_frameno > 0) { + buff_pb->set_res_scale(res_scale); + } if (owner->IsHuman() && (meta->buff_effect() == kBET_Driver || meta->buff_effect() == kBET_Passenger)) {