mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-25 23:18:44 -07:00
feat: update PrivateInstanceService to include baseName in instance updates
This commit is contained in:
@@ -198,6 +198,32 @@ public class AvatarGiftsController(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(gift.EquipmentPrefabName) ||
|
||||||
|
!string.IsNullOrWhiteSpace(gift.EquipmentModificationGuid))
|
||||||
|
{
|
||||||
|
var itemSlug = !string.IsNullOrWhiteSpace(gift.EquipmentModificationGuid)
|
||||||
|
? StoreService.EquipmentSkinSlug(gift.EquipmentPrefabName, gift.EquipmentModificationGuid)
|
||||||
|
: gift.EquipmentPrefabName;
|
||||||
|
if (!string.IsNullOrWhiteSpace(itemSlug))
|
||||||
|
{
|
||||||
|
var row = await db.PlayerInventory
|
||||||
|
.FirstOrDefaultAsync(p => p.PlayerId == pid && p.ItemSlug == itemSlug);
|
||||||
|
if (row is null)
|
||||||
|
{
|
||||||
|
db.PlayerInventory.Add(new PlayerInventoryEntity
|
||||||
|
{
|
||||||
|
PlayerId = pid,
|
||||||
|
ItemSlug = itemSlug,
|
||||||
|
Quantity = 1,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
row.Quantity = Math.Max(row.Quantity, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Apply currency / XP / level rewards bundled with the gift.
|
// Apply currency / XP / level rewards bundled with the gift.
|
||||||
// The previous implementation only handled the avatar item path,
|
// The previous implementation only handled the avatar item path,
|
||||||
// so token gifts from the admin SPA marked themselves consumed
|
// so token gifts from the admin SPA marked themselves consumed
|
||||||
|
|||||||
@@ -302,9 +302,10 @@ public class MessagesController(
|
|||||||
// PRIVATE instance: the sender created an invite-only match
|
// PRIVATE instance: the sender created an invite-only match
|
||||||
// (via /goto/room/X?CreatePrivateInstance=1). The
|
// (via /goto/room/X?CreatePrivateInstance=1). The
|
||||||
// roomInstanceId the watch sends maps to a registered
|
// roomInstanceId the watch sends maps to a registered
|
||||||
// PrivateInstance and only the owner is allowed to invite
|
// PrivateInstance and the owner or someone already inside
|
||||||
// anyone in. Enforces our private-match access control —
|
// that exact live instance can invite. That keeps access
|
||||||
// no random can DM their way past the invite list.
|
// control intact while still letting a guest in someone
|
||||||
|
// else's dorm invite a friend from the in-game watch.
|
||||||
//
|
//
|
||||||
// PUBLIC room: the sender is in a public room / a dorm /
|
// PUBLIC room: the sender is in a public room / a dorm /
|
||||||
// any non-private room. RoomInstanceId is just
|
// any non-private room. RoomInstanceId is just
|
||||||
@@ -319,9 +320,20 @@ public class MessagesController(
|
|||||||
var inst = await privateInstances.GetAsync(roomInstanceId);
|
var inst = await privateInstances.GetAsync(roomInstanceId);
|
||||||
if (inst is not null)
|
if (inst is not null)
|
||||||
{
|
{
|
||||||
if (inst.OwnerPlayerId != Me) return Forbid();
|
var senderPresence = presence.GetRoom(Me);
|
||||||
|
var senderIsInInstance = senderPresence is not null
|
||||||
|
&& senderPresence.RoomInstanceId == roomInstanceId;
|
||||||
|
if (inst.OwnerPlayerId != Me && !senderIsInInstance)
|
||||||
|
{
|
||||||
|
logger.LogWarning(
|
||||||
|
"[invite] from={From} tried to invite to private instance={Instance} ownedBy={Owner} while presenceInstance={PresenceInstance}; rejecting",
|
||||||
|
Me, roomInstanceId, inst.OwnerPlayerId, senderPresence?.RoomInstanceId);
|
||||||
|
return Forbid();
|
||||||
|
}
|
||||||
resolvedRoomId = inst.RoomId;
|
resolvedRoomId = inst.RoomId;
|
||||||
roomName = await db.Rooms
|
roomName = !string.IsNullOrWhiteSpace(inst.Name)
|
||||||
|
? inst.Name
|
||||||
|
: await db.Rooms
|
||||||
.Where(r => r.Id == inst.RoomId)
|
.Where(r => r.Id == inst.RoomId)
|
||||||
.Select(r => r.Name)
|
.Select(r => r.Name)
|
||||||
.FirstOrDefaultAsync() ?? "Private match";
|
.FirstOrDefaultAsync() ?? "Private match";
|
||||||
|
|||||||
@@ -371,6 +371,9 @@ public class RoomsController(
|
|||||||
[HttpPost("api/rooms/v4/saveData")]
|
[HttpPost("api/rooms/v4/saveData")]
|
||||||
[Authorize]
|
[Authorize]
|
||||||
public async Task<IActionResult> SaveData([FromBody] SaveRoomSceneRequest body)
|
public async Task<IActionResult> SaveData([FromBody] SaveRoomSceneRequest body)
|
||||||
|
=> await SaveDataCore(body);
|
||||||
|
|
||||||
|
private async Task<IActionResult> SaveDataCore(SaveRoomSceneRequest body, long? routeRoomId = null)
|
||||||
{
|
{
|
||||||
var pid = this.RequireCurrentPlayerId();
|
var pid = this.RequireCurrentPlayerId();
|
||||||
|
|
||||||
@@ -381,7 +384,7 @@ public class RoomsController(
|
|||||||
// on every /goto). This is the only signal we have without a
|
// on every /goto). This is the only signal we have without a
|
||||||
// RoomId on the request body.
|
// RoomId on the request body.
|
||||||
var current = presence.GetRoom(pid);
|
var current = presence.GetRoom(pid);
|
||||||
if (current is null)
|
if (current is null && routeRoomId is null)
|
||||||
{
|
{
|
||||||
// No active room — without it we can't pick a target row.
|
// No active room — without it we can't pick a target row.
|
||||||
// Return a degenerate RoomScene so the deserializer doesn't
|
// Return a degenerate RoomScene so the deserializer doesn't
|
||||||
@@ -401,11 +404,18 @@ public class RoomsController(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var roomId = current.RoomId;
|
var roomId = routeRoomId ?? current!.RoomId;
|
||||||
var room = await rooms.GetByIdAsync(roomId);
|
var room = await rooms.GetByIdAsync(roomId);
|
||||||
if (room is null) return NotFound(new { error = "room_not_found" });
|
if (room is null) return NotFound(new { error = "room_not_found" });
|
||||||
|
|
||||||
var newBlob = body.RoomDataFilename?.Trim() ?? string.Empty;
|
var newBlob = body.EffectiveRoomDataFilename.Trim();
|
||||||
|
if (string.IsNullOrWhiteSpace(newBlob))
|
||||||
|
{
|
||||||
|
logger.LogWarning(
|
||||||
|
"[rooms-save] missing blob filename player={PlayerId} room={RoomId} requestedScene={RequestedSceneId} routeRoom={RouteRoomId}",
|
||||||
|
pid, roomId, body.RoomSceneId, routeRoomId);
|
||||||
|
return BadRequest(new { error = "missing_room_data_filename" });
|
||||||
|
}
|
||||||
var savedAt = DateTime.UtcNow;
|
var savedAt = DateTime.UtcNow;
|
||||||
|
|
||||||
// Multi-scene rooms have a RoomScenes row per scene. The 2020
|
// Multi-scene rooms have a RoomScenes row per scene. The 2020
|
||||||
@@ -494,30 +504,35 @@ public class RoomsController(
|
|||||||
logger.LogInformation(
|
logger.LogInformation(
|
||||||
"[rooms-save] saveData player={PlayerId} room={RoomId} requestedScene={RequestedSceneId} savedScene={SavedSceneId} blob={BlobName} sceneRow={SceneRowFound} scenes={SceneCount}",
|
"[rooms-save] saveData player={PlayerId} room={RoomId} requestedScene={RequestedSceneId} savedScene={SavedSceneId} blob={BlobName} sceneRow={SceneRowFound} scenes={SceneCount}",
|
||||||
pid, roomId, body.RoomSceneId, savedSceneId, newBlob, sceneRow is not null, sceneRowsForRoom.Count);
|
pid, roomId, body.RoomSceneId, savedSceneId, newBlob, sceneRow is not null, sceneRowsForRoom.Count);
|
||||||
var playersInInstance = onlinePresence.OnlinePlayerIds()
|
var activeInstanceId = current is not null && current.RoomId == roomId
|
||||||
|
? current.RoomInstanceId
|
||||||
|
: 0L;
|
||||||
|
var playersInInstance = activeInstanceId == 0
|
||||||
|
? new[] { pid }
|
||||||
|
: onlinePresence.OnlinePlayerIds()
|
||||||
.Where(playerId =>
|
.Where(playerId =>
|
||||||
{
|
{
|
||||||
var playerRoom = presence.GetRoom(playerId);
|
var playerRoom = presence.GetRoom(playerId);
|
||||||
return playerRoom is not null
|
return playerRoom is not null
|
||||||
&& playerRoom.RoomId == roomId
|
&& playerRoom.RoomId == roomId
|
||||||
&& playerRoom.RoomInstanceId == current.RoomInstanceId;
|
&& playerRoom.RoomInstanceId == activeInstanceId;
|
||||||
})
|
})
|
||||||
.Append(pid)
|
.Append(pid)
|
||||||
.Distinct()
|
.Distinct()
|
||||||
.ToArray();
|
.ToArray();
|
||||||
logger.LogInformation(
|
logger.LogInformation(
|
||||||
"[rooms-save] fanout room update player={PlayerId} room={RoomId} instance={InstanceId} blob={BlobName} recipients={RecipientCount}",
|
"[rooms-save] fanout room update player={PlayerId} room={RoomId} instance={InstanceId} blob={BlobName} recipients={RecipientCount}",
|
||||||
pid, roomId, current.RoomInstanceId, newBlob, playersInInstance.Length);
|
pid, roomId, activeInstanceId, newBlob, playersInInstance.Length);
|
||||||
|
|
||||||
var updatedRoomInstances = new Dictionary<long, RoomInstanceDto>();
|
var updatedRoomInstances = new Dictionary<long, RoomInstanceDto>();
|
||||||
foreach (var playerId in playersInInstance)
|
foreach (var playerId in playersInInstance)
|
||||||
{
|
{
|
||||||
var currentPresence = presence.GetRoom(playerId);
|
var currentPresence = presence.GetRoom(playerId);
|
||||||
if (currentPresence is null && playerId == pid)
|
if (currentPresence is null && playerId == pid && current is not null)
|
||||||
{
|
{
|
||||||
currentPresence = current;
|
currentPresence = current;
|
||||||
}
|
}
|
||||||
if (currentPresence is null) continue;
|
if (currentPresence is null || currentPresence.RoomId != roomId) continue;
|
||||||
|
|
||||||
currentPresence.DataBlob = newBlob;
|
currentPresence.DataBlob = newBlob;
|
||||||
presence.SetRoom(playerId, currentPresence);
|
presence.SetRoom(playerId, currentPresence);
|
||||||
@@ -601,9 +616,16 @@ public class RoomsController(
|
|||||||
{
|
{
|
||||||
public long RoomSceneId { get; set; }
|
public long RoomSceneId { get; set; }
|
||||||
public string? RoomDataFilename { get; set; }
|
public string? RoomDataFilename { get; set; }
|
||||||
|
[System.Text.Json.Serialization.JsonPropertyName("filename")]
|
||||||
|
public string? Filename { get; set; }
|
||||||
public List<long>? InventionUsages { get; set; }
|
public List<long>? InventionUsages { get; set; }
|
||||||
|
public string? InventionUsageBase64 { get; set; }
|
||||||
public CreatorActionContextDto? CreatorActionContext { get; set; }
|
public CreatorActionContextDto? CreatorActionContext { get; set; }
|
||||||
public long RequestPlayerId { get; set; }
|
public long RequestPlayerId { get; set; }
|
||||||
|
public int SaveRequestPlayerId { get; set; }
|
||||||
|
|
||||||
|
public string EffectiveRoomDataFilename =>
|
||||||
|
RoomDataFilename ?? Filename ?? string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CreatorActionContextDto
|
public class CreatorActionContextDto
|
||||||
@@ -2403,7 +2425,7 @@ public class RoomsController(
|
|||||||
[FromBody] SaveRoomSceneRequest body)
|
[FromBody] SaveRoomSceneRequest body)
|
||||||
{
|
{
|
||||||
body.RoomSceneId = subRoomId;
|
body.RoomSceneId = subRoomId;
|
||||||
return SaveData(body);
|
return SaveDataCore(body, roomId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<IActionResult> MutateScene(long roomId, long subRoomId, Action<RoomSceneEntity> mutator)
|
private async Task<IActionResult> MutateScene(long roomId, long subRoomId, Action<RoomSceneEntity> mutator)
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ public class StorefrontsBuyController(
|
|||||||
StoreService.TryGetAvatarItemPayload(item.Slug, out var avatarItemType, out avatarItemDesc);
|
StoreService.TryGetAvatarItemPayload(item.Slug, out var avatarItemType, out avatarItemDesc);
|
||||||
var inventoryAvatarDesc = StoreService.InventoryAvatarItemDesc(avatarItemDesc);
|
var inventoryAvatarDesc = StoreService.InventoryAvatarItemDesc(avatarItemDesc);
|
||||||
StoreService.TryGetConsumableItemDesc(item.Slug, out var consumableItemDesc);
|
StoreService.TryGetConsumableItemDesc(item.Slug, out var consumableItemDesc);
|
||||||
|
StoreService.TryGetEquipmentPayload(item.Slug, out var equipmentPrefabName, out var equipmentModificationGuid);
|
||||||
if (StoreService.TryGetHairDyePayload(item.Slug, out var hairDyeConsumableDesc, out var hairDyeColorGuid))
|
if (StoreService.TryGetHairDyePayload(item.Slug, out var hairDyeConsumableDesc, out var hairDyeColorGuid))
|
||||||
{
|
{
|
||||||
avatarItemType = 1;
|
avatarItemType = 1;
|
||||||
@@ -116,6 +117,8 @@ public class StorefrontsBuyController(
|
|||||||
AvatarItemType = string.IsNullOrEmpty(inventoryAvatarDesc) ? null : avatarItemType,
|
AvatarItemType = string.IsNullOrEmpty(inventoryAvatarDesc) ? null : avatarItemType,
|
||||||
AvatarItemDescOrHairDyeDesc = inventoryAvatarDesc,
|
AvatarItemDescOrHairDyeDesc = inventoryAvatarDesc,
|
||||||
ConsumableItemDesc = consumableItemDesc,
|
ConsumableItemDesc = consumableItemDesc,
|
||||||
|
EquipmentPrefabName = equipmentPrefabName,
|
||||||
|
EquipmentModificationGuid = equipmentModificationGuid,
|
||||||
CurrencyType = req.CurrencyType,
|
CurrencyType = req.CurrencyType,
|
||||||
Currency = 0,
|
Currency = 0,
|
||||||
Xp = 0,
|
Xp = 0,
|
||||||
@@ -158,6 +161,8 @@ public class StorefrontsBuyController(
|
|||||||
AvatarItemType = gift.AvatarItemType,
|
AvatarItemType = gift.AvatarItemType,
|
||||||
AvatarItemDesc = avatarItemDesc,
|
AvatarItemDesc = avatarItemDesc,
|
||||||
ConsumableItemDesc = gift.ConsumableItemDesc ?? string.Empty,
|
ConsumableItemDesc = gift.ConsumableItemDesc ?? string.Empty,
|
||||||
|
EquipmentPrefabName = gift.EquipmentPrefabName,
|
||||||
|
EquipmentModificationGuid = gift.EquipmentModificationGuid,
|
||||||
Message = gift.Message ?? string.Empty,
|
Message = gift.Message ?? string.Empty,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -341,10 +346,13 @@ public class StorefrontsBuyController(
|
|||||||
var avatarItemType = 0;
|
var avatarItemType = 0;
|
||||||
var avatarItemDesc = string.Empty;
|
var avatarItemDesc = string.Empty;
|
||||||
var consumableItemDesc = string.Empty;
|
var consumableItemDesc = string.Empty;
|
||||||
|
var equipmentPrefabName = string.Empty;
|
||||||
|
var equipmentModificationGuid = string.Empty;
|
||||||
if (grantedSlug is not null)
|
if (grantedSlug is not null)
|
||||||
{
|
{
|
||||||
StoreService.TryGetAvatarItemPayload(grantedSlug, out avatarItemType, out avatarItemDesc);
|
StoreService.TryGetAvatarItemPayload(grantedSlug, out avatarItemType, out avatarItemDesc);
|
||||||
StoreService.TryGetConsumableItemDesc(grantedSlug, out consumableItemDesc);
|
StoreService.TryGetConsumableItemDesc(grantedSlug, out consumableItemDesc);
|
||||||
|
StoreService.TryGetEquipmentPayload(grantedSlug, out equipmentPrefabName, out equipmentModificationGuid);
|
||||||
if (StoreService.TryGetHairDyePayload(grantedSlug, out var hairDyeConsumableDesc, out var hairDyeColorGuid))
|
if (StoreService.TryGetHairDyePayload(grantedSlug, out var hairDyeConsumableDesc, out var hairDyeColorGuid))
|
||||||
{
|
{
|
||||||
avatarItemType = 1;
|
avatarItemType = 1;
|
||||||
@@ -378,8 +386,8 @@ public class StorefrontsBuyController(
|
|||||||
AvatarItemDesc = avatarItemDesc,
|
AvatarItemDesc = avatarItemDesc,
|
||||||
AvatarItemDescOrHairDyeDesc = StoreService.InventoryAvatarItemDesc(avatarItemDesc),
|
AvatarItemDescOrHairDyeDesc = StoreService.InventoryAvatarItemDesc(avatarItemDesc),
|
||||||
ConsumableItemDesc = consumableItemDesc,
|
ConsumableItemDesc = consumableItemDesc,
|
||||||
EquipmentPrefabName = string.Empty,
|
EquipmentPrefabName = equipmentPrefabName,
|
||||||
EquipmentModificationGuid = string.Empty,
|
EquipmentModificationGuid = equipmentModificationGuid,
|
||||||
CurrencyType = currencyType,
|
CurrencyType = currencyType,
|
||||||
Currency = 0,
|
Currency = 0,
|
||||||
Message = string.Empty,
|
Message = string.Empty,
|
||||||
|
|||||||
@@ -1073,6 +1073,9 @@ public class GoToController(
|
|||||||
// load (black screen).
|
// load (black screen).
|
||||||
var isDorm = roomName.Equals("DormRoom", StringComparison.OrdinalIgnoreCase);
|
var isDorm = roomName.Equals("DormRoom", StringComparison.OrdinalIgnoreCase);
|
||||||
var dormOwnerId = this.CurrentPlayerId();
|
var dormOwnerId = this.CurrentPlayerId();
|
||||||
|
var dormInstanceName = isDorm && dormOwnerId is long ownerForDisplay
|
||||||
|
? await BuildDormInstanceNameAsync(ownerForDisplay)
|
||||||
|
: roomName;
|
||||||
var photonRoom = (isDorm && dormOwnerId is long ownerForName)
|
var photonRoom = (isDorm && dormOwnerId is long ownerForName)
|
||||||
? $"^dormroom_p{ownerForName}"
|
? $"^dormroom_p{ownerForName}"
|
||||||
: $"^{roomName.ToLowerInvariant()}_{roomId}";
|
: $"^{roomName.ToLowerInvariant()}_{roomId}";
|
||||||
@@ -1099,7 +1102,7 @@ public class GoToController(
|
|||||||
// Lowercase enum names — that's the wire format Photon uses too.
|
// Lowercase enum names — that's the wire format Photon uses too.
|
||||||
PhotonRegionId = photonRegion,
|
PhotonRegionId = photonRegion,
|
||||||
PhotonRoomId = photonRoom,
|
PhotonRoomId = photonRoom,
|
||||||
Name = roomName,
|
Name = dormInstanceName,
|
||||||
MaxCapacity = 8,
|
MaxCapacity = 8,
|
||||||
IsFull = false,
|
IsFull = false,
|
||||||
IsPrivate = false,
|
IsPrivate = false,
|
||||||
@@ -1123,7 +1126,7 @@ public class GoToController(
|
|||||||
ownerPlayerId: ownerPid,
|
ownerPlayerId: ownerPid,
|
||||||
roomId: resp.RoomInstance.RoomId,
|
roomId: resp.RoomInstance.RoomId,
|
||||||
subRoomId: 0,
|
subRoomId: 0,
|
||||||
baseName: resp.RoomInstance.Name,
|
baseName: dormInstanceName,
|
||||||
location: resp.RoomInstance.Location,
|
location: resp.RoomInstance.Location,
|
||||||
dataBlob: resp.RoomInstance.DataBlob,
|
dataBlob: resp.RoomInstance.DataBlob,
|
||||||
photonRegion: resp.RoomInstance.PhotonRegionId,
|
photonRegion: resp.RoomInstance.PhotonRegionId,
|
||||||
@@ -1136,6 +1139,23 @@ public class GoToController(
|
|||||||
return resp;
|
return resp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task<string> BuildDormInstanceNameAsync(long ownerPlayerId)
|
||||||
|
{
|
||||||
|
var player = await db.Players.AsNoTracking()
|
||||||
|
.Where(p => p.Id == ownerPlayerId)
|
||||||
|
.Select(p => new { p.DisplayName, p.Username })
|
||||||
|
.FirstOrDefaultAsync();
|
||||||
|
var name = !string.IsNullOrWhiteSpace(player?.DisplayName)
|
||||||
|
? player!.DisplayName
|
||||||
|
: !string.IsNullOrWhiteSpace(player?.Username)
|
||||||
|
? player!.Username
|
||||||
|
: $"Player{ownerPlayerId}";
|
||||||
|
var cleaned = new string(name
|
||||||
|
.Select(ch => char.IsLetterOrDigit(ch) || ch == '_' || ch == '-' ? ch : '_')
|
||||||
|
.ToArray()).Trim('_');
|
||||||
|
return string.IsNullOrWhiteSpace(cleaned) ? $"Player{ownerPlayerId}_dorm" : $"{cleaned}_dorm";
|
||||||
|
}
|
||||||
|
|
||||||
private async Task<string> ResolveInitialDataBlobAsync(long roomId, bool isDorm, long? dormOwnerId)
|
private async Task<string> ResolveInitialDataBlobAsync(long roomId, bool isDorm, long? dormOwnerId)
|
||||||
{
|
{
|
||||||
var room = await db.Rooms.AsNoTracking().FirstOrDefaultAsync(r => r.Id == roomId);
|
var room = await db.Rooms.AsNoTracking().FirstOrDefaultAsync(r => r.Id == roomId);
|
||||||
|
|||||||
@@ -338,6 +338,7 @@ public class MatchPlayerController(
|
|||||||
var dataBlob = await ResolveDataBlobForPresenceAsync(roomId, playerId);
|
var dataBlob = await ResolveDataBlobForPresenceAsync(roomId, playerId);
|
||||||
var photonRegion = (config["Photon:CloudRegion"] ?? "us").ToLowerInvariant();
|
var photonRegion = (config["Photon:CloudRegion"] ?? "us").ToLowerInvariant();
|
||||||
var photonRoomId = $"^dormroom_p{playerId}";
|
var photonRoomId = $"^dormroom_p{playerId}";
|
||||||
|
var dormInstanceName = await BuildDormInstanceNameAsync(playerId);
|
||||||
|
|
||||||
// EnsureForDormAsync owns the deterministic dorm instance-id
|
// EnsureForDormAsync owns the deterministic dorm instance-id
|
||||||
// formula; reusing it here guarantees the heartbeat's
|
// formula; reusing it here guarantees the heartbeat's
|
||||||
@@ -346,7 +347,7 @@ public class MatchPlayerController(
|
|||||||
ownerPlayerId: playerId,
|
ownerPlayerId: playerId,
|
||||||
roomId: roomId,
|
roomId: roomId,
|
||||||
subRoomId: 0,
|
subRoomId: 0,
|
||||||
baseName: "DormRoom",
|
baseName: dormInstanceName,
|
||||||
location: location,
|
location: location,
|
||||||
dataBlob: dataBlob,
|
dataBlob: dataBlob,
|
||||||
photonRegion: photonRegion,
|
photonRegion: photonRegion,
|
||||||
@@ -361,7 +362,7 @@ public class MatchPlayerController(
|
|||||||
Location = location,
|
Location = location,
|
||||||
PhotonRegionId = photonRegion,
|
PhotonRegionId = photonRegion,
|
||||||
PhotonRoomId = photonRoomId,
|
PhotonRoomId = photonRoomId,
|
||||||
Name = "DormRoom",
|
Name = dormInstanceName,
|
||||||
MaxCapacity = 8,
|
MaxCapacity = 8,
|
||||||
IsFull = false,
|
IsFull = false,
|
||||||
IsPrivate = true,
|
IsPrivate = true,
|
||||||
@@ -371,6 +372,23 @@ public class MatchPlayerController(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task<string> BuildDormInstanceNameAsync(long ownerPlayerId)
|
||||||
|
{
|
||||||
|
var player = await db.Players.AsNoTracking()
|
||||||
|
.Where(p => p.Id == ownerPlayerId)
|
||||||
|
.Select(p => new { p.DisplayName, p.Username })
|
||||||
|
.FirstOrDefaultAsync();
|
||||||
|
var name = !string.IsNullOrWhiteSpace(player?.DisplayName)
|
||||||
|
? player!.DisplayName
|
||||||
|
: !string.IsNullOrWhiteSpace(player?.Username)
|
||||||
|
? player!.Username
|
||||||
|
: $"Player{ownerPlayerId}";
|
||||||
|
var cleaned = new string(name
|
||||||
|
.Select(ch => char.IsLetterOrDigit(ch) || ch == '_' || ch == '-' ? ch : '_')
|
||||||
|
.ToArray()).Trim('_');
|
||||||
|
return string.IsNullOrWhiteSpace(cleaned) ? $"Player{ownerPlayerId}_dorm" : $"{cleaned}_dorm";
|
||||||
|
}
|
||||||
|
|
||||||
private async Task<string> ResolveDataBlobForPresenceAsync(long roomId, int playerId)
|
private async Task<string> ResolveDataBlobForPresenceAsync(long roomId, int playerId)
|
||||||
{
|
{
|
||||||
var room = await db.Rooms.AsNoTracking().FirstOrDefaultAsync(r => r.Id == roomId);
|
var room = await db.Rooms.AsNoTracking().FirstOrDefaultAsync(r => r.Id == roomId);
|
||||||
|
|||||||
@@ -1,3 +1,1944 @@
|
|||||||
{
|
{
|
||||||
"items": []
|
"items": [
|
||||||
|
{
|
||||||
|
"prefab_name": "[Arrow]",
|
||||||
|
"modification_guid": "b862383e-0de3-492d-8f72-25e756287687",
|
||||||
|
"display_name": "Arrow Skin Vitton",
|
||||||
|
"tooltip": "Equipment skin for Arrow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Basketball]",
|
||||||
|
"modification_guid": "56c9a6db-0f54-482c-aba9-e265f899771d",
|
||||||
|
"display_name": "Basketball CoachSelect Skin",
|
||||||
|
"tooltip": "Equipment skin for Basketball.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Basketball]",
|
||||||
|
"modification_guid": "e6899422-ab2f-4bd9-8e98-aef950ec27b6",
|
||||||
|
"display_name": "Basketball Skin Blue",
|
||||||
|
"tooltip": "Equipment skin for Basketball.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Basketball]",
|
||||||
|
"modification_guid": "WOWwmg7jg0mH2g4LJUp6fA",
|
||||||
|
"display_name": "Basketball Skin Cozy",
|
||||||
|
"tooltip": "Equipment skin for Basketball.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Basketball]",
|
||||||
|
"modification_guid": "5dcf8a2e-6fa6-4007-ac1e-73dd53c4c247",
|
||||||
|
"display_name": "Basketball Skin Purple",
|
||||||
|
"tooltip": "Equipment skin for Basketball.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Basketball]",
|
||||||
|
"modification_guid": "56582acf-c7a0-4aff-b3aa-2fdea4d254a3",
|
||||||
|
"display_name": "Basketball Skin Rainbow",
|
||||||
|
"tooltip": "Equipment skin for Basketball.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Basketball]",
|
||||||
|
"modification_guid": "d6d22997-fe39-4ffa-b1b3-4955368c829a",
|
||||||
|
"display_name": "Basketball Skin Vitton",
|
||||||
|
"tooltip": "Equipment skin for Basketball.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[BowlingBall]",
|
||||||
|
"modification_guid": "BvUZUamUh0uDbjDOrQrX1A",
|
||||||
|
"display_name": "BowlingBall Skin Gold",
|
||||||
|
"tooltip": "Equipment skin for BowlingBall.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow]",
|
||||||
|
"modification_guid": "Ys9UQ5b7fEyKxnaek-ihfQ",
|
||||||
|
"display_name": "Crossbow Dryad Fall Skin",
|
||||||
|
"tooltip": "Equipment skin for Crossbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow]",
|
||||||
|
"modification_guid": "T6PzFfg41UaQ7EAqts6gsw",
|
||||||
|
"display_name": "Crossbow Skin Bone",
|
||||||
|
"tooltip": "Equipment skin for Crossbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow]",
|
||||||
|
"modification_guid": "6bba14be-f207-4933-b09f-f0fd3e28c10c",
|
||||||
|
"display_name": "Crossbow Skin CandyCane",
|
||||||
|
"tooltip": "Equipment skin for Crossbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow]",
|
||||||
|
"modification_guid": "VHFKZVhiRkylcxnxzCKUuw",
|
||||||
|
"display_name": "Crossbow Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for Crossbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow]",
|
||||||
|
"modification_guid": "jHaoDSAtikyAI82lO53o9g",
|
||||||
|
"display_name": "Crossbow Skin Dryad",
|
||||||
|
"tooltip": "Equipment skin for Crossbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow]",
|
||||||
|
"modification_guid": "ESQ0qOlgrkCc8MbUXGnF8A",
|
||||||
|
"display_name": "Crossbow Skin Plaid",
|
||||||
|
"tooltip": "Equipment skin for Crossbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow]",
|
||||||
|
"modification_guid": "1d09c8e4-78c2-49f9-acb7-8f0b3ff6a5ed",
|
||||||
|
"display_name": "Crossbow Skin Recasso",
|
||||||
|
"tooltip": "Equipment skin for Crossbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow]",
|
||||||
|
"modification_guid": "QEwDZYj_OEi5l86LBnuYGw",
|
||||||
|
"display_name": "Crossbow Skin Rock",
|
||||||
|
"tooltip": "Equipment skin for Crossbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow]",
|
||||||
|
"modification_guid": "c4d70545-cdf1-4fb1-924b-613de0327faf",
|
||||||
|
"display_name": "Crossbow Skin Vitton",
|
||||||
|
"tooltip": "Equipment skin for Crossbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow]",
|
||||||
|
"modification_guid": "CZAIad-ME0O0iIy77MRxBw",
|
||||||
|
"display_name": "Crossbow Skin Winter",
|
||||||
|
"tooltip": "Equipment skin for Crossbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow]",
|
||||||
|
"modification_guid": "MsFoMeUZ8Eq2qX9SrOtRPA",
|
||||||
|
"display_name": "Crossbow Waves Skin",
|
||||||
|
"tooltip": "Equipment skin for Crossbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow_Hunter]",
|
||||||
|
"modification_guid": "RRCvths6eUmAAr9hzGFT0g",
|
||||||
|
"display_name": "Crossbow Hunter Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for Crossbow Hunter.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow_Hunter]",
|
||||||
|
"modification_guid": "cFMh54GoHEeHZEERSRR8kQ",
|
||||||
|
"display_name": "Crossbow Hunter Skin Plaid",
|
||||||
|
"tooltip": "Equipment skin for Crossbow Hunter.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Crossbow_Hunter]",
|
||||||
|
"modification_guid": "d217ee4c-22f3-4f33-bf7c-9d4ee9c30e29",
|
||||||
|
"display_name": "Crossbow Hunter Skin Rock",
|
||||||
|
"tooltip": "Equipment skin for Crossbow Hunter.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[CrossbowBolt]",
|
||||||
|
"modification_guid": "17fe7b44-3169-4bbc-b176-c104b8c2c167",
|
||||||
|
"display_name": "CrossbowBolt Skin Vitton",
|
||||||
|
"tooltip": "Equipment skin for CrossbowBolt.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[DiscGolfDisc]",
|
||||||
|
"modification_guid": "7877964e-3a2b-4818-8513-0e26a707bd7c",
|
||||||
|
"display_name": "DiscGolfDisc Skin Clear",
|
||||||
|
"tooltip": "Equipment skin for DiscGolfDisc.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[DiscGolfDisc]",
|
||||||
|
"modification_guid": "2b70a76e-6f48-402e-90ff-40b06aa23eb8",
|
||||||
|
"display_name": "DiscGolfDisc Skin CoachSelect",
|
||||||
|
"tooltip": "Equipment skin for DiscGolfDisc.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[DiscGolfDisc]",
|
||||||
|
"modification_guid": "19ef59c7-f74b-4c63-935a-1d4b1abd8518",
|
||||||
|
"display_name": "DiscGolfDisc Skin Coop",
|
||||||
|
"tooltip": "Equipment skin for DiscGolfDisc.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[DiscGolfDisc]",
|
||||||
|
"modification_guid": "5d3c3b16-713e-43d8-88e0-7633063091da",
|
||||||
|
"display_name": "DiscGolfDisc Skin Gold",
|
||||||
|
"tooltip": "Equipment skin for DiscGolfDisc.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[DiscGolfDisc]",
|
||||||
|
"modification_guid": "9d2a3618-12b3-4ca0-be59-ed15d7926d77",
|
||||||
|
"display_name": "DiscGolfDisc Skin Laser",
|
||||||
|
"tooltip": "Equipment skin for DiscGolfDisc.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[DiscGolfDisc]",
|
||||||
|
"modification_guid": "bd3f6aa5-c6e0-4e06-901d-1176accf1003",
|
||||||
|
"display_name": "DiscGolfDisc Skin Wood",
|
||||||
|
"tooltip": "Equipment skin for DiscGolfDisc.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[DodgeballBall]",
|
||||||
|
"modification_guid": "6261a846-e4f8-4e6e-8aa0-68f38cd788d4",
|
||||||
|
"display_name": "DodgeballBall Comic Skin",
|
||||||
|
"tooltip": "Equipment skin for DodgeballBall.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[DodgeballBall]",
|
||||||
|
"modification_guid": "f55dda45-c17e-4237-a638-9f326d306e7d",
|
||||||
|
"display_name": "DodgeballBall Goblin Skin",
|
||||||
|
"tooltip": "Equipment skin for DodgeballBall.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[DodgeballBall]",
|
||||||
|
"modification_guid": "Jkg-OGXdIUyfEwaQIh6EGA",
|
||||||
|
"display_name": "DodgeballBall Skin Gold",
|
||||||
|
"tooltip": "Equipment skin for DodgeballBall.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[DodgeballBall]",
|
||||||
|
"modification_guid": "lIpyvEMWqUyv41gTp3YZ1A",
|
||||||
|
"display_name": "DodgeballBall Skin Pumpkin",
|
||||||
|
"tooltip": "Equipment skin for DodgeballBall.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[DodgeballBall]",
|
||||||
|
"modification_guid": "6ff63f8f-4bcc-4b69-8d89-8b886d19e239",
|
||||||
|
"display_name": "DodgeballBall Skin Recasso",
|
||||||
|
"tooltip": "Equipment skin for DodgeballBall.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Grenade]",
|
||||||
|
"modification_guid": "993f8b81-cb2e-44e4-88a1-b841af1f0e69",
|
||||||
|
"display_name": "Grenade Skin Pirate",
|
||||||
|
"tooltip": "Equipment skin for Grenade.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Longbow]",
|
||||||
|
"modification_guid": "XKFuhM3zikyxTYtTzuPb_A",
|
||||||
|
"display_name": "Longbow Dryad Fall Skin",
|
||||||
|
"tooltip": "Equipment skin for Longbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Longbow]",
|
||||||
|
"modification_guid": "JBp7CxPhrUC5hnn2EISUFA",
|
||||||
|
"display_name": "Longbow Dryad Skin",
|
||||||
|
"tooltip": "Equipment skin for Longbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Longbow]",
|
||||||
|
"modification_guid": "52c6a138-10c5-4aab-9c3b-04b50c9a2dc5",
|
||||||
|
"display_name": "Longbow Ghost Skin",
|
||||||
|
"tooltip": "Equipment skin for Longbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Longbow]",
|
||||||
|
"modification_guid": "YajcGvBcTEaf_MjCbxOciw",
|
||||||
|
"display_name": "Longbow Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for Longbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Longbow]",
|
||||||
|
"modification_guid": "T8666vuehkObksBdVbla9g",
|
||||||
|
"display_name": "Longbow Skin Plaid",
|
||||||
|
"tooltip": "Equipment skin for Longbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Longbow]",
|
||||||
|
"modification_guid": "XpxqrY6RYkafs-sd3Z0ZLw",
|
||||||
|
"display_name": "Longbow Skin Rainbow",
|
||||||
|
"tooltip": "Equipment skin for Longbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Longbow]",
|
||||||
|
"modification_guid": "e738d936-0f75-423b-88bb-f626ffba573a",
|
||||||
|
"display_name": "Longbow Skin Rock",
|
||||||
|
"tooltip": "Equipment skin for Longbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Longbow]",
|
||||||
|
"modification_guid": "f5901f11-b315-4261-9474-2da207e4a229",
|
||||||
|
"display_name": "Longbow Skin Vitton",
|
||||||
|
"tooltip": "Equipment skin for Longbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Longbow]",
|
||||||
|
"modification_guid": "uPwTBnfWwkWXuyAaAMqeQA",
|
||||||
|
"display_name": "Longbow Skin Winter",
|
||||||
|
"tooltip": "Equipment skin for Longbow.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[MakerPen]",
|
||||||
|
"modification_guid": "4HJ3wRmSZUuhMRUTA67dpA",
|
||||||
|
"display_name": "MakerPen Professor Skin",
|
||||||
|
"tooltip": "Equipment skin for MakerPen.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[MakerPen]",
|
||||||
|
"modification_guid": "BGhlN3FKGEy6w-vwc28V4A",
|
||||||
|
"display_name": "MakerPen Skin Beach",
|
||||||
|
"tooltip": "Equipment skin for MakerPen.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[MakerPen]",
|
||||||
|
"modification_guid": "wultE5yRpkuJREeJw4prKg",
|
||||||
|
"display_name": "MakerPen Skin Dragon",
|
||||||
|
"tooltip": "Equipment skin for MakerPen.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[MakerPen]",
|
||||||
|
"modification_guid": "79090a4b-e191-4788-9210-88a7bdf6d828",
|
||||||
|
"display_name": "MakerPen Skin Luxury",
|
||||||
|
"tooltip": "Equipment skin for MakerPen.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[MakerPen]",
|
||||||
|
"modification_guid": "JtMeQRvo00yVwAliICTP0w",
|
||||||
|
"display_name": "MakerPen Skin MovieMagic",
|
||||||
|
"tooltip": "Equipment skin for MakerPen.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[MakerPen]",
|
||||||
|
"modification_guid": "BwIscV_YnE6iG4brl389Hg",
|
||||||
|
"display_name": "MakerPen Skin Mystery",
|
||||||
|
"tooltip": "Equipment skin for MakerPen.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[MakerPen]",
|
||||||
|
"modification_guid": "juFHwn9UjEiGaWyNnoxbtA",
|
||||||
|
"display_name": "MakerPen Skin Pumpkin",
|
||||||
|
"tooltip": "Equipment skin for MakerPen.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[MakerPen]",
|
||||||
|
"modification_guid": "HyL83wPtf06DG6nsHofoeA",
|
||||||
|
"display_name": "MakerPen Skin Steampunk",
|
||||||
|
"tooltip": "Equipment skin for MakerPen.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[MakerPen]",
|
||||||
|
"modification_guid": "Pw1XcUfAck2tNh0fIAu8LA",
|
||||||
|
"display_name": "MakerPen Skin Waves",
|
||||||
|
"tooltip": "Equipment skin for MakerPen.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[MakerPen]",
|
||||||
|
"modification_guid": "i3NgZvTwkUSMsXRpqCgSZA",
|
||||||
|
"display_name": "MakerPen Skin Wonderland",
|
||||||
|
"tooltip": "Equipment skin for MakerPen.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[MakerPen]",
|
||||||
|
"modification_guid": "204f84a2-6ee2-45e1-9168-87f43e893e32",
|
||||||
|
"display_name": "MakerPen Skin Wood",
|
||||||
|
"tooltip": "Equipment skin for MakerPen.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Paintball_PaintThrower]",
|
||||||
|
"modification_guid": "GbHNkVbVgUCoirMhOGkSTA",
|
||||||
|
"display_name": "Paintball PaintThrower Plaid Skin",
|
||||||
|
"tooltip": "Equipment skin for Paintball PaintThrower.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Paintball_PaintThrower]",
|
||||||
|
"modification_guid": "qhhhJeHVx0KLnGJrAGIn9g",
|
||||||
|
"display_name": "Paintball PaintThrower Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for Paintball PaintThrower.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Paintball_PaintThrower]",
|
||||||
|
"modification_guid": "OFEdf4dRC0a3nHugXVOXnA",
|
||||||
|
"display_name": "Paintball PaintThrower Skin Fireworks",
|
||||||
|
"tooltip": "Equipment skin for Paintball PaintThrower.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Paintball_PaintThrower]",
|
||||||
|
"modification_guid": "y_FesIT5jkmb61JIu7tfsw",
|
||||||
|
"display_name": "Paintball PaintThrower Skin Wood",
|
||||||
|
"tooltip": "Equipment skin for Paintball PaintThrower.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballAssaultRifle]",
|
||||||
|
"modification_guid": "VOOdhP5qg0WWv2m0qLRVCw",
|
||||||
|
"display_name": "PaintballAssaultRifle Gold Skin",
|
||||||
|
"tooltip": "Equipment skin for PaintballAssaultRifle.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballAssaultRifle]",
|
||||||
|
"modification_guid": "c458a6ae-a1ea-468a-89b8-4c9a85cd3cde",
|
||||||
|
"display_name": "PaintballAssaultRifle Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for PaintballAssaultRifle.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballAssaultRifle]",
|
||||||
|
"modification_guid": "m_qzPvDPF0KPhLd59wzr5A",
|
||||||
|
"display_name": "PaintballAssaultRifle Skin Fall",
|
||||||
|
"tooltip": "Equipment skin for PaintballAssaultRifle.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballAssaultRifle]",
|
||||||
|
"modification_guid": "996662ad-631d-4a81-8a8b-74ace4833279",
|
||||||
|
"display_name": "PaintballAssaultRifle Skin Pirate",
|
||||||
|
"tooltip": "Equipment skin for PaintballAssaultRifle.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballAssaultRifle]",
|
||||||
|
"modification_guid": "3aaef60d-142f-4a0a-bea3-f5d99ab62dd5",
|
||||||
|
"display_name": "PaintballAssaultRifle Skin Plaid",
|
||||||
|
"tooltip": "Equipment skin for PaintballAssaultRifle.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballAssaultRifle]",
|
||||||
|
"modification_guid": "357fe573-fee7-467f-93a7-5e61afb024b8",
|
||||||
|
"display_name": "PaintballAssaultRifle Skin wood",
|
||||||
|
"tooltip": "Equipment skin for PaintballAssaultRifle.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGrenadeLauncher]",
|
||||||
|
"modification_guid": "f34e6270-bcfa-42f2-80d5-69c1bbd34983",
|
||||||
|
"display_name": "PaintballGrenadeLauncher Comic Skin",
|
||||||
|
"tooltip": "Equipment skin for PaintballGrenadeLauncher.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGrenadeLauncher]",
|
||||||
|
"modification_guid": "8ZAwSDtXlkqlnBLOpfVTVg",
|
||||||
|
"display_name": "PaintballGrenadeLauncher Gingerbread Skin",
|
||||||
|
"tooltip": "Equipment skin for PaintballGrenadeLauncher.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGrenadeLauncher]",
|
||||||
|
"modification_guid": "3UmIhvqmkU-aWxFDFd4QDg",
|
||||||
|
"display_name": "PaintballGrenadeLauncher Honey Skin",
|
||||||
|
"tooltip": "Equipment skin for PaintballGrenadeLauncher.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGrenadeLauncher]",
|
||||||
|
"modification_guid": "tcMMGKcmhkuM82ISCZ-3AQ",
|
||||||
|
"display_name": "PaintballGrenadeLauncher Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for PaintballGrenadeLauncher.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGrenadeLauncher]",
|
||||||
|
"modification_guid": "pPpYY9j0Dku2gtbKoUOCCg",
|
||||||
|
"display_name": "PaintballGrenadeLauncher Skin EasterEgg",
|
||||||
|
"tooltip": "Equipment skin for PaintballGrenadeLauncher.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGrenadeLauncher]",
|
||||||
|
"modification_guid": "502f40c3-1c00-4c3f-bfc7-c897df8af37e",
|
||||||
|
"display_name": "PaintballGrenadeLauncher Skin Plaid",
|
||||||
|
"tooltip": "Equipment skin for PaintballGrenadeLauncher.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGrenadeLauncher]",
|
||||||
|
"modification_guid": "9gBl778RvUeSC8837Gurog",
|
||||||
|
"display_name": "PaintballGrenadeLauncher Skin Wood",
|
||||||
|
"tooltip": "Equipment skin for PaintballGrenadeLauncher.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGun]",
|
||||||
|
"modification_guid": "Dg9PFcg-JUia72PnYJqkQg",
|
||||||
|
"display_name": "PaintballGun Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for PaintballGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGun]",
|
||||||
|
"modification_guid": "bc4254be-60e0-4cc5-a233-6a0bd4137118",
|
||||||
|
"display_name": "PaintballGun Skin Gold",
|
||||||
|
"tooltip": "Equipment skin for PaintballGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGun]",
|
||||||
|
"modification_guid": "7ef5d1d9-24db-428c-85e0-107c1bfcc026",
|
||||||
|
"display_name": "PaintballGun Skin Orange",
|
||||||
|
"tooltip": "Equipment skin for PaintballGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGun]",
|
||||||
|
"modification_guid": "b8d5612b-2c6f-46d6-9412-decddac7d4c1",
|
||||||
|
"display_name": "PaintballGun Skin Pirate",
|
||||||
|
"tooltip": "Equipment skin for PaintballGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGun]",
|
||||||
|
"modification_guid": "ec5ef0f3-c072-45ec-bb8f-3781fb16e067",
|
||||||
|
"display_name": "PaintballGun Skin Plaid",
|
||||||
|
"tooltip": "Equipment skin for PaintballGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGun]",
|
||||||
|
"modification_guid": "4aff20ee-0b20-434b-a030-d3e1764fe4e7",
|
||||||
|
"display_name": "PaintballGun Skin Purple",
|
||||||
|
"tooltip": "Equipment skin for PaintballGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGun]",
|
||||||
|
"modification_guid": "36751c4a-86a9-40e1-bef2-84f962ab678d",
|
||||||
|
"display_name": "PaintballGun Skin Vitton",
|
||||||
|
"tooltip": "Equipment skin for PaintballGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGun]",
|
||||||
|
"modification_guid": "33c84c50-7c2e-4a80-ad06-79c4f20f829e",
|
||||||
|
"display_name": "PaintballGun Skin Wood",
|
||||||
|
"tooltip": "Equipment skin for PaintballGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballGun] Confetti",
|
||||||
|
"modification_guid": "bfrFOdnHzEaIwHqem2dXkg",
|
||||||
|
"display_name": "PaintballGunConfetti Skin Gold",
|
||||||
|
"tooltip": "Equipment skin for PaintballGun] Confetti.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballRifleScoped]",
|
||||||
|
"modification_guid": "0dM2SfqGR0SmtO5ufTWfUQ",
|
||||||
|
"display_name": "PaintballRifleScoped Comic Skin",
|
||||||
|
"tooltip": "Equipment skin for PaintballRifleScoped.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballRifleScoped]",
|
||||||
|
"modification_guid": "3rBevbIk1EusFnFaXAh3qA",
|
||||||
|
"display_name": "PaintballRifleScoped Gingerbread Skin",
|
||||||
|
"tooltip": "Equipment skin for PaintballRifleScoped.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballRifleScoped]",
|
||||||
|
"modification_guid": "OSrMlhVVSEqb-0AzVzOH9w",
|
||||||
|
"display_name": "PaintballRifleScoped Gold Skin",
|
||||||
|
"tooltip": "Equipment skin for PaintballRifleScoped.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballRifleScoped]",
|
||||||
|
"modification_guid": "d906709c-e08e-4273-8ba1-e072e0d25957",
|
||||||
|
"display_name": "PaintballRifleScoped Skin CandyCane",
|
||||||
|
"tooltip": "Equipment skin for PaintballRifleScoped.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballRifleScoped]",
|
||||||
|
"modification_guid": "b_iiMMYayU-an7hOlCzPIA",
|
||||||
|
"display_name": "PaintballRifleScoped Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for PaintballRifleScoped.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballRifleScoped]",
|
||||||
|
"modification_guid": "6a6b0ecf-286d-4361-92ff-7027c440dc3c",
|
||||||
|
"display_name": "PaintballRifleScoped Skin Plaid",
|
||||||
|
"tooltip": "Equipment skin for PaintballRifleScoped.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballRifleScoped]",
|
||||||
|
"modification_guid": "btB2z7ybskSYrn9Nzhfhxg",
|
||||||
|
"display_name": "PaintballRifleScoped Skin Wood",
|
||||||
|
"tooltip": "Equipment skin for PaintballRifleScoped.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballShield]",
|
||||||
|
"modification_guid": "jZ7wlwRxgUuWYuLasbnG8w",
|
||||||
|
"display_name": "PaintballShield 80s Sunset Skin",
|
||||||
|
"tooltip": "Equipment skin for PaintballShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballShield]",
|
||||||
|
"modification_guid": "gfGhbEMx_kCRdO-6vPOh3g",
|
||||||
|
"display_name": "PaintballShield Plaid Skin",
|
||||||
|
"tooltip": "Equipment skin for PaintballShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballShield]",
|
||||||
|
"modification_guid": "ClJApV0LC0mxh0UiYhaXGQ",
|
||||||
|
"display_name": "PaintballShield Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for PaintballShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballShield]",
|
||||||
|
"modification_guid": "QTyRLpDB3UuReHQqrKxb5A",
|
||||||
|
"display_name": "PaintballShield Skin Gingerbread",
|
||||||
|
"tooltip": "Equipment skin for PaintballShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballShield]",
|
||||||
|
"modification_guid": "a6c869d9-8f30-4ce6-a7ea-cb7ea9f9d492",
|
||||||
|
"display_name": "PaintballShield Skin Pirate",
|
||||||
|
"tooltip": "Equipment skin for PaintballShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballShield]",
|
||||||
|
"modification_guid": "fd367329-b8b2-4d44-825a-da16092751e3",
|
||||||
|
"display_name": "PaintballShield Skin Purple",
|
||||||
|
"tooltip": "Equipment skin for PaintballShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballShield]",
|
||||||
|
"modification_guid": "174adb53-bc6e-4fcf-b03d-a00fc3deeb49",
|
||||||
|
"display_name": "PaintballShield Skin Wood",
|
||||||
|
"tooltip": "Equipment skin for PaintballShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballShotgun]",
|
||||||
|
"modification_guid": "CwIBKjm3G0-xUGt_9Gf7UQ",
|
||||||
|
"display_name": "PaintballShotgun Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for PaintballShotgun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballShotgun]",
|
||||||
|
"modification_guid": "053c24a0-82a2-43f5-b0e7-e56db05a10ba",
|
||||||
|
"display_name": "PaintballShotgun Skin Gold",
|
||||||
|
"tooltip": "Equipment skin for PaintballShotgun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballShotgun]",
|
||||||
|
"modification_guid": "f27af5d7-c741-4457-8c98-8e8791f1a41c",
|
||||||
|
"display_name": "PaintballShotgun Skin Plaid",
|
||||||
|
"tooltip": "Equipment skin for PaintballShotgun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballShotgun]",
|
||||||
|
"modification_guid": "61e49c13-b414-425f-8e8b-bdcf3d12a5bf",
|
||||||
|
"display_name": "PaintballShotgun Skin Wood",
|
||||||
|
"tooltip": "Equipment skin for PaintballShotgun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[PaintballShotgun]",
|
||||||
|
"modification_guid": "ZMAx_-B_7kWy6-TLXx8g6Q",
|
||||||
|
"display_name": "PaintballShotgun Watermeon Skin",
|
||||||
|
"tooltip": "Equipment skin for PaintballShotgun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_Goblin_Wand]",
|
||||||
|
"modification_guid": "e8e42ef6-9ab6-44f4-84d5-117154a4d13e",
|
||||||
|
"display_name": "Quest Goblin Wand Ghost Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Goblin Wand.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_Goblin_Wand]",
|
||||||
|
"modification_guid": "3pE7zA-DjkqP1Ch7__-31w",
|
||||||
|
"display_name": "Quest Goblin Wand Ice Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Goblin Wand.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_Goblin_Wand]",
|
||||||
|
"modification_guid": "vfzrRHn24E67BK8Bgy60xA",
|
||||||
|
"display_name": "Quest Goblin Wand Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for Quest Goblin Wand.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_Goblin_Wand]",
|
||||||
|
"modification_guid": "CyrdBvIbXUq_TsXFliWk1A",
|
||||||
|
"display_name": "Quest Goblin Wand Skin Plaid",
|
||||||
|
"tooltip": "Equipment skin for Quest Goblin Wand.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_Goblin_Wand]",
|
||||||
|
"modification_guid": "yG6xFxkoS0iIDt7wEj5Hqw",
|
||||||
|
"display_name": "Quest Goblin Wand Skin Witch Star",
|
||||||
|
"tooltip": "Equipment skin for Quest Goblin Wand.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_Goblin_Wand]",
|
||||||
|
"modification_guid": "QnLM4Qw-L0ml_mgReFweIw",
|
||||||
|
"display_name": "Quest Goblin Wand Trident Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Goblin Wand.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_Goblin_Wand]",
|
||||||
|
"modification_guid": "m_otHTEKF0KQljsOc-JENg",
|
||||||
|
"display_name": "Quest Goblin Wand Wood Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Goblin Wand.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_AutomaticGun]",
|
||||||
|
"modification_guid": "jzgz_HrPAUqOeqx3uNXVUA",
|
||||||
|
"display_name": "Quest Sci-Fi AutomaticGun Plaid Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi AutomaticGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_AutomaticGun]",
|
||||||
|
"modification_guid": "u60IW1Gt10eC-8SlZmQUNQ",
|
||||||
|
"display_name": "Quest Sci-Fi AutomaticGun Recasso Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi AutomaticGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_AutomaticGun]",
|
||||||
|
"modification_guid": "bafacc36-02c6-408c-a3f5-8c2aa07a68db",
|
||||||
|
"display_name": "Quest Sci-Fi AutomaticGun Skin Arbor",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi AutomaticGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_AutomaticGun]",
|
||||||
|
"modification_guid": "546b3a57-13d4-4c35-ab3a-bbb7d466f0b8",
|
||||||
|
"display_name": "Quest Sci-Fi AutomaticGun Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi AutomaticGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_AutomaticGun]",
|
||||||
|
"modification_guid": "dEmh0tniCkeYBY1EdD09jA",
|
||||||
|
"display_name": "Quest Sci-Fi AutomaticGun Zombie",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi AutomaticGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_Pistol]",
|
||||||
|
"modification_guid": "8a2a3219-fed0-4403-9061-451d162307c2",
|
||||||
|
"display_name": "Quest Sci-Fi Pistol CandyCane Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi Pistol.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_Pistol]",
|
||||||
|
"modification_guid": "5nQ2kF6h6kunbk5z18Lozg",
|
||||||
|
"display_name": "Quest Sci-Fi Pistol Frakenblaster Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi Pistol.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_Pistol]",
|
||||||
|
"modification_guid": "dRvcMuM__02iMsRwKEPtXQ",
|
||||||
|
"display_name": "Quest Sci-Fi Pistol Gold Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi Pistol.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_Pistol]",
|
||||||
|
"modification_guid": "aByJShU520OzdOXBV8o0Dg",
|
||||||
|
"display_name": "Quest Sci-Fi Pistol Plaid Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi Pistol.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_Pistol]",
|
||||||
|
"modification_guid": "0cFcVYCLTU6CKhr9uADrbw",
|
||||||
|
"display_name": "Quest Sci-Fi Pistol Recasso Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi Pistol.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_Pistol]",
|
||||||
|
"modification_guid": "33a7a3dc-5266-4075-b56f-5eaa2c400e9f",
|
||||||
|
"display_name": "Quest Sci-Fi Pistol Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi Pistol.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_Pistol]",
|
||||||
|
"modification_guid": "89b1fbbc-e7be-440b-8b22-8fd379c1a568",
|
||||||
|
"display_name": "Quest Sci-Fi Pistol Skin PINK",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi Pistol.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_Pistol]",
|
||||||
|
"modification_guid": "db91b61b-ab32-4895-8f5a-0212c1283cbb",
|
||||||
|
"display_name": "Quest Sci-Fi Pistol Skin Vitton",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi Pistol.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_RailGun]",
|
||||||
|
"modification_guid": "X9gTAbp0Sk6nadpTBseRrg",
|
||||||
|
"display_name": "Quest Sci-Fi RailGun LifeGuard Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi RailGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_RailGun]",
|
||||||
|
"modification_guid": "_flhynGnykyZL7F83B7rJQ",
|
||||||
|
"display_name": "Quest Sci-Fi RailGun Plaid Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi RailGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_RailGun]",
|
||||||
|
"modification_guid": "63a867d7-ccea-4905-b6e0-e6dcfba06f9e",
|
||||||
|
"display_name": "Quest Sci-Fi RailGun Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi RailGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_RailGun]",
|
||||||
|
"modification_guid": "46977ca7-ee75-4e2a-b8aa-0763879f8a96",
|
||||||
|
"display_name": "Quest Sci-Fi RailGun Skin PINK",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi RailGun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_Shotgun]",
|
||||||
|
"modification_guid": "pIRihZheSEW2Ld3VTLkB-g",
|
||||||
|
"display_name": "Quest Sci-Fi Shotgun Plaid Skin",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi Shotgun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_Shotgun]",
|
||||||
|
"modification_guid": "55a9c1e8-07e2-4457-86f2-75fd5e67b1f3",
|
||||||
|
"display_name": "Quest Sci-Fi Shotgun Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi Shotgun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_Shotgun]",
|
||||||
|
"modification_guid": "bb36b722-16dc-4172-b61f-237dc1240040",
|
||||||
|
"display_name": "Quest Sci-Fi Shotgun Skin Jackolantern",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi Shotgun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_Shotgun]",
|
||||||
|
"modification_guid": "83d7cca0-2c5d-41b2-a5b2-f79fd89f3037",
|
||||||
|
"display_name": "Quest Sci-Fi Shotgun Skin PINK",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi Shotgun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Quest_SciFi_Shotgun]",
|
||||||
|
"modification_guid": "cd497ae2-6382-42f2-9f92-93d5141588c3",
|
||||||
|
"display_name": "Quest Sci-Fi Shotgun Skin Valentine",
|
||||||
|
"tooltip": "Equipment skin for Quest Sci-Fi Shotgun.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestShield]",
|
||||||
|
"modification_guid": "a9a3292c-8ccf-4564-aeb1-124c52057ef2",
|
||||||
|
"display_name": "QuestShield Skin BlackGold",
|
||||||
|
"tooltip": "Equipment skin for QuestShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestShield]",
|
||||||
|
"modification_guid": "RQCgWA3Pf0KTqznUR58-lw",
|
||||||
|
"display_name": "QuestShield Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for QuestShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestShield]",
|
||||||
|
"modification_guid": "2389fce4-3ab2-4e05-918c-845eb8538bed",
|
||||||
|
"display_name": "QuestShield Skin Goblin",
|
||||||
|
"tooltip": "Equipment skin for QuestShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestShield]",
|
||||||
|
"modification_guid": "k0BVix46IEmgVrqUmFU3-Q",
|
||||||
|
"display_name": "QuestShield Skin Plaid",
|
||||||
|
"tooltip": "Equipment skin for QuestShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestShield]",
|
||||||
|
"modification_guid": "439be0eb-4d1e-4c80-97f8-b4636d0ce94b",
|
||||||
|
"display_name": "QuestShield Skin Pride",
|
||||||
|
"tooltip": "Equipment skin for QuestShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestShield]",
|
||||||
|
"modification_guid": "93f5418e-a03d-4074-804c-daa0e374dd9f",
|
||||||
|
"display_name": "QuestShield Skin Purple",
|
||||||
|
"tooltip": "Equipment skin for QuestShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestShield]",
|
||||||
|
"modification_guid": "a363ba1b-2f70-4c5f-943a-f45cfa59122b",
|
||||||
|
"display_name": "QuestShield Skin Rock",
|
||||||
|
"tooltip": "Equipment skin for QuestShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestShield]",
|
||||||
|
"modification_guid": "-rbKD_ztMUq69Nv4tLrrVA",
|
||||||
|
"display_name": "QuestShield Skin Snowflake",
|
||||||
|
"tooltip": "Equipment skin for QuestShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestShield]",
|
||||||
|
"modification_guid": "eb90210a-6d2d-4429-b1e0-3285333685fc",
|
||||||
|
"display_name": "QuestShield Skin Valentine",
|
||||||
|
"tooltip": "Equipment skin for QuestShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestShield]",
|
||||||
|
"modification_guid": "735b06c6-1b78-4f60-9291-a414a96cd228",
|
||||||
|
"display_name": "QuestShield Skin wood",
|
||||||
|
"tooltip": "Equipment skin for QuestShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestShield]",
|
||||||
|
"modification_guid": "affbab2d-3200-4512-a140-685fdc5570c6",
|
||||||
|
"display_name": "QuestShield Skin Yellow",
|
||||||
|
"tooltip": "Equipment skin for QuestShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestSword]",
|
||||||
|
"modification_guid": "eecdf81c-7ba2-40ba-9d6c-f461708cce16",
|
||||||
|
"display_name": "QuestSword Comic Skin",
|
||||||
|
"tooltip": "Equipment skin for QuestSword.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestSword]",
|
||||||
|
"modification_guid": "K9TzHZPDwU-ewzLYkr_1cg",
|
||||||
|
"display_name": "QuestSword Gingerbread Skin",
|
||||||
|
"tooltip": "Equipment skin for QuestSword.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestSword]",
|
||||||
|
"modification_guid": "m1JMjJYpSUiXj5897orm2Q",
|
||||||
|
"display_name": "QuestSword Plaid Skin",
|
||||||
|
"tooltip": "Equipment skin for QuestSword.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestSword]",
|
||||||
|
"modification_guid": "SbEIObEmhkKQniANHqNekg",
|
||||||
|
"display_name": "QuestSword Pumpkin Skin",
|
||||||
|
"tooltip": "Equipment skin for QuestSword.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestSword]",
|
||||||
|
"modification_guid": "Kitcy2AVB0-OdljiEAI2Pw",
|
||||||
|
"display_name": "QuestSword Recasso Skin",
|
||||||
|
"tooltip": "Equipment skin for QuestSword.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestSword]",
|
||||||
|
"modification_guid": "d97pbQMk9UWpEN0yoOE9Rg",
|
||||||
|
"display_name": "QuestSword Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for QuestSword.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestSword]",
|
||||||
|
"modification_guid": "wioj1rR1lkCx7f-oiCHcOw",
|
||||||
|
"display_name": "QuestSword Skin CornCob",
|
||||||
|
"tooltip": "Equipment skin for QuestSword.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestSword]",
|
||||||
|
"modification_guid": "0ee04d78-5a17-4a38-ae67-b576a41fc200",
|
||||||
|
"display_name": "QuestSword Skin Extra",
|
||||||
|
"tooltip": "Equipment skin for QuestSword.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestSword]",
|
||||||
|
"modification_guid": "431567d2-4df2-43eb-b632-3d79aa7c013c",
|
||||||
|
"display_name": "QuestSword Skin Gold",
|
||||||
|
"tooltip": "Equipment skin for QuestSword.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestSword]",
|
||||||
|
"modification_guid": "f03dee6a-79b8-4906-9abb-a821748d97a9",
|
||||||
|
"display_name": "QuestSword Skin Red",
|
||||||
|
"tooltip": "Equipment skin for QuestSword.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[QuestSword]",
|
||||||
|
"modification_guid": "3e46fb2d-bb3f-42ed-83ef-f5716860725c",
|
||||||
|
"display_name": "QuestSword Skin Rock",
|
||||||
|
"tooltip": "Equipment skin for QuestSword.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[RecRoyale_Backpack]",
|
||||||
|
"modification_guid": "ujZ4Hl0HO06OysqZcqHhmg",
|
||||||
|
"display_name": "Rec Royale Backpack Gold Skin",
|
||||||
|
"tooltip": "Equipment skin for Rec Royale Backpack.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[RecRoyale_Backpack]",
|
||||||
|
"modification_guid": "523e3615-4633-41a3-9b2d-17d3207a684b",
|
||||||
|
"display_name": "Rec Royale Backpack Skin Camo",
|
||||||
|
"tooltip": "Equipment skin for Rec Royale Backpack.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[RecRoyale_Backpack]",
|
||||||
|
"modification_guid": "6c3b26cd-b38e-492b-a124-759cbcec1396",
|
||||||
|
"display_name": "Rec Royale Backpack Skin Camping Pattern",
|
||||||
|
"tooltip": "Equipment skin for Rec Royale Backpack.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[RecRoyale_Backpack]",
|
||||||
|
"modification_guid": "5c848a04-f528-423b-8be1-4b5cd43a75c2",
|
||||||
|
"display_name": "Rec Royale Backpack Skin Denim",
|
||||||
|
"tooltip": "Equipment skin for Rec Royale Backpack.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[RecRoyale_Backpack]",
|
||||||
|
"modification_guid": "70uy5UJhhEy1aynKM4MAsQ",
|
||||||
|
"display_name": "Rec Royale Backpack Skin FallLeaves",
|
||||||
|
"tooltip": "Equipment skin for Rec Royale Backpack.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[RecRoyale_Backpack]",
|
||||||
|
"modification_guid": "e93f5ab7-e9bf-4652-8a7c-2ae120f25f87",
|
||||||
|
"display_name": "Rec Royale Backpack Skin Recasso",
|
||||||
|
"tooltip": "Equipment skin for Rec Royale Backpack.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[RecRoyale_Backpack]",
|
||||||
|
"modification_guid": "12b54ad2-3847-41db-9ed4-88e8dad63024",
|
||||||
|
"display_name": "Rec Royale Backpack Skin Tiger",
|
||||||
|
"tooltip": "Equipment skin for Rec Royale Backpack.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[RecRoyale_Backpack]",
|
||||||
|
"modification_guid": "w2NNBTTCVEah2WlP0JHezQ",
|
||||||
|
"display_name": "Rec Royale Backpack Skin Valentine",
|
||||||
|
"tooltip": "Equipment skin for Rec Royale Backpack.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D10]",
|
||||||
|
"modification_guid": "GjQwBmNnK0ukv0hEEHK8tw",
|
||||||
|
"display_name": "Sandbox D10 Skin BoneWhite",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D10.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D10]",
|
||||||
|
"modification_guid": "I161QAym2kqPi5wXIHCt8A",
|
||||||
|
"display_name": "Sandbox D10 Skin Pewter",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D10.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D10]",
|
||||||
|
"modification_guid": "ZM543HEyl0G6n7P5rDMEWw",
|
||||||
|
"display_name": "Sandbox D10 Skin Pink",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D10.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D10]",
|
||||||
|
"modification_guid": "SnSOf-GZ2kastpF5KWxT-Q",
|
||||||
|
"display_name": "Sandbox D10 Skin Turquoise",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D10.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D12]",
|
||||||
|
"modification_guid": "heFLfpPNd0-nhLOFpUCnpA",
|
||||||
|
"display_name": "Sandbox D12 Skin BoneWhite",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D12.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D12]",
|
||||||
|
"modification_guid": "2gYYjbVGqkiOefY2xjOxiQ",
|
||||||
|
"display_name": "Sandbox D12 Skin Pewter",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D12.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D12]",
|
||||||
|
"modification_guid": "EoV2ZoLR2UWY898p8j7qGQ",
|
||||||
|
"display_name": "Sandbox D12 Skin Pink",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D12.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D12]",
|
||||||
|
"modification_guid": "ub6apg3zEUiCp3k81JjQGw",
|
||||||
|
"display_name": "Sandbox D12 Skin Turquoise",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D12.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D20]",
|
||||||
|
"modification_guid": "gXOOKrQEYE-FmS3uXWj1hA",
|
||||||
|
"display_name": "Sandbox D20 Skin BoneWhite",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D20.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D20]",
|
||||||
|
"modification_guid": "H3vrSi45AU6lshChLnr19Q",
|
||||||
|
"display_name": "Sandbox D20 Skin Pewter",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D20.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D20]",
|
||||||
|
"modification_guid": "Des7txtX0EO-7NiooR0-ow",
|
||||||
|
"display_name": "Sandbox D20 Skin Pink",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D20.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D20]",
|
||||||
|
"modification_guid": "DrG0ntsyPUSv8ra0m-Hhaw",
|
||||||
|
"display_name": "Sandbox D20 Skin Turquoise",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D20.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D4]",
|
||||||
|
"modification_guid": "x3Cv42hIkkaNIy7fHZiWYg",
|
||||||
|
"display_name": "Sandbox D4 Skin BoneWhite",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D4.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D4]",
|
||||||
|
"modification_guid": "WxWaXY61mUuNe_f6SgECnA",
|
||||||
|
"display_name": "Sandbox D4 Skin Pewter",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D4.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D4]",
|
||||||
|
"modification_guid": "KiVWBp5_J0qCLuizAJGcAg",
|
||||||
|
"display_name": "Sandbox D4 Skin Pink",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D4.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D4]",
|
||||||
|
"modification_guid": "_2jxSTYSpEykZ_O91oDAzg",
|
||||||
|
"display_name": "Sandbox D4 Skin Turquoise",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D4.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D6]",
|
||||||
|
"modification_guid": "Fn0gcj17c06tA9s98CKwAg",
|
||||||
|
"display_name": "Sandbox D6 Skin BoneWhite",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D6.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D6]",
|
||||||
|
"modification_guid": "5U_KiCi_90-eWucQ68VdZQ",
|
||||||
|
"display_name": "Sandbox D6 Skin Pewter",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D6.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D6]",
|
||||||
|
"modification_guid": "TxIu8CUjykGDMr5RIJcNVQ",
|
||||||
|
"display_name": "Sandbox D6 Skin Pink",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D6.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D6]",
|
||||||
|
"modification_guid": "HnVo08F-zk-YeikERFa1Yw",
|
||||||
|
"display_name": "Sandbox D6 Skin Turquoise",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D6.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D8]",
|
||||||
|
"modification_guid": "d_CbCG3DmUCtWGWYHioghg",
|
||||||
|
"display_name": "Sandbox D8 Skin BoneWhite",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D8.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D8]",
|
||||||
|
"modification_guid": "77cRA0O4GUqd6nr9QLefQA",
|
||||||
|
"display_name": "Sandbox D8 Skin Pewter",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D8.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D8]",
|
||||||
|
"modification_guid": "AQXXckjNZ0uzPMTcP1C3Kg",
|
||||||
|
"display_name": "Sandbox D8 Skin Pink",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D8.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[Sandbox_D8]",
|
||||||
|
"modification_guid": "f45tTZp4KUextmAsX8X9Hw",
|
||||||
|
"display_name": "Sandbox D8 Skin Turquoise",
|
||||||
|
"tooltip": "Equipment skin for Sandbox D8.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[ShareCamera]",
|
||||||
|
"modification_guid": "znrJSCX_SkS-kIPqMERoDg",
|
||||||
|
"display_name": "ShareCamera Skin Camping",
|
||||||
|
"tooltip": "Equipment skin for ShareCamera.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[ShareCamera]",
|
||||||
|
"modification_guid": "fSbzGxsjKE-cwtFFX6dJQw",
|
||||||
|
"display_name": "ShareCamera Skin Carpet",
|
||||||
|
"tooltip": "Equipment skin for ShareCamera.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[ShareCamera]",
|
||||||
|
"modification_guid": "SkTa53OzM0u82YPuZAl9aw",
|
||||||
|
"display_name": "ShareCamera Skin Caution",
|
||||||
|
"tooltip": "Equipment skin for ShareCamera.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[ShareCamera]",
|
||||||
|
"modification_guid": "g5u0weNLmkCLeUXFUVn74Q",
|
||||||
|
"display_name": "ShareCamera Skin Comic",
|
||||||
|
"tooltip": "Equipment skin for ShareCamera.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[ShareCamera]",
|
||||||
|
"modification_guid": "e2844f84-ab44-4141-9a0a-bd5da7caa4f6",
|
||||||
|
"display_name": "ShareCamera Skin Disposable",
|
||||||
|
"tooltip": "Equipment skin for ShareCamera.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[ShareCamera]",
|
||||||
|
"modification_guid": "1838fa61-de10-4e09-b24a-f5a1bc942600",
|
||||||
|
"display_name": "ShareCamera Skin Green",
|
||||||
|
"tooltip": "Equipment skin for ShareCamera.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[ShareCamera]",
|
||||||
|
"modification_guid": "QQALCzCF-0ClDWqmmciHAQ",
|
||||||
|
"display_name": "ShareCamera Skin Heart",
|
||||||
|
"tooltip": "Equipment skin for ShareCamera.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[ShareCamera]",
|
||||||
|
"modification_guid": "sE4_-ZVa2EC4MZfGGsExzQ",
|
||||||
|
"display_name": "ShareCamera Skin Plaid",
|
||||||
|
"tooltip": "Equipment skin for ShareCamera.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[ShareCamera]",
|
||||||
|
"modification_guid": "ATGtNjai20miFwBUOVIMuw",
|
||||||
|
"display_name": "ShareCamera Skin TwoTone",
|
||||||
|
"tooltip": "Equipment skin for ShareCamera.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[ShareCamera]",
|
||||||
|
"modification_guid": "d218ae45-8534-4f96-b2ed-1cf281bc3578",
|
||||||
|
"display_name": "ShareCamera Skin Wood",
|
||||||
|
"tooltip": "Equipment skin for ShareCamera.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"prefab_name": "[SoccerShield]",
|
||||||
|
"modification_guid": "fae1abe3-6bfd-4407-b34e-e2c1b3b03032",
|
||||||
|
"display_name": "SoccerShield Gingerbread Skin",
|
||||||
|
"tooltip": "Equipment skin for SoccerShield.",
|
||||||
|
"rarity": 10,
|
||||||
|
"storefront": "main",
|
||||||
|
"price": 100,
|
||||||
|
"image_name": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -133,6 +133,7 @@ public class PrivateInstanceService(DorkNetDbContext db)
|
|||||||
if (existing.DataBlob != dataBlob) { existing.DataBlob = dataBlob; changed = true; }
|
if (existing.DataBlob != dataBlob) { existing.DataBlob = dataBlob; changed = true; }
|
||||||
if (existing.Location != location) { existing.Location = location; changed = true; }
|
if (existing.Location != location) { existing.Location = location; changed = true; }
|
||||||
if (existing.PhotonRegion != photonRegion) { existing.PhotonRegion = photonRegion; changed = true; }
|
if (existing.PhotonRegion != photonRegion) { existing.PhotonRegion = photonRegion; changed = true; }
|
||||||
|
if (existing.Name != baseName) { existing.Name = baseName; changed = true; }
|
||||||
if (changed) await db.SaveChangesAsync();
|
if (changed) await db.SaveChangesAsync();
|
||||||
return ToRecord(existing);
|
return ToRecord(existing);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user