diff --git a/server/gameserver/hero_agent.cc b/server/gameserver/hero_agent.cc index 0039ecf7..1a037cf0 100644 --- a/server/gameserver/hero_agent.cc +++ b/server/gameserver/hero_agent.cc @@ -1466,6 +1466,9 @@ bool HeroAgent::CanThrowItem(int slot) if (owner_->IsCar()) { return false; } + if (owner_->room->GetFrameNo() - last_throw_item_frameno_ < SERVER_FRAME_RATE * 5) { + return false; + } if (owner_->HasBuffEffect(kBET_Jump) || owner_->HasBuffEffect(kBET_Fly)) { return false; @@ -1550,6 +1553,7 @@ behaviac::EBTStatus HeroAgent::ThrowItem(int slot) bomb_dir, fly_distance, 0); + last_throw_item_frameno_ = owner_->room->GetFrameNo(); return behaviac::BT_SUCCESS; } } diff --git a/server/gameserver/hero_agent.h b/server/gameserver/hero_agent.h index 986f5fa5..00245058 100644 --- a/server/gameserver/hero_agent.h +++ b/server/gameserver/hero_agent.h @@ -176,5 +176,6 @@ private: int bullet_angle_offset_min_ = 0; int bullet_angle_offset_max_ = 0; long long last_try_search_enemy_frameno_ = 0; + long long last_throw_item_frameno_ = 0; std::map abandon_pickup_hash_; };