Compare commits
1 Commits
6a1530f746
...
f3c69a43a5
Author | SHA1 | Date | |
---|---|---|---|
f3c69a43a5 |
@ -53,7 +53,6 @@ export const artifactTransmutationController: RequestHandler = async (req, res)
|
||||
RARE: 0,
|
||||
LEGENDARY: 0
|
||||
};
|
||||
let forcedPolarity: string | undefined;
|
||||
payload.Consumed.forEach(upgrade => {
|
||||
const meta = ExportUpgrades[upgrade.ItemType];
|
||||
counts[meta.rarity] += upgrade.ItemCount;
|
||||
@ -63,13 +62,6 @@ export const artifactTransmutationController: RequestHandler = async (req, res)
|
||||
ItemCount: upgrade.ItemCount * -1
|
||||
}
|
||||
]);
|
||||
if (upgrade.ItemType == "/Lotus/Upgrades/Mods/TransmuteCores/AttackTransmuteCore") {
|
||||
forcedPolarity = "AP_ATTACK";
|
||||
} else if (upgrade.ItemType == "/Lotus/Upgrades/Mods/TransmuteCores/DefenseTransmuteCore") {
|
||||
forcedPolarity = "AP_DEFENSE";
|
||||
} else if (upgrade.ItemType == "/Lotus/Upgrades/Mods/TransmuteCores/TacticTransmuteCore") {
|
||||
forcedPolarity = "AP_TACTIC";
|
||||
}
|
||||
});
|
||||
|
||||
// Based on the table on https://wiki.warframe.com/w/Transmutation
|
||||
@ -82,7 +74,7 @@ export const artifactTransmutationController: RequestHandler = async (req, res)
|
||||
|
||||
const options: { uniqueName: string; rarity: TRarity }[] = [];
|
||||
Object.entries(ExportUpgrades).forEach(([uniqueName, upgrade]) => {
|
||||
if (upgrade.canBeTransmutation && (!forcedPolarity || upgrade.polarity == forcedPolarity)) {
|
||||
if (upgrade.canBeTransmutation) {
|
||||
options.push({ uniqueName, rarity: upgrade.rarity });
|
||||
}
|
||||
});
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { GuildMember, TGuildDatabaseDocument } from "@/src/models/guildModel";
|
||||
import { TGuildDatabaseDocument } from "@/src/models/guildModel";
|
||||
import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
|
||||
import {
|
||||
getDojoClient,
|
||||
@ -10,7 +10,7 @@ import {
|
||||
} from "@/src/services/guildService";
|
||||
import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService";
|
||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||
import { IDojoContributable, IGuildMemberDatabase } from "@/src/types/guildTypes";
|
||||
import { IDojoContributable } from "@/src/types/guildTypes";
|
||||
import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||
import { IInventoryChanges } from "@/src/types/purchaseTypes";
|
||||
import { RequestHandler } from "express";
|
||||
@ -35,10 +35,6 @@ export const contributeToDojoComponentController: RequestHandler = async (req, r
|
||||
return;
|
||||
}
|
||||
const guild = await getGuildForRequestEx(req, inventory);
|
||||
const guildMember = (await GuildMember.findOne(
|
||||
{ accountId, guildId: guild._id },
|
||||
"RegularCreditsContributed MiscItemsContributed"
|
||||
))!;
|
||||
const request = JSON.parse(String(req.body)) as IContributeToDojoComponentRequest;
|
||||
const component = guild.DojoComponents.id(request.ComponentId)!;
|
||||
|
||||
@ -49,7 +45,7 @@ export const contributeToDojoComponentController: RequestHandler = async (req, r
|
||||
throw new Error("attempt to contribute to a deco in an unfinished room?!");
|
||||
}
|
||||
const meta = Object.values(ExportDojoRecipes.rooms).find(x => x.resultType == component.pf)!;
|
||||
processContribution(guild, guildMember, request, inventory, inventoryChanges, meta, component);
|
||||
processContribution(guild, request, inventory, inventoryChanges, meta, component);
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
if (component.CompletionTime) {
|
||||
setDojoRoomLogFunded(guild, component);
|
||||
@ -59,13 +55,12 @@ export const contributeToDojoComponentController: RequestHandler = async (req, r
|
||||
if (request.DecoId) {
|
||||
const deco = component.Decos!.find(x => x._id.equals(request.DecoId))!;
|
||||
const meta = Object.values(ExportDojoRecipes.decos).find(x => x.resultType == deco.Type)!;
|
||||
processContribution(guild, guildMember, request, inventory, inventoryChanges, meta, deco);
|
||||
processContribution(guild, request, inventory, inventoryChanges, meta, deco);
|
||||
}
|
||||
}
|
||||
|
||||
await guild.save();
|
||||
await inventory.save();
|
||||
await guildMember.save();
|
||||
res.json({
|
||||
...(await getDojoClient(guild, 0, component._id)),
|
||||
InventoryChanges: inventoryChanges
|
||||
@ -74,7 +69,6 @@ export const contributeToDojoComponentController: RequestHandler = async (req, r
|
||||
|
||||
const processContribution = (
|
||||
guild: TGuildDatabaseDocument,
|
||||
guildMember: IGuildMemberDatabase,
|
||||
request: IContributeToDojoComponentRequest,
|
||||
inventory: TInventoryDatabaseDocument,
|
||||
inventoryChanges: IInventoryChanges,
|
||||
@ -86,9 +80,6 @@ const processContribution = (
|
||||
component.RegularCredits += request.RegularCredits;
|
||||
inventoryChanges.RegularCredits = -request.RegularCredits;
|
||||
updateCurrency(inventory, request.RegularCredits, false);
|
||||
|
||||
guildMember.RegularCreditsContributed ??= 0;
|
||||
guildMember.RegularCreditsContributed += request.RegularCredits;
|
||||
}
|
||||
if (request.VaultCredits) {
|
||||
component.RegularCredits += request.VaultCredits;
|
||||
@ -142,9 +133,6 @@ const processContribution = (
|
||||
ItemType: ingredientContribution.ItemType,
|
||||
ItemCount: ingredientContribution.ItemCount * -1
|
||||
});
|
||||
|
||||
guildMember.MiscItemsContributed ??= [];
|
||||
guildMember.MiscItemsContributed.push(ingredientContribution);
|
||||
}
|
||||
addMiscItems(inventory, miscItemChanges);
|
||||
inventoryChanges.MiscItems = miscItemChanges;
|
||||
|
@ -1,4 +1,3 @@
|
||||
import { GuildMember } from "@/src/models/guildModel";
|
||||
import { getGuildForRequestEx } from "@/src/services/guildService";
|
||||
import { addFusionTreasures, addMiscItems, addShipDecorations, getInventory } from "@/src/services/inventoryService";
|
||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||
@ -9,34 +8,23 @@ export const contributeToVaultController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const inventory = await getInventory(accountId);
|
||||
const guild = await getGuildForRequestEx(req, inventory);
|
||||
const guildMember = (await GuildMember.findOne(
|
||||
{ accountId, guildId: guild._id },
|
||||
"RegularCreditsContributed MiscItemsContributed ShipDecorationsContributed"
|
||||
))!;
|
||||
const request = JSON.parse(String(req.body)) as IContributeToVaultRequest;
|
||||
|
||||
if (request.RegularCredits) {
|
||||
guild.VaultRegularCredits ??= 0;
|
||||
guild.VaultRegularCredits += request.RegularCredits;
|
||||
|
||||
guildMember.RegularCreditsContributed ??= 0;
|
||||
guildMember.RegularCreditsContributed += request.RegularCredits;
|
||||
}
|
||||
if (request.MiscItems.length) {
|
||||
guild.VaultMiscItems ??= [];
|
||||
guildMember.MiscItemsContributed ??= [];
|
||||
for (const item of request.MiscItems) {
|
||||
guild.VaultMiscItems.push(item);
|
||||
guildMember.MiscItemsContributed.push(item);
|
||||
addMiscItems(inventory, [{ ...item, ItemCount: item.ItemCount * -1 }]);
|
||||
}
|
||||
}
|
||||
if (request.ShipDecorations.length) {
|
||||
guild.VaultShipDecorations ??= [];
|
||||
guildMember.ShipDecorationsContributed ??= [];
|
||||
for (const item of request.ShipDecorations) {
|
||||
guild.VaultShipDecorations.push(item);
|
||||
guildMember.ShipDecorationsContributed.push(item);
|
||||
addShipDecorations(inventory, [{ ...item, ItemCount: item.ItemCount * -1 }]);
|
||||
}
|
||||
}
|
||||
@ -50,7 +38,6 @@ export const contributeToVaultController: RequestHandler = async (req, res) => {
|
||||
|
||||
await guild.save();
|
||||
await inventory.save();
|
||||
await guildMember.save();
|
||||
res.end();
|
||||
};
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
import { GuildMember } from "@/src/models/guildModel";
|
||||
import { getDojoClient, getGuildForRequestEx, hasAccessToDojo, scaleRequiredCount } from "@/src/services/guildService";
|
||||
import { getInventory, updateCurrency } from "@/src/services/inventoryService";
|
||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||
@ -49,12 +48,6 @@ export const dojoComponentRushController: RequestHandler = async (req, res) => {
|
||||
|
||||
await guild.save();
|
||||
await inventory.save();
|
||||
|
||||
const guildMember = (await GuildMember.findOne({ accountId, guildId: guild._id }, "PremiumCreditsContributed"))!;
|
||||
guildMember.PremiumCreditsContributed ??= 0;
|
||||
guildMember.PremiumCreditsContributed += request.Amount;
|
||||
await guildMember.save();
|
||||
|
||||
res.json({
|
||||
...(await getDojoClient(guild, 0, component._id)),
|
||||
InventoryChanges: inventoryChanges
|
||||
|
@ -1,18 +0,0 @@
|
||||
import { GuildMember } from "@/src/models/guildModel";
|
||||
import { getInventory } from "@/src/services/inventoryService";
|
||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||
import { RequestHandler } from "express";
|
||||
|
||||
export const getGuildContributionsController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const guildId = (await getInventory(accountId, "GuildId")).GuildId;
|
||||
const guildMember = (await GuildMember.findOne({ guildId, accountId: req.query.buddyId }))!;
|
||||
res.json({
|
||||
_id: { $oid: req.query.buddyId },
|
||||
RegularCreditsContributed: guildMember.RegularCreditsContributed,
|
||||
PremiumCreditsContributed: guildMember.PremiumCreditsContributed,
|
||||
MiscItemsContributed: guildMember.MiscItemsContributed,
|
||||
ConsumablesContributed: [], // ???
|
||||
ShipDecorationsContributed: guildMember.ShipDecorationsContributed
|
||||
});
|
||||
};
|
@ -21,7 +21,7 @@ import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||
import { IInventoryChanges } from "@/src/types/purchaseTypes";
|
||||
import { config } from "@/src/services/configService";
|
||||
import { GuildPermission, ITechProjectClient, ITechProjectDatabase } from "@/src/types/guildTypes";
|
||||
import { GuildMember, TGuildDatabaseDocument } from "@/src/models/guildModel";
|
||||
import { TGuildDatabaseDocument } from "@/src/models/guildModel";
|
||||
import { toMongoDate } from "@/src/helpers/inventoryHelpers";
|
||||
import { logger } from "@/src/utils/logger";
|
||||
|
||||
@ -90,12 +90,6 @@ export const guildTechController: RequestHandler = async (req, res) => {
|
||||
res.status(400).send("-1").end();
|
||||
return;
|
||||
}
|
||||
|
||||
const guildMember = (await GuildMember.findOne(
|
||||
{ accountId, guildId: guild._id },
|
||||
"RegularCreditsContributed MiscItemsContributed"
|
||||
))!;
|
||||
|
||||
const contributions = data;
|
||||
const techProject = guild.TechProjects!.find(x => x.ItemType == contributions.RecipeType)!;
|
||||
|
||||
@ -112,9 +106,6 @@ export const guildTechController: RequestHandler = async (req, res) => {
|
||||
}
|
||||
techProject.ReqCredits -= contributions.RegularCredits;
|
||||
|
||||
guildMember.RegularCreditsContributed ??= 0;
|
||||
guildMember.RegularCreditsContributed += contributions.RegularCredits;
|
||||
|
||||
if (contributions.VaultMiscItems.length) {
|
||||
for (const miscItem of contributions.VaultMiscItems) {
|
||||
const reqItem = techProject.ReqItems.find(x => x.ItemType == miscItem.ItemType);
|
||||
@ -142,9 +133,6 @@ export const guildTechController: RequestHandler = async (req, res) => {
|
||||
ItemType: miscItem.ItemType,
|
||||
ItemCount: miscItem.ItemCount * -1
|
||||
});
|
||||
|
||||
guildMember.MiscItemsContributed ??= [];
|
||||
guildMember.MiscItemsContributed.push(miscItem);
|
||||
}
|
||||
}
|
||||
addMiscItems(inventory, miscItemChanges);
|
||||
@ -163,7 +151,6 @@ export const guildTechController: RequestHandler = async (req, res) => {
|
||||
|
||||
await guild.save();
|
||||
await inventory.save();
|
||||
await guildMember.save();
|
||||
res.json({
|
||||
InventoryChanges: inventoryChanges,
|
||||
Vault: getGuildVault(guild)
|
||||
|
@ -1,45 +0,0 @@
|
||||
import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
||||
import { addBooster, getInventory } from "@/src/services/inventoryService";
|
||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||
import { getRandomInt } from "@/src/services/rngService";
|
||||
import { RequestHandler } from "express";
|
||||
import { ExportBoosters } from "warframe-public-export-plus";
|
||||
|
||||
export const hubBlessingController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const data = getJSONfromString<IHubBlessingRequest>(String(req.body));
|
||||
const boosterType = ExportBoosters[data.booster].typeName;
|
||||
if (req.query.mode == "send") {
|
||||
const inventory = await getInventory(accountId, "BlessingCooldown Boosters");
|
||||
inventory.BlessingCooldown = new Date(Date.now() + 86400000);
|
||||
addBooster(boosterType, 3 * 3600, inventory);
|
||||
await inventory.save();
|
||||
|
||||
let token = "";
|
||||
for (let i = 0; i != 32; ++i) {
|
||||
token += getRandomInt(0, 15).toString(16);
|
||||
}
|
||||
|
||||
res.json({
|
||||
BlessingCooldown: inventory.BlessingCooldown,
|
||||
SendTime: Math.trunc(Date.now() / 1000).toString(),
|
||||
Token: token
|
||||
});
|
||||
} else {
|
||||
const inventory = await getInventory(accountId, "Boosters");
|
||||
addBooster(boosterType, 3 * 3600, inventory);
|
||||
await inventory.save();
|
||||
|
||||
res.json({
|
||||
BoosterType: data.booster,
|
||||
Sender: data.senderId
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
interface IHubBlessingRequest {
|
||||
booster: string;
|
||||
senderId?: string; // mode=request
|
||||
sendTime?: string; // mode=request
|
||||
token?: string; // mode=request
|
||||
}
|
@ -1,28 +1,19 @@
|
||||
import { RequestHandler } from "express";
|
||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||
import { Account } from "@/src/models/loginModel";
|
||||
|
||||
export const logoutController: RequestHandler = async (req, res) => {
|
||||
if (!req.query.accountId) {
|
||||
throw new Error("Request is missing accountId parameter");
|
||||
const logoutController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const account = await Account.findById(accountId);
|
||||
if (account) {
|
||||
account.Nonce = 0;
|
||||
await account.save();
|
||||
}
|
||||
const nonce: number = parseInt(req.query.nonce as string);
|
||||
if (!nonce) {
|
||||
throw new Error("Request is missing nonce parameter");
|
||||
}
|
||||
|
||||
await Account.updateOne(
|
||||
{
|
||||
_id: req.query.accountId,
|
||||
Nonce: nonce
|
||||
},
|
||||
{
|
||||
Nonce: 0
|
||||
}
|
||||
);
|
||||
|
||||
res.writeHead(200, {
|
||||
"Content-Type": "text/html",
|
||||
"Content-Length": 1
|
||||
});
|
||||
res.end("1");
|
||||
};
|
||||
|
||||
export { logoutController };
|
||||
|
@ -1,17 +1,12 @@
|
||||
import { getLeaderboard } from "@/src/services/leaderboardService";
|
||||
import { logger } from "@/src/utils/logger";
|
||||
import { RequestHandler } from "express";
|
||||
|
||||
export const leaderboardController: RequestHandler = async (req, res) => {
|
||||
logger.debug(`data provided to ${req.path}: ${String(req.body)}`);
|
||||
const payload = JSON.parse(String(req.body)) as ILeaderboardRequest;
|
||||
res.json({
|
||||
results: await getLeaderboard(
|
||||
payload.field,
|
||||
payload.before,
|
||||
payload.after,
|
||||
payload.pivotId,
|
||||
payload.guildId,
|
||||
payload.guildTier
|
||||
)
|
||||
results: await getLeaderboard(payload.field, payload.before, payload.after, payload.guildId, payload.pivotId)
|
||||
});
|
||||
};
|
||||
|
||||
@ -19,7 +14,6 @@ interface ILeaderboardRequest {
|
||||
field: string;
|
||||
before: number;
|
||||
after: number;
|
||||
pivotId?: string;
|
||||
guildId?: string;
|
||||
guildTier?: number;
|
||||
pivotId?: string;
|
||||
}
|
||||
|
@ -215,11 +215,7 @@ const guildMemberSchema = new Schema<IGuildMemberDatabase>({
|
||||
accountId: Types.ObjectId,
|
||||
guildId: Types.ObjectId,
|
||||
status: { type: Number, required: true },
|
||||
rank: { type: Number, default: 7 },
|
||||
RegularCreditsContributed: Number,
|
||||
PremiumCreditsContributed: Number,
|
||||
MiscItemsContributed: { type: [typeCountSchema], default: undefined },
|
||||
ShipDecorationsContributed: { type: [typeCountSchema], default: undefined }
|
||||
rank: { type: Number, default: 7 }
|
||||
});
|
||||
|
||||
guildMemberSchema.index({ accountId: 1, guildId: 1 }, { unique: true });
|
||||
|
@ -82,7 +82,6 @@ import {
|
||||
INemesisDatabase,
|
||||
INemesisClient,
|
||||
IInfNode,
|
||||
IDiscoveredMarker,
|
||||
IWeeklyMission
|
||||
} from "../../types/inventoryTypes/inventoryTypes";
|
||||
import { IOid } from "../../types/commonTypes";
|
||||
@ -379,14 +378,6 @@ droneSchema.set("toJSON", {
|
||||
}
|
||||
});
|
||||
|
||||
const discoveredMarkerSchema = new Schema<IDiscoveredMarker>(
|
||||
{
|
||||
tag: String,
|
||||
discoveryState: [Number]
|
||||
},
|
||||
{ _id: false }
|
||||
);
|
||||
|
||||
const challengeProgressSchema = new Schema<IChallengeProgress>(
|
||||
{
|
||||
Progress: Number,
|
||||
@ -1357,7 +1348,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
||||
ActiveAvatarImageType: { type: String, default: "/Lotus/Types/StoreItems/AvatarImages/AvatarImageDefault" },
|
||||
|
||||
// open location store like EidolonPlainsDiscoverable or OrbVallisCaveDiscoverable
|
||||
DiscoveredMarkers: [discoveredMarkerSchema],
|
||||
DiscoveredMarkers: [Schema.Types.Mixed],
|
||||
//Open location mission like "JobId" + "StageCompletions"
|
||||
CompletedJobs: [Schema.Types.Mixed],
|
||||
|
||||
|
@ -8,8 +8,7 @@ const leaderboardEntrySchema = new Schema<ILeaderboardEntryDatabase>(
|
||||
displayName: { type: String, required: true },
|
||||
score: { type: Number, required: true },
|
||||
guildId: Schema.Types.ObjectId,
|
||||
expiry: { type: Date, required: true },
|
||||
guildTier: Number
|
||||
expiry: { type: Date, required: true }
|
||||
},
|
||||
{ id: false }
|
||||
);
|
||||
|
@ -42,7 +42,6 @@ import { genericUpdateController } from "@/src/controllers/api/genericUpdateCont
|
||||
import { getAllianceController } from "@/src/controllers/api/getAllianceController";
|
||||
import { getDailyDealStockLevelsController } from "@/src/controllers/api/getDailyDealStockLevelsController";
|
||||
import { getFriendsController } from "@/src/controllers/api/getFriendsController";
|
||||
import { getGuildContributionsController } from "@/src/controllers/api/getGuildContributionsController";
|
||||
import { getGuildController } from "@/src/controllers/api/getGuildController";
|
||||
import { getGuildDojoController } from "@/src/controllers/api/getGuildDojoController";
|
||||
import { getGuildLogController } from "@/src/controllers/api/getGuildLogController";
|
||||
@ -58,7 +57,6 @@ import { giveQuestKeyRewardController } from "@/src/controllers/api/giveQuestKey
|
||||
import { giveStartingGearController } from "@/src/controllers/api/giveStartingGearController";
|
||||
import { guildTechController } from "@/src/controllers/api/guildTechController";
|
||||
import { hostSessionController } from "@/src/controllers/api/hostSessionController";
|
||||
import { hubBlessingController } from "@/src/controllers/api/hubBlessingController";
|
||||
import { hubController } from "@/src/controllers/api/hubController";
|
||||
import { hubInstancesController } from "@/src/controllers/api/hubInstancesController";
|
||||
import { inboxController } from "@/src/controllers/api/inboxController";
|
||||
@ -140,7 +138,6 @@ apiRouter.get("/drones.php", dronesController);
|
||||
apiRouter.get("/getDailyDealStockLevels.php", getDailyDealStockLevelsController);
|
||||
apiRouter.get("/getFriends.php", getFriendsController);
|
||||
apiRouter.get("/getGuild.php", getGuildController);
|
||||
apiRouter.get("/getGuildContributions.php", getGuildContributionsController);
|
||||
apiRouter.get("/getGuildDojo.php", getGuildDojoController);
|
||||
apiRouter.get("/getGuildLog.php", getGuildLogController);
|
||||
apiRouter.get("/getIgnoredUsers.php", getIgnoredUsersController);
|
||||
@ -210,7 +207,6 @@ apiRouter.post("/giveQuestKeyReward.php", giveQuestKeyRewardController);
|
||||
apiRouter.post("/giveStartingGear.php", giveStartingGearController);
|
||||
apiRouter.post("/guildTech.php", guildTechController);
|
||||
apiRouter.post("/hostSession.php", hostSessionController);
|
||||
apiRouter.post("/hubBlessing.php", hubBlessingController);
|
||||
apiRouter.post("/infestedFoundry.php", infestedFoundryController);
|
||||
apiRouter.post("/inventorySlots.php", inventorySlotsController);
|
||||
apiRouter.post("/joinSession.php", joinSessionController);
|
||||
|
@ -58,7 +58,12 @@ export const getGuildClient = async (guild: TGuildDatabaseDocument, accountId: s
|
||||
if (guildMember.accountId.equals(accountId)) {
|
||||
missingEntry = false;
|
||||
} else {
|
||||
member.DisplayName = (await Account.findById(guildMember.accountId, "DisplayName"))!.DisplayName;
|
||||
member.DisplayName = (await Account.findOne(
|
||||
{
|
||||
_id: guildMember.accountId
|
||||
},
|
||||
"DisplayName"
|
||||
))!.DisplayName;
|
||||
await fillInInventoryDataForGuildMember(member);
|
||||
}
|
||||
members.push(member);
|
||||
|
@ -378,8 +378,8 @@ export const addItem = async (
|
||||
defaultOverwrites.Features = EquipmentFeatures.DOUBLE_CAPACITY;
|
||||
}
|
||||
if (
|
||||
weapon.defaultUpgrades?.[0]?.ItemType ==
|
||||
"/Lotus/Weapons/Grineer/KuvaLich/Upgrades/InnateDamageRandomMod"
|
||||
weapon.defaultUpgrades &&
|
||||
weapon.defaultUpgrades[0].ItemType == "/Lotus/Weapons/Grineer/KuvaLich/Upgrades/InnateDamageRandomMod"
|
||||
) {
|
||||
defaultOverwrites.UpgradeType = "/Lotus/Weapons/Grineer/KuvaLich/Upgrades/InnateDamageRandomMod";
|
||||
defaultOverwrites.UpgradeFingerprint = JSON.stringify({
|
||||
|
@ -1,15 +1,14 @@
|
||||
import { Guild } from "../models/guildModel";
|
||||
import { Leaderboard, TLeaderboardEntryDocument } from "../models/leaderboardModel";
|
||||
import { ILeaderboardEntryClient } from "../types/leaderboardTypes";
|
||||
|
||||
export const submitLeaderboardScore = async (
|
||||
schedule: "weekly" | "daily",
|
||||
leaderboard: string,
|
||||
ownerId: string,
|
||||
displayName: string,
|
||||
score: number,
|
||||
guildId?: string
|
||||
): Promise<void> => {
|
||||
const schedule = leaderboard.split(".")[0] as "daily" | "weekly";
|
||||
let expiry: Date;
|
||||
if (schedule == "daily") {
|
||||
expiry = new Date(Math.trunc(Date.now() / 86400000) * 86400000 + 86400000);
|
||||
@ -22,35 +21,23 @@ export const submitLeaderboardScore = async (
|
||||
expiry = new Date(weekEnd);
|
||||
}
|
||||
await Leaderboard.findOneAndUpdate(
|
||||
{ leaderboard: `${schedule}.accounts.${leaderboard}`, ownerId },
|
||||
{ leaderboard, ownerId },
|
||||
{ $max: { score }, $set: { displayName, guildId, expiry } },
|
||||
{ upsert: true }
|
||||
);
|
||||
if (guildId) {
|
||||
const guild = (await Guild.findById(guildId, "Name Tier"))!;
|
||||
await Leaderboard.findOneAndUpdate(
|
||||
{ leaderboard: `${schedule}.guilds.${leaderboard}`, ownerId: guildId },
|
||||
{ $max: { score }, $set: { displayName: guild.Name, guildTier: guild.Tier, expiry } },
|
||||
{ upsert: true }
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
export const getLeaderboard = async (
|
||||
leaderboard: string,
|
||||
before: number,
|
||||
after: number,
|
||||
pivotId?: string,
|
||||
guildId?: string,
|
||||
guildTier?: number
|
||||
pivotId?: string
|
||||
): Promise<ILeaderboardEntryClient[]> => {
|
||||
const filter: { leaderboard: string; guildId?: string; guildTier?: number } = { leaderboard };
|
||||
const filter: { leaderboard: string; guildId?: string } = { leaderboard };
|
||||
if (guildId) {
|
||||
filter.guildId = guildId;
|
||||
}
|
||||
if (guildTier) {
|
||||
filter.guildTier = guildTier;
|
||||
}
|
||||
|
||||
let entries: TLeaderboardEntryDocument[];
|
||||
let r: number;
|
||||
|
@ -83,13 +83,13 @@ const getRandomLoginReward = (rng: CRng, day: number, inventory: TInventoryDatab
|
||||
masteredItems.add(entry.ItemType);
|
||||
}
|
||||
const unmasteredItems = new Set();
|
||||
for (const [uniqueName, data] of Object.entries(ExportWeapons)) {
|
||||
if (data.variantType == "VT_NORMAL" && !masteredItems.has(uniqueName)) {
|
||||
for (const uniqueName of Object.keys(ExportWeapons)) {
|
||||
if (!masteredItems.has(uniqueName)) {
|
||||
unmasteredItems.add(uniqueName);
|
||||
}
|
||||
}
|
||||
for (const [uniqueName, data] of Object.entries(ExportWarframes)) {
|
||||
if (data.variantType == "VT_NORMAL" && !masteredItems.has(uniqueName)) {
|
||||
for (const uniqueName of Object.keys(ExportWarframes)) {
|
||||
if (!masteredItems.has(uniqueName)) {
|
||||
unmasteredItems.add(uniqueName);
|
||||
}
|
||||
}
|
||||
|
@ -74,8 +74,11 @@ export const getAccountForRequest = async (req: Request): Promise<TAccountDocume
|
||||
throw new Error("Request is missing nonce parameter");
|
||||
}
|
||||
|
||||
const account = await Account.findById(req.query.accountId);
|
||||
if (!account || account.Nonce != nonce) {
|
||||
const account = await Account.findOne({
|
||||
_id: req.query.accountId,
|
||||
Nonce: nonce
|
||||
});
|
||||
if (!account) {
|
||||
throw new Error("Invalid accountId-nonce pair");
|
||||
}
|
||||
if (account.Dropped && req.query.ct) {
|
||||
|
@ -43,7 +43,6 @@ import { createMessage } from "./inboxService";
|
||||
import kuriaMessage50 from "@/static/fixed_responses/kuriaMessages/fiftyPercent.json";
|
||||
import kuriaMessage75 from "@/static/fixed_responses/kuriaMessages/seventyFivePercent.json";
|
||||
import kuriaMessage100 from "@/static/fixed_responses/kuriaMessages/oneHundredPercent.json";
|
||||
import conservationAnimals from "@/static/fixed_responses/conservationAnimals.json";
|
||||
import { getInfNodes } from "@/src/helpers/nemesisHelpers";
|
||||
|
||||
const getRotations = (rotationCount: number): number[] => {
|
||||
@ -326,50 +325,6 @@ export const addMissionInventoryUpdates = async (
|
||||
inventory.DeathMarks = value;
|
||||
break;
|
||||
}
|
||||
case "CapturedAnimals": {
|
||||
for (const capturedAnimal of value) {
|
||||
const meta = conservationAnimals[capturedAnimal.AnimalType as keyof typeof conservationAnimals];
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
if (meta) {
|
||||
if (capturedAnimal.NumTags) {
|
||||
addMiscItems(inventory, [
|
||||
{
|
||||
ItemType: meta.tag,
|
||||
ItemCount: capturedAnimal.NumTags
|
||||
}
|
||||
]);
|
||||
}
|
||||
if (capturedAnimal.NumExtraRewards) {
|
||||
if ("extraReward" in meta) {
|
||||
addMiscItems(inventory, [
|
||||
{
|
||||
ItemType: meta.extraReward,
|
||||
ItemCount: capturedAnimal.NumExtraRewards
|
||||
}
|
||||
]);
|
||||
} else {
|
||||
logger.warn(
|
||||
`client attempted to claim unknown extra rewards for conservation of ${capturedAnimal.AnimalType}`
|
||||
);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logger.warn(`ignoring conservation of unknown AnimalType: ${capturedAnimal.AnimalType}`);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "DiscoveredMarkers": {
|
||||
for (const clientMarker of value) {
|
||||
const dbMarker = inventory.DiscoveredMarkers.find(x => x.tag == clientMarker.tag);
|
||||
if (dbMarker) {
|
||||
dbMarker.discoveryState = clientMarker.discoveryState;
|
||||
} else {
|
||||
inventory.DiscoveredMarkers.push(clientMarker);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
// Equipment XP updates
|
||||
if (equipmentKeys.includes(key as TEquipmentKey)) {
|
||||
|
@ -286,15 +286,6 @@ export const updateStats = async (accountOwnerId: string, payload: IStatsUpdate)
|
||||
} else {
|
||||
playerStats.Missions.push({ type: type, highScore });
|
||||
}
|
||||
await submitLeaderboardScore(
|
||||
"weekly",
|
||||
type,
|
||||
accountOwnerId,
|
||||
payload.displayName,
|
||||
highScore,
|
||||
payload.guildId
|
||||
);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -313,42 +304,27 @@ export const updateStats = async (accountOwnerId: string, payload: IStatsUpdate)
|
||||
}
|
||||
|
||||
await submitLeaderboardScore(
|
||||
"daily",
|
||||
race,
|
||||
"daily.accounts." + race,
|
||||
accountOwnerId,
|
||||
payload.displayName,
|
||||
highScore,
|
||||
payload.guildId
|
||||
highScore
|
||||
);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case "ZephyrScore":
|
||||
case "SentinelGameScore":
|
||||
case "CaliberChicksScore":
|
||||
playerStats[category] ??= 0;
|
||||
if (data > playerStats[category]) playerStats[category] = data as number;
|
||||
break;
|
||||
|
||||
case "SentinelGameScore":
|
||||
playerStats[category] ??= 0;
|
||||
if (data > playerStats[category]) playerStats[category] = data as number;
|
||||
await submitLeaderboardScore(
|
||||
"weekly",
|
||||
category,
|
||||
accountOwnerId,
|
||||
payload.displayName,
|
||||
data as number,
|
||||
payload.guildId
|
||||
);
|
||||
break;
|
||||
|
||||
case "DojoObstacleScore":
|
||||
playerStats[category] ??= 0;
|
||||
if (data > playerStats[category]) playerStats[category] = data as number;
|
||||
await submitLeaderboardScore(
|
||||
"weekly",
|
||||
category,
|
||||
"weekly.accounts." + category,
|
||||
accountOwnerId,
|
||||
payload.displayName,
|
||||
data as number,
|
||||
@ -374,8 +350,7 @@ export const updateStats = async (accountOwnerId: string, payload: IStatsUpdate)
|
||||
}
|
||||
if (data > playerStats[category]) playerStats[category] = data as number;
|
||||
await submitLeaderboardScore(
|
||||
"weekly",
|
||||
category,
|
||||
"weekly.accounts." + category,
|
||||
accountOwnerId,
|
||||
payload.displayName,
|
||||
data as number
|
||||
|
@ -88,10 +88,6 @@ export interface IGuildMemberDatabase {
|
||||
guildId: Types.ObjectId;
|
||||
status: number;
|
||||
rank: number;
|
||||
RegularCreditsContributed?: number;
|
||||
PremiumCreditsContributed?: number;
|
||||
MiscItemsContributed?: IMiscItem[];
|
||||
ShipDecorationsContributed?: ITypeCount[];
|
||||
}
|
||||
|
||||
export interface IGuildMemberClient {
|
||||
|
@ -7,7 +7,6 @@ export interface ILeaderboardEntryDatabase {
|
||||
score: number;
|
||||
guildId?: Types.ObjectId;
|
||||
expiry: Date;
|
||||
guildTier?: number;
|
||||
}
|
||||
|
||||
export interface ILeaderboardEntryClient {
|
||||
|
@ -16,8 +16,7 @@ import {
|
||||
IQuestKeyDatabase,
|
||||
ILoreFragmentScan,
|
||||
IUpgradeClient,
|
||||
ICollectibleEntry,
|
||||
IDiscoveredMarker
|
||||
ICollectibleEntry
|
||||
} from "./inventoryTypes/inventoryTypes";
|
||||
|
||||
export interface IAffiliationChange {
|
||||
@ -100,14 +99,6 @@ export type IMissionInventoryUpdateRequest = {
|
||||
DeathMarks?: string[];
|
||||
Nemesis?: number;
|
||||
Boosters?: IBooster[];
|
||||
CapturedAnimals?: {
|
||||
AnimalType: string;
|
||||
CaptureRating: number;
|
||||
NumTags: number;
|
||||
NumExtraRewards: number;
|
||||
Count: number;
|
||||
}[];
|
||||
DiscoveredMarkers?: IDiscoveredMarker[];
|
||||
} & {
|
||||
[K in TEquipmentKey]?: IEquipmentClient[];
|
||||
};
|
||||
|
@ -1,491 +0,0 @@
|
||||
{
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/CommonBirdOfPreyAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/CommonFemaleBirdOfPreyAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/CommonMaleBirdOfPreyAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/RareBirdOfPreyAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/RareFemaleBirdOfPreyAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/RareMaleBirdOfPreyAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/UncommonBirdOfPreyAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/UncommonFemaleBirdOfPreyAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/UncommonMaleBirdOfPreyAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/BaseInfestedCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem",
|
||||
"extraReward": "/Lotus/Types/Items/Conservation/WoundedAnimalRewardItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/CommonInfestedCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedCritterCommon",
|
||||
"extraReward": "/Lotus/Types/Items/Deimos/WoundedInfestedCritterCommonRewardItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/RareInfestedCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedCritterRare",
|
||||
"extraReward": "/Lotus/Types/Items/Deimos/WoundedInfestedCritterRareRewardItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/UncommonInfestedCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedCritterUncommon",
|
||||
"extraReward": "/Lotus/Types/Items/Deimos/WoundedInfestedCritterUncommonRewardItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedKDrive/GrottoInfKDriveAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedKdriveUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedKDrive/HighlandInfKDriveAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedKdriveRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedKDrive/SwampInfKDriveAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedKdriveCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMaggot/CommonInfestedMaggotAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedMaggotCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMaggot/RareInfestedMaggotAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedMaggotRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMaggot/UncommonInfestedMaggotAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedMaggotUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMergoo/CommonInfestedMergooAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedMergooCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMergoo/RareInfestedMergooAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedMergooRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMergoo/UncommonInfestedMergooAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedMergooUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/BaseInfestedNexiferaAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedNexiferaCommon",
|
||||
"extraReward": "/Lotus/Types/Items/Conservation/WoundedAnimalRewardItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/CommonInfestedNexiferaAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedNexiferaCommon",
|
||||
"extraReward": "/Lotus/Types/Items/Conservation/WoundedAnimalRewardItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/RareInfestedNexiferaAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedNexiferaRare",
|
||||
"extraReward": "/Lotus/Types/Items/Conservation/WoundedAnimalRewardItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/UncommonInfestedNexiferaAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedNexiferaUncommon",
|
||||
"extraReward": "/Lotus/Types/Items/Conservation/WoundedAnimalRewardItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/BaseInfestedPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem",
|
||||
"extraReward": "/Lotus/Types/Items/Conservation/WoundedAnimalRewardItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/CommonInfestedPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedPredatorCommon",
|
||||
"extraReward": "/Lotus/Types/Items/Deimos/WoundedInfestedPredatorCommonRewardItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/RareInfestedPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedPredatorRare",
|
||||
"extraReward": "/Lotus/Types/Items/Deimos/WoundedInfestedPredatorRareRewardItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/UncommonInfestedPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedPredatorUncommon",
|
||||
"extraReward": "/Lotus/Types/Items/Deimos/WoundedInfestedPredatorUncommonRewardItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/BaseUndazoaAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedZongroCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/CommonUndazoaAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedZongroCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/RareUndazoaAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedZongroRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/UncommonUndazoaAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedZongroUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Duviri/Rabbit/BaseDuviriRabbitAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Duviri/Rabbit/TeshinRabbitAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Duviri/Rabbit/TeshinRabbitOnHandAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Duviri/Wolf/DuviriWolfAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/Duviri/Wolf/DuviriWolfConservationAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/CommonFemaleForestRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/CommonForestRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/CommonMaleForestRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/RareFemaleForestRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/RareForestRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/RareMaleForestRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/TutorialForestRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/UncommonFemaleForestRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/UncommonForestRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/UncommonMaleForestRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/BaseLegendaryKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/CommonFemaleLegendaryKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/CommonLegendaryKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/CommonMaleLegendaryKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/CommonPupLegendaryKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/RareFemaleLegendaryKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/RareLegendaryKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/RareMaleLegendaryKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/RarePupLegendaryKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/UncommonFemaleLegendaryKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/UncommonLegendaryKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/UncommonMaleLegendaryKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/UncommonPupLegendaryKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/BaseOrokinKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/CommonFemaleOrokinKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/CommonMaleOrokinKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/CommonOrokinKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/CommonPupOrokinKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/RareFemaleOrokinKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/RareMaleOrokinKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/RareOrokinKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/RarePupOrokinKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/UncommonFemaleOrokinKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/UncommonMaleOrokinKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/UncommonOrokinKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/UncommonPupOrokinKubrowAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/CommonFemaleOstronSeaBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/CommonMaleOstronSeaBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/CommonOstronSeaBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/RareFemaleOstronSeaBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/RareMaleOstronSeaBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/RareOstronSeaBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/UncommonFemaleOstronSeaBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/UncommonMaleOstronSeaBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/UncommonOstronSeaBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/BaseSnowArmadilloAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/CommonFemaleSnowArmadilloAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/CommonMaleSnowArmadilloAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/CommonPupSnowArmadilloAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/CommonSnowArmadilloAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/RareFemaleSnowArmadilloAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/RareMaleSnowArmadilloAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/RarePupSnowArmadilloAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/RareSnowArmadilloAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/UncommonFemaleSnowArmadilloAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/UncommonMaleSnowArmadilloAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/UncommonPupSnowArmadilloAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/UncommonSnowArmadilloAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/BaseSnowBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/CommonFemaleSnowBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/CommonMaleSnowBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/CommonPupSnowBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/CommonSnowBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/RareFemaleSnowBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/RareMaleSnowBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/RarePupSnowBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/RareSnowBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/UncommonFemaleSnowBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/UncommonMaleSnowBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/UncommonPupSnowBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/UncommonSnowBirdAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/BaseSnowCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/CommonFemaleSnowCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/CommonMaleSnowCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/CommonPupSnowCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/CommonSnowCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/RareFemaleSnowCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/RareMaleSnowCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/RarePupSnowCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/RareSnowCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/UncommonFemaleSnowCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/UncommonMaleSnowCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/UncommonPupSnowCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/UncommonSnowCritterAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/BaseSnowPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/CommonFemaleSnowPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/CommonMaleSnowPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/CommonPupSnowPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/CommonSnowPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/RareFemaleSnowPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/RareMaleSnowPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/RarePupSnowPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/RareSnowPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/UncommonFemaleSnowPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/UncommonMaleSnowPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/UncommonPupSnowPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/UncommonSnowPredatorAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/BaseSnowRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/CommonFemaleSnowRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/CommonMaleSnowRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/CommonSnowRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/RareFemaleSnowRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/RareMaleSnowRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/RareSnowRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/UncommonFemaleSnowRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/UncommonMaleSnowRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/UncommonSnowRodentAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/BaseVampireKavatAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/CommonVampireKavatAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/CommonVampireKavatCubAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/CommonVampireKavatFemaleAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/CommonVampireKavatMaleAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatCommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/RareVampireKavatAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/RareVampireKavatCubAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/RareVampireKavatFemaleAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/RareVampireKavatMaleAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatRare"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/UncommonVampireKavatAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/UncommonVampireKavatCubAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/UncommonVampireKavatFemaleAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatUncommon"
|
||||
},
|
||||
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/UncommonVampireKavatMaleAvatar": {
|
||||
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatUncommon"
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user