Compare commits
1 Commits
7fcac021a5
...
26ba2a4855
Author | SHA1 | Date | |
---|---|---|---|
26ba2a4855 |
@ -17,7 +17,7 @@ import { getDefaultUpgrades } from "@/src/services/itemDataService";
|
|||||||
import { modularWeaponTypes } from "@/src/helpers/modularWeaponHelper";
|
import { modularWeaponTypes } from "@/src/helpers/modularWeaponHelper";
|
||||||
import { IEquipmentDatabase } from "@/src/types/inventoryTypes/commonInventoryTypes";
|
import { IEquipmentDatabase } from "@/src/types/inventoryTypes/commonInventoryTypes";
|
||||||
import { getRandomInt } from "@/src/services/rngService";
|
import { getRandomInt } from "@/src/services/rngService";
|
||||||
import { ExportSentinels, ExportWeapons, IDefaultUpgrade } from "warframe-public-export-plus";
|
import { ExportSentinels, IDefaultUpgrade } from "warframe-public-export-plus";
|
||||||
import { Status } from "@/src/types/inventoryTypes/inventoryTypes";
|
import { Status } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||||
|
|
||||||
interface IModularCraftRequest {
|
interface IModularCraftRequest {
|
||||||
@ -138,18 +138,6 @@ export const modularWeaponCraftingController: RequestHandler = async (req, res)
|
|||||||
} else {
|
} else {
|
||||||
defaultUpgrades = getDefaultUpgrades(data.Parts);
|
defaultUpgrades = getDefaultUpgrades(data.Parts);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (category == "MoaPets") {
|
|
||||||
const weapon = ExportSentinels[data.WeaponType].defaultWeapon;
|
|
||||||
if (weapon) {
|
|
||||||
const category = ExportWeapons[weapon].productCategory;
|
|
||||||
addEquipment(inventory, category, weapon, undefined, inventoryChanges);
|
|
||||||
combineInventoryChanges(
|
|
||||||
inventoryChanges,
|
|
||||||
occupySlot(inventory, productCategoryToInventoryBin(category)!, !!data.isWebUi)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
defaultOverwrites.Configs = applyDefaultUpgrades(inventory, defaultUpgrades);
|
defaultOverwrites.Configs = applyDefaultUpgrades(inventory, defaultUpgrades);
|
||||||
addEquipment(inventory, category, data.WeaponType, data.Parts, inventoryChanges, defaultOverwrites);
|
addEquipment(inventory, category, data.WeaponType, data.Parts, inventoryChanges, defaultOverwrites);
|
||||||
combineInventoryChanges(
|
combineInventoryChanges(
|
||||||
|
@ -45,7 +45,7 @@ export const sellController: RequestHandler = async (req, res) => {
|
|||||||
if (payload.Items.SpaceGuns || payload.Items.SpaceMelee) {
|
if (payload.Items.SpaceGuns || payload.Items.SpaceMelee) {
|
||||||
requiredFields.add(InventorySlot.SPACEWEAPONS);
|
requiredFields.add(InventorySlot.SPACEWEAPONS);
|
||||||
}
|
}
|
||||||
if (payload.Items.Sentinels || payload.Items.SentinelWeapons || payload.Items.MoaPets) {
|
if (payload.Items.Sentinels || payload.Items.SentinelWeapons) {
|
||||||
requiredFields.add(InventorySlot.SENTINELS);
|
requiredFields.add(InventorySlot.SENTINELS);
|
||||||
}
|
}
|
||||||
if (payload.Items.OperatorAmps) {
|
if (payload.Items.OperatorAmps) {
|
||||||
@ -148,12 +148,6 @@ export const sellController: RequestHandler = async (req, res) => {
|
|||||||
freeUpSlot(inventory, InventorySlot.SENTINELS);
|
freeUpSlot(inventory, InventorySlot.SENTINELS);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (payload.Items.MoaPets) {
|
|
||||||
payload.Items.MoaPets.forEach(sellItem => {
|
|
||||||
inventory.MoaPets.pull({ _id: sellItem.String });
|
|
||||||
freeUpSlot(inventory, InventorySlot.SENTINELS);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (payload.Items.OperatorAmps) {
|
if (payload.Items.OperatorAmps) {
|
||||||
payload.Items.OperatorAmps.forEach(sellItem => {
|
payload.Items.OperatorAmps.forEach(sellItem => {
|
||||||
inventory.OperatorAmps.pull({ _id: sellItem.String });
|
inventory.OperatorAmps.pull({ _id: sellItem.String });
|
||||||
@ -287,7 +281,6 @@ interface ISellRequest {
|
|||||||
SpaceMelee?: ISellItem[];
|
SpaceMelee?: ISellItem[];
|
||||||
Sentinels?: ISellItem[];
|
Sentinels?: ISellItem[];
|
||||||
SentinelWeapons?: ISellItem[];
|
SentinelWeapons?: ISellItem[];
|
||||||
MoaPets?: ISellItem[];
|
|
||||||
OperatorAmps?: ISellItem[];
|
OperatorAmps?: ISellItem[];
|
||||||
Hoverboards?: ISellItem[];
|
Hoverboards?: ISellItem[];
|
||||||
Drones?: ISellItem[];
|
Drones?: ISellItem[];
|
||||||
|
@ -6,9 +6,6 @@ import { handleStoreItemAcquisition } from "@/src/services/purchaseService";
|
|||||||
import { addMiscItems, combineInventoryChanges, getInventory, updateCurrency } from "@/src/services/inventoryService";
|
import { addMiscItems, combineInventoryChanges, getInventory, updateCurrency } from "@/src/services/inventoryService";
|
||||||
import { IInventoryChanges } from "@/src/types/purchaseTypes";
|
import { IInventoryChanges } from "@/src/types/purchaseTypes";
|
||||||
import { isStoreItem, toStoreItem } from "@/src/services/itemDataService";
|
import { isStoreItem, toStoreItem } from "@/src/services/itemDataService";
|
||||||
import { logger } from "@/src/utils/logger";
|
|
||||||
|
|
||||||
const nightwaveCredsItemType = ExportNightwave.rewards[ExportNightwave.rewards.length - 1].uniqueName;
|
|
||||||
|
|
||||||
export const syndicateSacrificeController: RequestHandler = async (request, response) => {
|
export const syndicateSacrificeController: RequestHandler = async (request, response) => {
|
||||||
const accountId = await getAccountIdForRequest(request);
|
const accountId = await getAccountIdForRequest(request);
|
||||||
@ -77,14 +74,10 @@ export const syndicateSacrificeController: RequestHandler = async (request, resp
|
|||||||
if (!isStoreItem(rewardType)) {
|
if (!isStoreItem(rewardType)) {
|
||||||
rewardType = toStoreItem(rewardType);
|
rewardType = toStoreItem(rewardType);
|
||||||
}
|
}
|
||||||
const rewardInventoryChanges = (await handleStoreItemAcquisition(rewardType, inventory, reward.itemCount))
|
combineInventoryChanges(
|
||||||
.InventoryChanges;
|
res.InventoryChanges,
|
||||||
if (Object.keys(rewardInventoryChanges).length == 0) {
|
(await handleStoreItemAcquisition(rewardType, inventory, reward.itemCount)).InventoryChanges
|
||||||
logger.debug(`nightwave rank up reward did not seem to get added, giving 50 creds instead`);
|
);
|
||||||
rewardInventoryChanges.MiscItems = [{ ItemType: nightwaveCredsItemType, ItemCount: 50 }];
|
|
||||||
addMiscItems(inventory, rewardInventoryChanges.MiscItems);
|
|
||||||
}
|
|
||||||
combineInventoryChanges(res.InventoryChanges, rewardInventoryChanges);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,29 +33,6 @@ interface ListedItem {
|
|||||||
parazon?: boolean;
|
parazon?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ItemLists {
|
|
||||||
archonCrystalUpgrades: Record<string, string>;
|
|
||||||
uniqueLevelCaps: Record<string, number>;
|
|
||||||
Suits: ListedItem[];
|
|
||||||
LongGuns: ListedItem[];
|
|
||||||
Melee: ListedItem[];
|
|
||||||
ModularParts: ListedItem[];
|
|
||||||
Pistols: ListedItem[];
|
|
||||||
Sentinels: ListedItem[];
|
|
||||||
SentinelWeapons: ListedItem[];
|
|
||||||
SpaceGuns: ListedItem[];
|
|
||||||
SpaceMelee: ListedItem[];
|
|
||||||
SpaceSuits: ListedItem[];
|
|
||||||
MechSuits: ListedItem[];
|
|
||||||
miscitems: ListedItem[];
|
|
||||||
Syndicates: ListedItem[];
|
|
||||||
OperatorAmps: ListedItem[];
|
|
||||||
QuestKeys: ListedItem[];
|
|
||||||
KubrowPets: ListedItem[];
|
|
||||||
EvolutionProgress: ListedItem[];
|
|
||||||
mods: ListedItem[];
|
|
||||||
}
|
|
||||||
|
|
||||||
const relicQualitySuffixes: Record<TRelicQuality, string> = {
|
const relicQualitySuffixes: Record<TRelicQuality, string> = {
|
||||||
VPQ_BRONZE: "",
|
VPQ_BRONZE: "",
|
||||||
VPQ_SILVER: " [Flawless]",
|
VPQ_SILVER: " [Flawless]",
|
||||||
@ -65,28 +42,24 @@ const relicQualitySuffixes: Record<TRelicQuality, string> = {
|
|||||||
|
|
||||||
const getItemListsController: RequestHandler = (req, response) => {
|
const getItemListsController: RequestHandler = (req, response) => {
|
||||||
const lang = getDict(typeof req.query.lang == "string" ? req.query.lang : "en");
|
const lang = getDict(typeof req.query.lang == "string" ? req.query.lang : "en");
|
||||||
const res: ItemLists = {
|
const res: Record<string, ListedItem[]> = {};
|
||||||
archonCrystalUpgrades,
|
res.Suits = [];
|
||||||
uniqueLevelCaps: ExportMisc.uniqueLevelCaps,
|
res.LongGuns = [];
|
||||||
Suits: [],
|
res.Melee = [];
|
||||||
LongGuns: [],
|
res.ModularParts = [];
|
||||||
Melee: [],
|
res.Pistols = [];
|
||||||
ModularParts: [],
|
res.Sentinels = [];
|
||||||
Pistols: [],
|
res.SentinelWeapons = [];
|
||||||
Sentinels: [],
|
res.SpaceGuns = [];
|
||||||
SentinelWeapons: [],
|
res.SpaceMelee = [];
|
||||||
SpaceGuns: [],
|
res.SpaceSuits = [];
|
||||||
SpaceMelee: [],
|
res.MechSuits = [];
|
||||||
SpaceSuits: [],
|
res.miscitems = [];
|
||||||
MechSuits: [],
|
res.Syndicates = [];
|
||||||
miscitems: [],
|
res.OperatorAmps = [];
|
||||||
Syndicates: [],
|
res.QuestKeys = [];
|
||||||
OperatorAmps: [],
|
res.KubrowPets = [];
|
||||||
QuestKeys: [],
|
res.EvolutionProgress = [];
|
||||||
KubrowPets: [],
|
|
||||||
EvolutionProgress: [],
|
|
||||||
mods: []
|
|
||||||
};
|
|
||||||
for (const [uniqueName, item] of Object.entries(ExportWarframes)) {
|
for (const [uniqueName, item] of Object.entries(ExportWarframes)) {
|
||||||
res[item.productCategory].push({
|
res[item.productCategory].push({
|
||||||
uniqueName,
|
uniqueName,
|
||||||
@ -95,7 +68,7 @@ const getItemListsController: RequestHandler = (req, response) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
for (const [uniqueName, item] of Object.entries(ExportSentinels)) {
|
for (const [uniqueName, item] of Object.entries(ExportSentinels)) {
|
||||||
if (item.productCategory == "Sentinels" || item.productCategory == "KubrowPets") {
|
if (item.productCategory != "SpecialItems") {
|
||||||
res[item.productCategory].push({
|
res[item.productCategory].push({
|
||||||
uniqueName,
|
uniqueName,
|
||||||
name: getString(item.name, lang),
|
name: getString(item.name, lang),
|
||||||
@ -229,6 +202,7 @@ const getItemListsController: RequestHandler = (req, response) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
res.mods = [];
|
||||||
for (const [uniqueName, upgrade] of Object.entries(ExportUpgrades)) {
|
for (const [uniqueName, upgrade] of Object.entries(ExportUpgrades)) {
|
||||||
const mod: ListedItem = {
|
const mod: ListedItem = {
|
||||||
uniqueName,
|
uniqueName,
|
||||||
@ -293,7 +267,11 @@ const getItemListsController: RequestHandler = (req, response) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
response.json(res);
|
response.json({
|
||||||
|
archonCrystalUpgrades,
|
||||||
|
uniqueLevelCaps: ExportMisc.uniqueLevelCaps,
|
||||||
|
...res
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
export { getItemListsController };
|
export { getItemListsController };
|
||||||
|
@ -105,7 +105,6 @@ export const getGuildClient = async (guild: TGuildDatabaseDocument, accountId: s
|
|||||||
Members: members,
|
Members: members,
|
||||||
Ranks: guild.Ranks,
|
Ranks: guild.Ranks,
|
||||||
Tier: guild.Tier,
|
Tier: guild.Tier,
|
||||||
Emblem: guild.Emblem,
|
|
||||||
Vault: getGuildVault(guild),
|
Vault: getGuildVault(guild),
|
||||||
ActiveDojoColorResearch: guild.ActiveDojoColorResearch,
|
ActiveDojoColorResearch: guild.ActiveDojoColorResearch,
|
||||||
Class: guild.Class,
|
Class: guild.Class,
|
||||||
|
@ -1236,16 +1236,12 @@ export const addSkin = (
|
|||||||
typeName: string,
|
typeName: string,
|
||||||
inventoryChanges: IInventoryChanges = {}
|
inventoryChanges: IInventoryChanges = {}
|
||||||
): IInventoryChanges => {
|
): IInventoryChanges => {
|
||||||
if (inventory.WeaponSkins.find(x => x.ItemType == typeName)) {
|
|
||||||
logger.debug(`refusing to add WeaponSkin ${typeName} because account already owns it`);
|
|
||||||
} else {
|
|
||||||
const index = inventory.WeaponSkins.push({ ItemType: typeName, IsNew: true }) - 1;
|
const index = inventory.WeaponSkins.push({ ItemType: typeName, IsNew: true }) - 1;
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||||
inventoryChanges.WeaponSkins ??= [];
|
inventoryChanges.WeaponSkins ??= [];
|
||||||
(inventoryChanges.WeaponSkins as IWeaponSkinClient[]).push(
|
(inventoryChanges.WeaponSkins as IWeaponSkinClient[]).push(
|
||||||
inventory.WeaponSkins[index].toJSON<IWeaponSkinClient>()
|
inventory.WeaponSkins[index].toJSON<IWeaponSkinClient>()
|
||||||
);
|
);
|
||||||
}
|
|
||||||
return inventoryChanges;
|
return inventoryChanges;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -225,8 +225,7 @@ const pushSortieIfRelevant = (worldState: IWorldState, day: number): void => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const seed = new CRng(day).randomInt(0, 0xffff);
|
const rng = new CRng(day);
|
||||||
const rng = new CRng(seed);
|
|
||||||
|
|
||||||
const boss = rng.randomElement(sortieBosses);
|
const boss = rng.randomElement(sortieBosses);
|
||||||
|
|
||||||
@ -355,7 +354,7 @@ const pushSortieIfRelevant = (worldState: IWorldState, day: number): void => {
|
|||||||
Activation: { $date: { $numberLong: dayStart.toString() } },
|
Activation: { $date: { $numberLong: dayStart.toString() } },
|
||||||
Expiry: { $date: { $numberLong: dayEnd.toString() } },
|
Expiry: { $date: { $numberLong: dayEnd.toString() } },
|
||||||
Reward: "/Lotus/Types/Game/MissionDecks/SortieRewards",
|
Reward: "/Lotus/Types/Game/MissionDecks/SortieRewards",
|
||||||
Seed: seed,
|
Seed: day,
|
||||||
Boss: boss,
|
Boss: boss,
|
||||||
Variants: selectedNodes
|
Variants: selectedNodes
|
||||||
});
|
});
|
||||||
@ -375,7 +374,7 @@ const dailyChallenges = Object.keys(ExportNightwave.challenges).filter(x =>
|
|||||||
const getSeasonDailyChallenge = (day: number): ISeasonChallenge => {
|
const getSeasonDailyChallenge = (day: number): ISeasonChallenge => {
|
||||||
const dayStart = EPOCH + day * 86400000;
|
const dayStart = EPOCH + day * 86400000;
|
||||||
const dayEnd = EPOCH + (day + 3) * 86400000;
|
const dayEnd = EPOCH + (day + 3) * 86400000;
|
||||||
const rng = new CRng(new CRng(day).randomInt(0, 0xffff));
|
const rng = new CRng(day);
|
||||||
return {
|
return {
|
||||||
_id: { $oid: "67e1b5ca9d00cb47" + day.toString().padStart(8, "0") },
|
_id: { $oid: "67e1b5ca9d00cb47" + day.toString().padStart(8, "0") },
|
||||||
Daily: true,
|
Daily: true,
|
||||||
@ -395,7 +394,7 @@ const getSeasonWeeklyChallenge = (week: number, id: number): ISeasonChallenge =>
|
|||||||
const weekStart = EPOCH + week * 604800000;
|
const weekStart = EPOCH + week * 604800000;
|
||||||
const weekEnd = weekStart + 604800000;
|
const weekEnd = weekStart + 604800000;
|
||||||
const challengeId = week * 7 + id;
|
const challengeId = week * 7 + id;
|
||||||
const rng = new CRng(new CRng(challengeId).randomInt(0, 0xffff));
|
const rng = new CRng(challengeId);
|
||||||
return {
|
return {
|
||||||
_id: { $oid: "67e1bb2d9d00cb47" + challengeId.toString().padStart(8, "0") },
|
_id: { $oid: "67e1bb2d9d00cb47" + challengeId.toString().padStart(8, "0") },
|
||||||
Activation: { $date: { $numberLong: weekStart.toString() } },
|
Activation: { $date: { $numberLong: weekStart.toString() } },
|
||||||
@ -412,7 +411,7 @@ const getSeasonWeeklyHardChallenge = (week: number, id: number): ISeasonChalleng
|
|||||||
const weekStart = EPOCH + week * 604800000;
|
const weekStart = EPOCH + week * 604800000;
|
||||||
const weekEnd = weekStart + 604800000;
|
const weekEnd = weekStart + 604800000;
|
||||||
const challengeId = week * 7 + id;
|
const challengeId = week * 7 + id;
|
||||||
const rng = new CRng(new CRng(challengeId).randomInt(0, 0xffff));
|
const rng = new CRng(challengeId);
|
||||||
return {
|
return {
|
||||||
_id: { $oid: "67e1bb2d9d00cb47" + challengeId.toString().padStart(8, "0") },
|
_id: { $oid: "67e1bb2d9d00cb47" + challengeId.toString().padStart(8, "0") },
|
||||||
Activation: { $date: { $numberLong: weekStart.toString() } },
|
Activation: { $date: { $numberLong: weekStart.toString() } },
|
||||||
@ -477,7 +476,7 @@ const getCalendarSeason = (week: number): ICalendarSeason => {
|
|||||||
//logger.debug(`birthday on day ${day}`);
|
//logger.debug(`birthday on day ${day}`);
|
||||||
eventDays.push({ day, events: [] }); // This is how CET_PLOT looks in worldState as of around 38.5.0
|
eventDays.push({ day, events: [] }); // This is how CET_PLOT looks in worldState as of around 38.5.0
|
||||||
}
|
}
|
||||||
const rng = new CRng(new CRng(week).randomInt(0, 0xffff));
|
const rng = new CRng(week);
|
||||||
const challenges = [
|
const challenges = [
|
||||||
"/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesEasy",
|
"/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesEasy",
|
||||||
"/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesMedium",
|
"/Lotus/Types/Challenges/Calendar1999/CalendarKillEnemiesMedium",
|
||||||
@ -711,7 +710,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Elite Sanctuary Onslaught cycling every week
|
// Elite Sanctuary Onslaught cycling every week
|
||||||
worldState.NodeOverrides.find(x => x.Node == "SolNode802")!.Seed = new CRng(week).randomInt(0, 0xffff);
|
worldState.NodeOverrides.find(x => x.Node == "SolNode802")!.Seed = week; // unfaithful
|
||||||
|
|
||||||
// Holdfast, Cavia, & Hex bounties cycling every 2.5 hours; unfaithful implementation
|
// Holdfast, Cavia, & Hex bounties cycling every 2.5 hours; unfaithful implementation
|
||||||
let bountyCycle = Math.trunc(Date.now() / 9000000);
|
let bountyCycle = Math.trunc(Date.now() / 9000000);
|
||||||
@ -750,16 +749,14 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
|
|||||||
|
|
||||||
// TODO: xpAmounts need to be calculated based on the jobType somehow?
|
// TODO: xpAmounts need to be calculated based on the jobType somehow?
|
||||||
|
|
||||||
const seed = new CRng(bountyCycle).randomInt(0, 0xffff);
|
|
||||||
|
|
||||||
{
|
{
|
||||||
const rng = new CRng(seed);
|
const rng = new CRng(bountyCycle);
|
||||||
worldState.SyndicateMissions.push({
|
worldState.SyndicateMissions.push({
|
||||||
_id: { $oid: Math.trunc(bountyCycleStart / 1000).toString(16) + "0000000000000008" },
|
_id: { $oid: Math.trunc(bountyCycleStart / 1000).toString(16) + "0000000000000008" },
|
||||||
Activation: { $date: { $numberLong: bountyCycleStart.toString(10) } },
|
Activation: { $date: { $numberLong: bountyCycleStart.toString(10) } },
|
||||||
Expiry: { $date: { $numberLong: bountyCycleEnd.toString(10) } },
|
Expiry: { $date: { $numberLong: bountyCycleEnd.toString(10) } },
|
||||||
Tag: "CetusSyndicate",
|
Tag: "CetusSyndicate",
|
||||||
Seed: seed,
|
Seed: bountyCycle,
|
||||||
Nodes: [],
|
Nodes: [],
|
||||||
Jobs: [
|
Jobs: [
|
||||||
{
|
{
|
||||||
@ -823,13 +820,13 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
const rng = new CRng(seed);
|
const rng = new CRng(bountyCycle);
|
||||||
worldState.SyndicateMissions.push({
|
worldState.SyndicateMissions.push({
|
||||||
_id: { $oid: Math.trunc(bountyCycleStart / 1000).toString(16) + "0000000000000025" },
|
_id: { $oid: Math.trunc(bountyCycleStart / 1000).toString(16) + "0000000000000025" },
|
||||||
Activation: { $date: { $numberLong: bountyCycleStart.toString(10) } },
|
Activation: { $date: { $numberLong: bountyCycleStart.toString(10) } },
|
||||||
Expiry: { $date: { $numberLong: bountyCycleEnd.toString(10) } },
|
Expiry: { $date: { $numberLong: bountyCycleEnd.toString(10) } },
|
||||||
Tag: "SolarisSyndicate",
|
Tag: "SolarisSyndicate",
|
||||||
Seed: seed,
|
Seed: bountyCycle,
|
||||||
Nodes: [],
|
Nodes: [],
|
||||||
Jobs: [
|
Jobs: [
|
||||||
{
|
{
|
||||||
@ -893,13 +890,13 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
const rng = new CRng(seed);
|
const rng = new CRng(bountyCycle);
|
||||||
worldState.SyndicateMissions.push({
|
worldState.SyndicateMissions.push({
|
||||||
_id: { $oid: Math.trunc(bountyCycleStart / 1000).toString(16) + "0000000000000002" },
|
_id: { $oid: Math.trunc(bountyCycleStart / 1000).toString(16) + "0000000000000002" },
|
||||||
Activation: { $date: { $numberLong: bountyCycleStart.toString(10) } },
|
Activation: { $date: { $numberLong: bountyCycleStart.toString(10) } },
|
||||||
Expiry: { $date: { $numberLong: bountyCycleEnd.toString(10) } },
|
Expiry: { $date: { $numberLong: bountyCycleEnd.toString(10) } },
|
||||||
Tag: "EntratiSyndicate",
|
Tag: "EntratiSyndicate",
|
||||||
Seed: seed,
|
Seed: bountyCycle,
|
||||||
Nodes: [],
|
Nodes: [],
|
||||||
Jobs: [
|
Jobs: [
|
||||||
{
|
{
|
||||||
@ -1122,8 +1119,7 @@ export const getLiteSortie = (week: number): ILiteSortie => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const seed = new CRng(week).randomInt(0, 0xffff);
|
const rng = new CRng(week);
|
||||||
const rng = new CRng(seed);
|
|
||||||
const firstNodeIndex = rng.randomInt(0, nodes.length - 1);
|
const firstNodeIndex = rng.randomInt(0, nodes.length - 1);
|
||||||
const firstNode = nodes[firstNodeIndex];
|
const firstNode = nodes[firstNodeIndex];
|
||||||
nodes.splice(firstNodeIndex, 1);
|
nodes.splice(firstNodeIndex, 1);
|
||||||
@ -1137,7 +1133,7 @@ export const getLiteSortie = (week: number): ILiteSortie => {
|
|||||||
Activation: { $date: { $numberLong: weekStart.toString() } },
|
Activation: { $date: { $numberLong: weekStart.toString() } },
|
||||||
Expiry: { $date: { $numberLong: weekEnd.toString() } },
|
Expiry: { $date: { $numberLong: weekEnd.toString() } },
|
||||||
Reward: "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards",
|
Reward: "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards",
|
||||||
Seed: seed,
|
Seed: week,
|
||||||
Boss: boss,
|
Boss: boss,
|
||||||
Missions: [
|
Missions: [
|
||||||
{
|
{
|
||||||
|
@ -11,7 +11,6 @@ export interface IGuildClient {
|
|||||||
Members: IGuildMemberClient[];
|
Members: IGuildMemberClient[];
|
||||||
Ranks: IGuildRank[];
|
Ranks: IGuildRank[];
|
||||||
Tier: number;
|
Tier: number;
|
||||||
Emblem?: boolean;
|
|
||||||
Vault: IGuildVault;
|
Vault: IGuildVault;
|
||||||
ActiveDojoColorResearch: string;
|
ActiveDojoColorResearch: string;
|
||||||
Class: number;
|
Class: number;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user