diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index d15dc6af..e28a9c84 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -162,7 +162,9 @@ void Room::Update(int delta_time) pair.second->Update(50); } for (auto& pair : task_hash_) { - pair.second->Update(50); + if (!pair.second->IsDone()) { + pair.second->Update(50); + } } #ifdef DEBUG1 end_tick = a8::XGetTickCount(); diff --git a/server/gameserver/virtualbullet.cc b/server/gameserver/virtualbullet.cc index a30584e8..49806bd3 100644 --- a/server/gameserver/virtualbullet.cc +++ b/server/gameserver/virtualbullet.cc @@ -89,7 +89,7 @@ void VirtualBullet::Update(int delta_time) bool VirtualBullet::IsDone() { - return false; + return later_removed_; } void VirtualBullet::Check(float distance) @@ -271,7 +271,7 @@ void VirtualBullet::OnHit(std::set& objects) void VirtualBullet::Init() { - + room->grid_service->GetAllCellsByXy(room, GetPos().x, GetPos().y, grid_list_); } bool VirtualBullet::TestCollision(Room* room, Entity* b)