RoomAPI
RoomAPI gives you access to the game's server-side rooms. Rooms are returned as object because IVroom is a game type that can't be referenced directly from a mod — just pass them back into RoomAPI methods and everything works.
Room types
The game has five room types:
GetRoomName() | GetRoomType() | Description |
|---|---|---|
VWaitingRoom | Waiting | Lobby before a run |
MaintenanceRoom | Maintenance | Between-run maintenance phase |
DeathMatchRoom | DeathMatch | PvP arena |
| (game room) | Game | Active dungeon run |
| — | Invalid | Not assigned |
Getting rooms
GetCurrentRoom()
public static object? GetCurrentRoom()
Returns the first playable room. This is the room the local player is actively in.
var room = RoomAPI.GetCurrentRoom();
if (room == null) return;
MelonLogger.Msg($"In {RoomAPI.GetRoomName(room)}, day {RoomAPI.GetCurrentGameDay(room)}");
GetAllRooms()
public static object[] GetAllRooms()
All rooms currently tracked by VRoomManager.
GetAllPlayableRooms()
public static List<object> GetAllPlayableRooms()
Filtered to rooms where IsPlayable() returns true.
GetRoom()
public static object? GetRoom(long roomID)
Look up a specific room by its ID.
GetAllRoomIDs()
public static List<long> GetAllRoomIDs()
RoomExists()
public static bool RoomExists(long roomID)
Room identity
GetRoomID()
public static long GetRoomID(object? room)
GetRoomMasterID()
public static int GetRoomMasterID(object? room)
GetRoomName()
public static string GetRoomName(object? room)
Returns the runtime class name: VWaitingRoom, MaintenanceRoom, DeathMatchRoom, etc.
GetRoomType()
public static object? GetRoomType(object? room)
Returns the VRoomType enum value as object. Compare with .ToString():
string type = RoomAPI.GetRoomType(room)?.ToString();
if (type == "Waiting")
MelonLogger.Msg("We are in the lobby");
GetRoomProperty()
public static object? GetRoomProperty(object? room)
Returns the IVRoomProperty object. Use ReflectionHelper to read SessionID, vRoomType, or TargetCurrency from it.
Room state
IsRoomPlayable()
public static bool IsRoomPlayable(object? room)
GetCurrentGameDay()
public static int GetCurrentGameDay(object? room)
GetCurrentSessionCycle()
public static int GetCurrentSessionCycle(object? room)
GetCurrentTick()
public static long GetCurrentTick(object? room)
GetMemberCount()
public static int GetMemberCount(object? room)
GetDeadPlayerCount()
public static int GetDeadPlayerCount(object? room)
IsAllPlayerDead()
public static bool IsAllPlayerDead(object? room)
IsAllPlayerWastedOrDead()
public static bool IsAllPlayerWastedOrDead(object? room)
Players and actors
GetRoomPlayers()
public static List<object> GetRoomPlayers(object? room)
Server-side VPlayer objects from _vPlayerDict. Use ReflectionHelper to read fields on them, or pass them to ActorAPI.
GetRoomActors()
public static List<object> GetRoomActors(object? room)
All actors from _vActorDict — players, monsters, loot objects, etc.
GetRoomLevelObjects()
public static IDictionary? GetRoomLevelObjects(object? room)
Currency
GetRoomCurrency()
public static int GetRoomCurrency(object? room)
GetContaRecoveryRate()
public static long GetContaRecoveryRate(object? room)
Network helpers
GetRoomPlayerCount()
public static int GetRoomPlayerCount(object? room)
GetRoomPlayerDictionary()
public static IDictionary? GetRoomPlayerDictionary(object? room)
Full example
public override void OnUpdate()
{
if (!Input.GetKeyDown(KeyCode.F2)) return;
var rooms = RoomAPI.GetAllRooms();
MelonLogger.Msg($"--- {rooms.Length} rooms ---");
foreach (var room in rooms)
{
string name = RoomAPI.GetRoomName(room);
string type = RoomAPI.GetRoomType(room)?.ToString() ?? "?";
long id = RoomAPI.GetRoomID(room);
int members = RoomAPI.GetMemberCount(room);
int day = RoomAPI.GetCurrentGameDay(room);
bool playable = RoomAPI.IsRoomPlayable(room);
MelonLogger.Msg($"[{type}] {name} id={id} members={members} day={day} playable={playable}");
}
}
All methods return safe defaults (null, 0, empty collections) when passed null. Always null-check GetCurrentRoom() before use.
See also
- ActorAPI — monsters, players, and loot inside a room
- ServerNetworkAPI — session and connection info