From e4126e38ce9eb661c70008e55014e55507bddd7c Mon Sep 17 00:00:00 2001 From: Alexa <53471801+Alexa-RR@users.noreply.github.com> Date: Mon, 13 Jul 2026 01:16:54 +0300 Subject: [PATCH] feat: Inherit IsAGRoom property from source for proper cloning of RRO rooms; ensure compatibility with baked geometry loading --- .../API/Rooms/V2/RoomsModerationController.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/DorkNet.Server/Controllers/API/Rooms/V2/RoomsModerationController.cs b/DorkNet.Server/Controllers/API/Rooms/V2/RoomsModerationController.cs index 95127b3..a2aff13 100644 --- a/DorkNet.Server/Controllers/API/Rooms/V2/RoomsModerationController.cs +++ b/DorkNet.Server/Controllers/API/Rooms/V2/RoomsModerationController.cs @@ -1014,7 +1014,17 @@ public class RoomsModerationController(DorkNetDbContext db) : ControllerBase State = 0, Accessibility = source.Accessibility, SupportsLevelVoting = source.SupportsLevelVoting, - IsAGRoom = false, + // Inherit IsAGRoom from the source. This is REQUIRED for cloning a + // baked RRO room (RecCenter, the games): the client uses IsRRO to + // decide how to load the scene — RRO rooms load baked geometry from + // the client's own assets, non-RRO rooms load from a data blob. A + // non-RRO clone pointing at a baked RRO scene can't load ("Room + // Load faulted" → "Failed to copy room"). Marking the clone AG lets + // it load the same baked scene, and the RRO MakerPen overlay makes + // it editable. Safe for admin: the purge gate and "RR Original" + // badge both key on CreatorPlayerId == SystemAccountId, so a + // user-owned clone is still shown as Custom and stays purgeable. + IsAGRoom = source.IsAGRoom, IsDormRoom = false, CloningAllowed = source.CloningAllowed, SupportsVRLow = source.SupportsVRLow,