public async Task <GameData> PickupTreasure(string userId) { Player player = await GetPlayer(userId); if (player.CurrentRoomId != null) { Room room = await _roomsClient.GetRoomById((int)player.CurrentRoomId); if (room.MonsterId == null) { // Pickup treasure in the room room = await _roomsClient.PatchPickupTreasure((int)player.CurrentRoomId); // And give it to the player player = await _usersClient.PatchPickupTreasure(userId); return(new GameData() { Player = player, Room = room, Monster = null }); } else { throw new PermissionsDeniedException("Monster still alive!"); } } else { throw new NullReferenceException("Player has no room!"); } }