diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index 57a8b528..b76d3e23 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -1007,21 +1007,21 @@ void Buff::ProcMachineGun() { owner->room->xtimer.ModifyTimer (remover_timer, - skill_meta->number_meta->int_time / FRAME_RATE_MS); + skill_meta->number_meta->float_time * 1000 / FRAME_RATE_MS); } break; case MAGIC_HJHX: { owner->room->xtimer.ModifyTimer (remover_timer, - skill_meta->number_meta->int_time / FRAME_RATE_MS); + skill_meta->number_meta->float_time * 1000 / FRAME_RATE_MS); } break; case MAGIC_FG: { owner->room->xtimer.ModifyTimer (remover_timer, - skill_meta->number_meta->int_time / FRAME_RATE_MS); + skill_meta->number_meta->float_time * 1000 / FRAME_RATE_MS); } break; default: diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index bd9b60e3..90dd1a81 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -81,8 +81,9 @@ void Bullet::OnHit(std::set& objects) if (IsFlyHook()) { if (sender.Get() && !sender.Get()->dead) { for (auto& target : objects) { - if (target->IsCreature(room) && - !((Creature*)target)->IsCar()) { + if ( + !(target->IsCreature(room) && + ((Creature*)target)->IsCar())) { ProcFlyHook(target); } break; diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index 9a3afa3b..4eda3586 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -1755,6 +1755,14 @@ namespace MetaData float_probability = a8::XValue(tmp_str).GetDouble() / 100; } + int_time = a8::XValue(pb->time()); + float_time = a8::XValue(pb->time()).GetDouble(); + if (pb->time().find('%') != std::string::npos) { + std::string tmp_str = pb->time(); + a8::ReplaceString(tmp_str, "%", ""); + float_time = a8::XValue(tmp_str).GetDouble() / 100; + } + int_cd = a8::XValue(pb->cd()); float_cd = a8::XValue(pb->cd()).GetDouble(); if (pb->cd().find('%') != std::string::npos) {