diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 28447f04..e7db6f8e 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -631,11 +631,22 @@ void Bullet::AddGunBuff() } else { sender.Get()->context_ability = nullptr; } - const mt::Buff * buff_meta = mt::Buff::GetById(gun_meta->buffid()); + int real_buff_id = gun_meta->buffid(); + if (spec_gun_buff_id) { + real_buff_id = spec_gun_buff_id; + } + const mt::Buff * buff_meta = mt::Buff::GetById(real_buff_id); if (buff_meta) { - sender.Get()->AddBuff(sender.Get(), - buff_meta - ); + auto buff_vars = std::make_shared>(); + buff_vars->push_back(GetPos().GetX()); + buff_vars->push_back(GetPos().GetY()); + buff_vars->push_back(GetPos().GetZ()); + sender.Get()->TryAddBuff(sender.Get(), + real_buff_id, + skill_meta, + nullptr, + buff_vars + ); } sender.Get()->context_dir = old_context_dir; sender.Get()->context_pos = old_context_pos;