diff --git a/common/database_instances.cpp b/common/database_instances.cpp index 27422ed2c..4dd21c754 100644 --- a/common/database_instances.cpp +++ b/common/database_instances.cpp @@ -129,6 +129,8 @@ bool Database::CreateInstance(uint16 instance_id, uint32 zone_id, uint32 version e.start_time = std::time(nullptr); e.duration = duration; + RespawnTimesRepository::ClearInstanceTimers(*this, e.id); + return InstanceListRepository::InsertOne(*this, e).id; } diff --git a/common/repositories/respawn_times_repository.h b/common/repositories/respawn_times_repository.h index 5eada10f7..05c321f28 100644 --- a/common/repositories/respawn_times_repository.h +++ b/common/repositories/respawn_times_repository.h @@ -77,6 +77,11 @@ public: return ((r.start + r.duration) - time_seconds); } + + static void ClearInstanceTimers(Database &db, int32_t id) + { + RespawnTimesRepository::DeleteWhere(db, fmt::format("`instance_id` = {}", id)); + } }; #endif //EQEMU_RESPAWN_TIMES_REPOSITORY_H