warframe-worldstate-parser 5.2.16 → 5.2.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/WorldState.d.mts +35 -19
- package/dist/lib/WorldState.mjs +31 -45
- package/dist/lib/models/Alert.d.mts +45 -17
- package/dist/lib/models/Alert.mjs +49 -5
- package/dist/lib/models/Archimedea.d.mts +86 -17
- package/dist/lib/models/Archimedea.mjs +88 -2
- package/dist/lib/models/Calendar.d.mts +77 -2
- package/dist/lib/models/Calendar.mjs +79 -2
- package/dist/lib/models/CambionCycle.d.mts +21 -3
- package/dist/lib/models/CambionCycle.mjs +28 -2
- package/dist/lib/models/CetusCycle.d.mts +48 -2
- package/dist/lib/models/CetusCycle.mjs +87 -2
- package/dist/lib/models/ChallengeInstance.d.mts +53 -17
- package/dist/lib/models/ChallengeInstance.mjs +46 -1
- package/dist/lib/models/ConclaveChallenge.d.mts +76 -17
- package/dist/lib/models/ConclaveChallenge.mjs +77 -2
- package/dist/lib/models/ConstructionProgress.d.mts +17 -2
- package/dist/lib/models/ConstructionProgress.mjs +23 -2
- package/dist/lib/models/DailyDeal.d.mts +66 -17
- package/dist/lib/models/DailyDeal.mjs +64 -2
- package/dist/lib/models/DarkSector.d.mts +142 -17
- package/dist/lib/models/DarkSector.mjs +136 -6
- package/dist/lib/models/DarkSectorBattle.d.mts +52 -2
- package/dist/lib/models/DarkSectorBattle.mjs +49 -1
- package/dist/lib/models/DuviriCycle.d.mts +23 -17
- package/dist/lib/models/DuviriCycle.mjs +55 -2
- package/dist/lib/models/EarthCycle.d.mts +59 -2
- package/dist/lib/models/EarthCycle.mjs +73 -2
- package/dist/lib/models/Fissure.d.mts +78 -17
- package/dist/lib/models/Fissure.mjs +83 -2
- package/dist/lib/models/FlashSale.d.mts +71 -17
- package/dist/lib/models/FlashSale.mjs +73 -2
- package/dist/lib/models/GlobalUpgrade.d.mts +55 -17
- package/dist/lib/models/GlobalUpgrade.mjs +56 -2
- package/dist/lib/models/Invasion.d.mts +113 -17
- package/dist/lib/models/Invasion.mjs +106 -4
- package/dist/lib/models/Kinepage.d.mts +21 -1
- package/dist/lib/models/Kinepage.mjs +22 -1
- package/dist/lib/models/Kuva.d.mts +20 -17
- package/dist/lib/models/Kuva.mjs +85 -1
- package/dist/lib/models/MidrathCycle.d.mts +24 -2
- package/dist/lib/models/MidrathCycle.mjs +66 -2
- package/dist/lib/models/Mission.d.mts +138 -17
- package/dist/lib/models/Mission.mjs +138 -3
- package/dist/lib/models/News.d.mts +100 -2
- package/dist/lib/models/News.mjs +116 -2
- package/dist/lib/models/Nightwave.d.mts +58 -3
- package/dist/lib/models/Nightwave.mjs +58 -3
- package/dist/lib/models/NightwaveChallenge.d.mts +50 -2
- package/dist/lib/models/NightwaveChallenge.mjs +51 -2
- package/dist/lib/models/PersistentEnemy.d.mts +78 -2
- package/dist/lib/models/PersistentEnemy.mjs +74 -2
- package/dist/lib/models/Reward.d.mts +67 -17
- package/dist/lib/models/Reward.mjs +71 -2
- package/dist/lib/models/SentientOutpost.d.mts +46 -17
- package/dist/lib/models/SentientOutpost.mjs +63 -1
- package/dist/lib/models/Simaris.d.mts +36 -17
- package/dist/lib/models/Simaris.mjs +33 -1
- package/dist/lib/models/Sortie.d.mts +60 -17
- package/dist/lib/models/Sortie.mjs +71 -6
- package/dist/lib/models/SortieVariant.d.mts +49 -17
- package/dist/lib/models/SortieVariant.mjs +49 -1
- package/dist/lib/models/SteelPathOffering.d.mts +36 -1
- package/dist/lib/models/SteelPathOffering.mjs +81 -1
- package/dist/lib/models/SyndicateJob.d.mts +92 -17
- package/dist/lib/models/SyndicateJob.mjs +161 -5
- package/dist/lib/models/SyndicateMission.d.mts +58 -17
- package/dist/lib/models/SyndicateMission.mjs +64 -6
- package/dist/lib/models/Tmp.d.mts +34 -17
- package/dist/lib/models/Tmp.mjs +28 -2
- package/dist/lib/models/VallisCycle.d.mts +29 -2
- package/dist/lib/models/VallisCycle.mjs +72 -2
- package/dist/lib/models/VoidTrader.d.mts +76 -17
- package/dist/lib/models/VoidTrader.mjs +76 -4
- package/dist/lib/models/VoidTraderItem.d.mts +43 -17
- package/dist/lib/models/VoidTraderItem.mjs +36 -1
- package/dist/lib/models/VoidTraderSchedule.d.mts +16 -17
- package/dist/lib/models/VoidTraderSchedule.mjs +12 -1
- package/dist/lib/models/WeeklyChallenge.d.mts +19 -17
- package/dist/lib/models/WeeklyChallenge.mjs +19 -3
- package/dist/lib/models/WorldEvent.d.mts +204 -17
- package/dist/lib/models/WorldEvent.mjs +211 -7
- package/dist/lib/models/WorldStateObject.d.mts +47 -1
- package/dist/lib/models/WorldStateObject.mjs +52 -1
- package/dist/lib/models/ZarimanCycle.d.mts +44 -2
- package/dist/lib/models/ZarimanCycle.mjs +77 -2
- package/dist/lib/models/index.d.mts +42 -18
- package/dist/lib/models/index.mjs +42 -45
- package/dist/lib/supporting/Dependency.d.mts +40 -1
- package/dist/lib/supporting/DuviriChoice.d.mts +18 -17
- package/dist/lib/supporting/DuviriChoice.mjs +23 -1
- package/dist/lib/supporting/ExternalMission.d.mts +48 -1
- package/dist/lib/supporting/FetchProxy.d.mts +9 -1
- package/dist/lib/supporting/FetchProxy.mjs +44 -1
- package/dist/lib/supporting/ImgCdn.d.mts +5 -1
- package/dist/lib/supporting/ImgCdn.mjs +5 -1
- package/dist/lib/supporting/KuvaLogEntry.d.mts +20 -1
- package/dist/lib/supporting/RewardData.d.mts +10 -1
- package/dist/lib/supporting/RewardData.mjs +74 -1
- package/dist/lib/supporting/RewardTypes.d.mts +33 -1
- package/dist/lib/supporting/RewardTypes.mjs +326 -1
- package/dist/lib/supporting/index.d.mts +8 -23
- package/dist/lib/supporting/index.mjs +5 -6
- package/dist/main.d.mts +52 -24
- package/dist/main.mjs +47 -48
- package/package.json +1 -1
- package/dist/Alert-CPT2sBmd.mjs +0 -51
- package/dist/Archimedea-Vo36QE99.mjs +0 -90
- package/dist/Calendar-CRM0XhAy.d.mts +0 -78
- package/dist/Calendar-_gEQ9BEd.mjs +0 -81
- package/dist/CambionCycle-B1pqIgks.mjs +0 -30
- package/dist/CambionCycle-OI3v1knd.d.mts +0 -22
- package/dist/CetusCycle-Ct51M2pd.mjs +0 -89
- package/dist/CetusCycle-DQ4n05vO.d.mts +0 -49
- package/dist/ChallengeInstance-BOu_e7ML.mjs +0 -48
- package/dist/ConclaveChallenge-BTN6UyV6.mjs +0 -79
- package/dist/ConstructionProgress-BoF2P9fx.mjs +0 -25
- package/dist/ConstructionProgress-DG2KzS0X.d.mts +0 -18
- package/dist/DailyDeal-aoNeCFWT.mjs +0 -66
- package/dist/DarkSector-D0uJWCg7.mjs +0 -138
- package/dist/DarkSectorBattle-CiSe3kFm.d.mts +0 -53
- package/dist/DarkSectorBattle-CqRYeNpe.mjs +0 -51
- package/dist/Dependency-BR-dAeHI.mjs +0 -1
- package/dist/Dependency-CNqXngHD.d.mts +0 -41
- package/dist/DuviriChoice-BEBiWA-g.mjs +0 -25
- package/dist/DuviriCycle-Do7mMnoC.mjs +0 -57
- package/dist/EarthCycle-BOAlcAuQ.mjs +0 -75
- package/dist/EarthCycle-CxtijnVV.d.mts +0 -60
- package/dist/ExternalMission-C82w4uMq.d.mts +0 -49
- package/dist/ExternalMission-D3MSZgnN.mjs +0 -1
- package/dist/FetchProxy-Bkdk15SX.mjs +0 -46
- package/dist/FetchProxy-DfSTUgkf.d.mts +0 -10
- package/dist/Fissure-diM4hyi3.mjs +0 -85
- package/dist/FlashSale-CNfRaZhM.mjs +0 -75
- package/dist/GlobalUpgrade-CUtZw05z.mjs +0 -58
- package/dist/ImgCdn-BJOdWAbU.mjs +0 -7
- package/dist/ImgCdn-D0hSGSB1.d.mts +0 -6
- package/dist/Invasion-Corx1lxf.mjs +0 -108
- package/dist/Kinepage-B-Ym_VW5.d.mts +0 -22
- package/dist/Kinepage-CbSzge67.mjs +0 -24
- package/dist/Kuva-Ijy2ZGBL.mjs +0 -87
- package/dist/KuvaLogEntry-D_VzIT3W.mjs +0 -1
- package/dist/KuvaLogEntry-cftxhjfU.d.mts +0 -21
- package/dist/MidrathCycle-E0gMF3AR.d.mts +0 -25
- package/dist/MidrathCycle-XD2T8Dx5.mjs +0 -68
- package/dist/Mission-b8KP-YDf.mjs +0 -140
- package/dist/News-DxEm-q6V.d.mts +0 -101
- package/dist/News-zAK-sYRg.mjs +0 -118
- package/dist/Nightwave-CPqMSqGK.d.mts +0 -59
- package/dist/Nightwave-cTRmlbwH.mjs +0 -60
- package/dist/NightwaveChallenge-C8ARG7LC.mjs +0 -53
- package/dist/NightwaveChallenge-CG3uychc.d.mts +0 -51
- package/dist/PersistentEnemy-3Sw5E8AN.mjs +0 -76
- package/dist/PersistentEnemy-DnnnreSz.d.mts +0 -79
- package/dist/Reward-3FBJF_hS.mjs +0 -73
- package/dist/RewardData-C_9b8Yhi.mjs +0 -76
- package/dist/RewardData-DWCgJ3UT.d.mts +0 -11
- package/dist/RewardTypes-DUrR7H3G.mjs +0 -328
- package/dist/RewardTypes-Y3tHrtIJ.d.mts +0 -34
- package/dist/SentientOutpost-Cadk-pIW.mjs +0 -65
- package/dist/Simaris-D6etEQp_.mjs +0 -35
- package/dist/Sortie-rSBgJc6U.mjs +0 -73
- package/dist/SortieVariant-CnuLkkNZ.mjs +0 -51
- package/dist/SteelPathOffering--wm-7hwb.mjs +0 -83
- package/dist/SteelPathOffering-CQkoKi5T.d.mts +0 -37
- package/dist/SyndicateJob-R89tWqvT.mjs +0 -162
- package/dist/SyndicateMission-CKZDWNyf.mjs +0 -66
- package/dist/Tmp-BYL_mYIG.mjs +0 -30
- package/dist/VallisCycle-6DCaWFoR.d.mts +0 -30
- package/dist/VallisCycle-BW2g49wB.mjs +0 -74
- package/dist/VoidTrader-DtjtVUgR.mjs +0 -78
- package/dist/VoidTraderItem-Cz6x1KTF.mjs +0 -38
- package/dist/VoidTraderSchedule-BsJLu50V.mjs +0 -14
- package/dist/WeeklyChallenge-Dl2ekl6X.mjs +0 -21
- package/dist/WorldEvent-C-LaV2ug.mjs +0 -213
- package/dist/WorldStateObject-45dbRgp7.mjs +0 -54
- package/dist/WorldStateObject-C1HEDkH7.d.mts +0 -48
- package/dist/ZarimanCycle-BrSLIWhD.d.mts +0 -45
- package/dist/ZarimanCycle-DoAPwgaM.mjs +0 -79
- package/dist/index-Bgx8kIDy.d.mts +0 -1671
- package/dist/supporting-BLSXhlWM.mjs +0 -1
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { steelPath, timeDeltaToString } from "warframe-worldstate-data/utilities";
|
|
2
|
-
|
|
3
|
-
//#region lib/models/SteelPathOffering.ts
|
|
4
|
-
const monday = 1;
|
|
5
|
-
/**
|
|
6
|
-
* Gets the first day of the week
|
|
7
|
-
*/
|
|
8
|
-
function getFirstDayOfWeek() {
|
|
9
|
-
const resultDate = /* @__PURE__ */ new Date();
|
|
10
|
-
/* istanbul ignore next */
|
|
11
|
-
const offset = resultDate.getUTCDay() === 0 ? 6 : resultDate.getUTCDay() - monday;
|
|
12
|
-
resultDate.setUTCDate(resultDate.getUTCDate() - offset);
|
|
13
|
-
resultDate.setUTCHours(0);
|
|
14
|
-
resultDate.setUTCMinutes(0);
|
|
15
|
-
resultDate.setUTCSeconds(0);
|
|
16
|
-
resultDate.setUTCMilliseconds(0);
|
|
17
|
-
return resultDate;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Get the last day of the week
|
|
21
|
-
*/
|
|
22
|
-
function getLastDayOfWeek() {
|
|
23
|
-
const last = new Date(getFirstDayOfWeek());
|
|
24
|
-
last.setUTCDate(last.getUTCDate() + 6);
|
|
25
|
-
last.setUTCHours(23);
|
|
26
|
-
last.setUTCMinutes(59);
|
|
27
|
-
last.setUTCSeconds(59);
|
|
28
|
-
last.setUTCMilliseconds(0);
|
|
29
|
-
return last;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* When was the start of the day
|
|
33
|
-
*/
|
|
34
|
-
function getStartOfDay() {
|
|
35
|
-
const today = /* @__PURE__ */ new Date();
|
|
36
|
-
today.setUTCHours(0);
|
|
37
|
-
today.setUTCMinutes(0);
|
|
38
|
-
today.setUTCSeconds(0);
|
|
39
|
-
today.setUTCMilliseconds(0);
|
|
40
|
-
return today;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* When was the end of the day
|
|
44
|
-
*/
|
|
45
|
-
function getEndOfDay() {
|
|
46
|
-
const last = /* @__PURE__ */ new Date();
|
|
47
|
-
last.setUTCHours(23);
|
|
48
|
-
last.setUTCMinutes(59);
|
|
49
|
-
last.setUTCSeconds(59);
|
|
50
|
-
last.setUTCMilliseconds(0);
|
|
51
|
-
return last;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Start of Steel Path cycle calculations
|
|
55
|
-
*/
|
|
56
|
-
const start = /* @__PURE__ */ new Date("2020-11-16T00:00:00.000Z");
|
|
57
|
-
var SteelPathOfferings = class {
|
|
58
|
-
currentReward;
|
|
59
|
-
activation;
|
|
60
|
-
expiry;
|
|
61
|
-
remaining;
|
|
62
|
-
rotation;
|
|
63
|
-
evergreens;
|
|
64
|
-
incursions;
|
|
65
|
-
constructor({ locale }) {
|
|
66
|
-
const sSinceStart = (Date.now() - start.getTime()) / 1e3;
|
|
67
|
-
const ind = Math.floor(sSinceStart % 4838400 / 604800);
|
|
68
|
-
this.currentReward = steelPath(locale).rotation[ind];
|
|
69
|
-
this.activation = getFirstDayOfWeek();
|
|
70
|
-
this.expiry = getLastDayOfWeek();
|
|
71
|
-
this.remaining = timeDeltaToString(this.expiry.getTime() - Date.now());
|
|
72
|
-
this.rotation = steelPath(locale).rotation;
|
|
73
|
-
this.evergreens = steelPath(locale).evergreen;
|
|
74
|
-
this.incursions = {
|
|
75
|
-
id: `spi:${getStartOfDay().getTime()}`,
|
|
76
|
-
activation: getStartOfDay(),
|
|
77
|
-
expiry: getEndOfDay()
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
//#endregion
|
|
83
|
-
export { SteelPathOfferings as t };
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Locale } from "warframe-worldstate-data";
|
|
2
|
-
import { SteelPathOffering } from "warframe-worldstate-data/types";
|
|
3
|
-
|
|
4
|
-
//#region lib/models/SteelPathOffering.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* General data pertaining to incursions
|
|
7
|
-
*/
|
|
8
|
-
interface Incursion {
|
|
9
|
-
/**
|
|
10
|
-
* Identifier for steel path incursion based on start of day.
|
|
11
|
-
*/
|
|
12
|
-
id: string;
|
|
13
|
-
/**
|
|
14
|
-
* when the current incursions became active
|
|
15
|
-
*/
|
|
16
|
-
activation: Date;
|
|
17
|
-
/**
|
|
18
|
-
* when the current incursions become inactive
|
|
19
|
-
*/
|
|
20
|
-
expiry: Date;
|
|
21
|
-
}
|
|
22
|
-
declare class SteelPathOfferings {
|
|
23
|
-
currentReward: SteelPathOffering;
|
|
24
|
-
activation: Date;
|
|
25
|
-
expiry: Date;
|
|
26
|
-
remaining: string;
|
|
27
|
-
rotation: SteelPathOffering[];
|
|
28
|
-
evergreens: SteelPathOffering[];
|
|
29
|
-
incursions: Incursion;
|
|
30
|
-
constructor({
|
|
31
|
-
locale
|
|
32
|
-
}: {
|
|
33
|
-
locale: Locale;
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
//#endregion
|
|
37
|
-
export { SteelPathOfferings as n, Incursion as t };
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import { t as WorldStateObject } from "./WorldStateObject-45dbRgp7.mjs";
|
|
2
|
-
import { t as fetchProxy } from "./FetchProxy-Bkdk15SX.mjs";
|
|
3
|
-
import { languageString } from "warframe-worldstate-data/utilities";
|
|
4
|
-
|
|
5
|
-
//#region lib/models/SyndicateJob.ts
|
|
6
|
-
const apiBase = process.env.API_BASE_URL || "https://api.warframestat.us";
|
|
7
|
-
const bountyRewardRegex = /(?:Tier([ABCDE])|Narmer)Table([ABC])Rewards/i;
|
|
8
|
-
const ghoulRewardRegex = /GhoulBountyTable([AB])Rewards/i;
|
|
9
|
-
/**
|
|
10
|
-
* Determine the level string for the bounty
|
|
11
|
-
*/
|
|
12
|
-
const getLevelString = (job) => `${job.minEnemyLevel} - ${job.maxEnemyLevel}`;
|
|
13
|
-
const determineLocation = (i18n, raw, isVault) => {
|
|
14
|
-
const last = String(i18n).split("/").slice(-1)[0];
|
|
15
|
-
const bountyMatches = last.match(bountyRewardRegex);
|
|
16
|
-
const ghoulMatches = last.match(ghoulRewardRegex);
|
|
17
|
-
const isBounty = bountyMatches?.length;
|
|
18
|
-
const isGhoul = ghoulMatches?.length;
|
|
19
|
-
const isCetus = /eidolonjob/i.test(i18n);
|
|
20
|
-
const isVallis = /venusjob/i.test(i18n);
|
|
21
|
-
const isDeimos = /deimosmissionrewards/i.test(i18n);
|
|
22
|
-
const rotation = isBounty ? bountyMatches[2] : "";
|
|
23
|
-
const levelString = getLevelString(raw);
|
|
24
|
-
let location;
|
|
25
|
-
let levelClause;
|
|
26
|
-
if (isCetus) {
|
|
27
|
-
location = "Earth/Cetus ";
|
|
28
|
-
if (isGhoul) levelClause = `(Level ${levelString} Ghoul Bounty)`;
|
|
29
|
-
else levelClause = `(Level ${levelString} Cetus Bounty)`;
|
|
30
|
-
}
|
|
31
|
-
if (isVallis) {
|
|
32
|
-
location = "Venus/Orb Vallis ";
|
|
33
|
-
levelClause = `(Level ${levelString} Orb Vallis Bounty)`;
|
|
34
|
-
}
|
|
35
|
-
if (isDeimos) {
|
|
36
|
-
location = "Deimos/Cambion Drift ";
|
|
37
|
-
levelClause = `(Level ${levelString} ${isVault ? "Isolation Vault" : "Cambion Drift Bounty"})`;
|
|
38
|
-
}
|
|
39
|
-
const locationWRot = `${location}${levelClause}, Rot ${rotation.length ? rotation : "A"}`;
|
|
40
|
-
return {
|
|
41
|
-
location,
|
|
42
|
-
locationWRot
|
|
43
|
-
};
|
|
44
|
-
};
|
|
45
|
-
const getBountyRewards = async (i18n, raw, isVault) => {
|
|
46
|
-
let location;
|
|
47
|
-
let locationWRot;
|
|
48
|
-
if (i18n.endsWith("PlagueStarTableRewards")) {
|
|
49
|
-
location = "plague star";
|
|
50
|
-
locationWRot = "Earth/Cetus (Level 15 - 25 Plague Star), Rot A";
|
|
51
|
-
}
|
|
52
|
-
if (!location || !locationWRot) ({location, locationWRot} = determineLocation(i18n, raw, isVault));
|
|
53
|
-
const pool = (await fetchProxy(`${apiBase}/drops/search/${encodeURIComponent(location)}?grouped_by=location`).then((res) => res.json()).catch(() => {}))?.[locationWRot];
|
|
54
|
-
if (!pool) return ["Pattern Mismatch. Results inaccurate."];
|
|
55
|
-
const results = pool.rewards;
|
|
56
|
-
if (results) return Array.from(new Set(results));
|
|
57
|
-
return [];
|
|
58
|
-
};
|
|
59
|
-
const FIFTY_MINUTES = 3e6;
|
|
60
|
-
/**
|
|
61
|
-
* Represents a syndicate daily mission
|
|
62
|
-
* @augments {WorldStateObject}
|
|
63
|
-
*/
|
|
64
|
-
var SyndicateJob = class SyndicateJob extends WorldStateObject {
|
|
65
|
-
/**
|
|
66
|
-
* Reward pool unique name
|
|
67
|
-
*/
|
|
68
|
-
uniqueName;
|
|
69
|
-
/**
|
|
70
|
-
* Array of strings describing rewards
|
|
71
|
-
*/
|
|
72
|
-
rewardPool;
|
|
73
|
-
/**
|
|
74
|
-
* A structured version of the reward pool
|
|
75
|
-
*/
|
|
76
|
-
rewardPoolDrops;
|
|
77
|
-
/**
|
|
78
|
-
* The type of job this is
|
|
79
|
-
*/
|
|
80
|
-
type;
|
|
81
|
-
/**
|
|
82
|
-
* Array of enemy levels
|
|
83
|
-
*/
|
|
84
|
-
enemyLevels;
|
|
85
|
-
/**
|
|
86
|
-
* Array of standing gains per stage of job
|
|
87
|
-
*/
|
|
88
|
-
standingStages;
|
|
89
|
-
/**
|
|
90
|
-
* Minimum mastery required to participate
|
|
91
|
-
*/
|
|
92
|
-
minMR;
|
|
93
|
-
/**
|
|
94
|
-
* Whether or not this is a Vault job.
|
|
95
|
-
* No indication for difference of normal vs arcana vaults.
|
|
96
|
-
*/
|
|
97
|
-
isVault;
|
|
98
|
-
/**
|
|
99
|
-
* Corresponding chamber. Nullable
|
|
100
|
-
*/
|
|
101
|
-
locationTag;
|
|
102
|
-
/**
|
|
103
|
-
* What time phase this bounty is bound to
|
|
104
|
-
*/
|
|
105
|
-
timeBound;
|
|
106
|
-
/**
|
|
107
|
-
* Generate a job with async data (reward pool)
|
|
108
|
-
* @param data The syndicate mission data
|
|
109
|
-
* @param expiry The syndicate job expiration
|
|
110
|
-
* @param deps The dependencies object
|
|
111
|
-
* @returns The created SyndicateJob object with rewardPool
|
|
112
|
-
*/
|
|
113
|
-
static async build(data, expiry, deps) {
|
|
114
|
-
const job = new SyndicateJob(data, expiry, deps);
|
|
115
|
-
const rewards = await getBountyRewards(data.rewards, data, data.isVault);
|
|
116
|
-
if (typeof rewards[0] === "string") job.rewardPool = rewards;
|
|
117
|
-
else {
|
|
118
|
-
job.rewardPoolDrops = rewards.map((reward) => {
|
|
119
|
-
const countReg = /([0-9]{1,10})X/;
|
|
120
|
-
const count = reward.item.match(countReg)?.[1];
|
|
121
|
-
return {
|
|
122
|
-
...reward,
|
|
123
|
-
item: reward.item.replace(countReg, "").trim(),
|
|
124
|
-
count: count ? parseInt(count, 10) : 1
|
|
125
|
-
};
|
|
126
|
-
});
|
|
127
|
-
job.rewardPool = rewards.map((reward) => reward.item);
|
|
128
|
-
}
|
|
129
|
-
return job;
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Construct a job without async data (reward pool)
|
|
133
|
-
* @param data The syndicate mission data
|
|
134
|
-
* @param expiry The syndicate job expiration
|
|
135
|
-
* @param deps The dependencies object
|
|
136
|
-
* @param deps.locale Locale to use for translations
|
|
137
|
-
*
|
|
138
|
-
* This DOES NOT populate the reward pool
|
|
139
|
-
*/
|
|
140
|
-
constructor(data, expiry, { locale } = { locale: "en" }) {
|
|
141
|
-
super({ _id: { $oid: data.JobCurrentVersion ? data.JobCurrentVersion.$oid : `${(data.jobType || "").split("/").slice(-1)[0]}${expiry.getTime()}` } });
|
|
142
|
-
this.uniqueName = data.rewards;
|
|
143
|
-
this.rewardPool = [];
|
|
144
|
-
this.rewardPoolDrops = [];
|
|
145
|
-
const chamber = (data.locationTag || "").replace(/([a-z])([A-Z])/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2").trim();
|
|
146
|
-
this.type = data.isVault ? `Isolation Vault ${chamber}` : data.jobType ? languageString(data.jobType, locale) : void 0;
|
|
147
|
-
this.enemyLevels = [data.minEnemyLevel, data.maxEnemyLevel];
|
|
148
|
-
this.standingStages = data.xpAmounts;
|
|
149
|
-
this.minMR = data.masteryReq || 0;
|
|
150
|
-
this.isVault = data.isVault;
|
|
151
|
-
this.locationTag = data.locationTag;
|
|
152
|
-
this.expiry = expiry;
|
|
153
|
-
const jobType = data.jobType ?? "";
|
|
154
|
-
if (jobType.toLowerCase().includes("narmer")) if (jobType.toLowerCase().includes("eidolon")) {
|
|
155
|
-
this.timeBound = "day";
|
|
156
|
-
this.expiry = new Date(this.expiry.getTime() - FIFTY_MINUTES);
|
|
157
|
-
} else this.timeBound = "night";
|
|
158
|
-
}
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
//#endregion
|
|
162
|
-
export { SyndicateJob as t };
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { t as WorldStateObject } from "./WorldStateObject-45dbRgp7.mjs";
|
|
2
|
-
import { t as SyndicateJob } from "./SyndicateJob-R89tWqvT.mjs";
|
|
3
|
-
import { fromNow, node, syndicate, timeDeltaToString } from "warframe-worldstate-data/utilities";
|
|
4
|
-
|
|
5
|
-
//#region lib/models/SyndicateMission.ts
|
|
6
|
-
/**
|
|
7
|
-
* Represents a syndicate daily mission
|
|
8
|
-
* @augments {WorldStateObject}
|
|
9
|
-
*/
|
|
10
|
-
var SyndicateMission = class SyndicateMission extends WorldStateObject {
|
|
11
|
-
/**
|
|
12
|
-
* The syndicate that is offering the mission
|
|
13
|
-
* @type {string}
|
|
14
|
-
*/
|
|
15
|
-
syndicate;
|
|
16
|
-
/**
|
|
17
|
-
* The syndicate that is offering the mission
|
|
18
|
-
* @type {string}
|
|
19
|
-
*/
|
|
20
|
-
syndicateKey;
|
|
21
|
-
/**
|
|
22
|
-
* The nodes on which the missions are taking place
|
|
23
|
-
* @type {Array.<string>}
|
|
24
|
-
*/
|
|
25
|
-
nodes;
|
|
26
|
-
/**
|
|
27
|
-
* The jobs for this syndicate. Will normally be []
|
|
28
|
-
* @type {Array.<SyndicateJob>}
|
|
29
|
-
*/
|
|
30
|
-
jobs;
|
|
31
|
-
/**
|
|
32
|
-
* Build a new SyndicateMission with async operations & data
|
|
33
|
-
* @param data The syndicate mission data
|
|
34
|
-
* @param deps The dependencies object
|
|
35
|
-
* @param deps.locale Locale to use for translations
|
|
36
|
-
* @returns SyndicateMission object w/ async resolution of jobs
|
|
37
|
-
*/
|
|
38
|
-
static async build(data, deps = { locale: "en" }) {
|
|
39
|
-
const syndicateMission = new SyndicateMission(data, deps);
|
|
40
|
-
if (data.Jobs?.length) syndicateMission.jobs = await Promise.all(data.Jobs.map((job) => SyndicateJob.build(job, syndicateMission.expiry, deps)));
|
|
41
|
-
else syndicateMission.jobs = [];
|
|
42
|
-
return syndicateMission;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* @param data The syndicate mission data
|
|
46
|
-
* @param deps The dependencies object
|
|
47
|
-
* @param deps.locale Locale to use for translations
|
|
48
|
-
*/
|
|
49
|
-
constructor(data, { locale = "en" } = { locale: "en" }) {
|
|
50
|
-
super(data);
|
|
51
|
-
this.syndicate = syndicate(data.Tag, locale);
|
|
52
|
-
this.syndicateKey = syndicate(data.Tag, "en");
|
|
53
|
-
this.nodes = data.Nodes.map((n) => node(n, locale));
|
|
54
|
-
this.jobs = [];
|
|
55
|
-
this.id = `${this.expiry.getTime()}${data.Tag}`;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Time delta string from now to the expiry
|
|
59
|
-
*/
|
|
60
|
-
get eta() {
|
|
61
|
-
return timeDeltaToString(fromNow(this.expiry));
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
//#endregion
|
|
66
|
-
export { SyndicateMission as t };
|
package/dist/Tmp-BYL_mYIG.mjs
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { t as Kinepage } from "./Kinepage-CbSzge67.mjs";
|
|
2
|
-
import { t as SentientOutpost } from "./SentientOutpost-Cadk-pIW.mjs";
|
|
3
|
-
|
|
4
|
-
//#region lib/models/Tmp.ts
|
|
5
|
-
var Tmp = class {
|
|
6
|
-
sentientOutposts;
|
|
7
|
-
kinepage;
|
|
8
|
-
faceoffBonus;
|
|
9
|
-
questToConquerCancer;
|
|
10
|
-
constructor(json, deps = { locale: "en" }) {
|
|
11
|
-
const tmp = JSON.parse(json);
|
|
12
|
-
this.sentientOutposts = new SentientOutpost(tmp.sfn, deps);
|
|
13
|
-
this.kinepage = new Kinepage(tmp.pgr, deps.locale);
|
|
14
|
-
if (tmp.fbst) {
|
|
15
|
-
const toDate = (ms) => /* @__PURE__ */ new Date(ms * 1e3);
|
|
16
|
-
this.faceoffBonus = {
|
|
17
|
-
activation: toDate(tmp.fbst.a),
|
|
18
|
-
expiry: toDate(tmp.fbst.e),
|
|
19
|
-
next: toDate(tmp.fbst.n)
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
if (tmp.QTCCFloofCount) this.questToConquerCancer = {
|
|
23
|
-
count: tmp.QTCCFloofCount,
|
|
24
|
-
goal: tmp.QTCCFloofLimit
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
//#endregion
|
|
30
|
-
export { Tmp as t };
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { r as WorldStateObject } from "./WorldStateObject-C1HEDkH7.mjs";
|
|
2
|
-
|
|
3
|
-
//#region lib/models/VallisCycle.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Represents the current Earth Day/Night Cycle
|
|
6
|
-
* @augments {WorldStateObject}
|
|
7
|
-
*/
|
|
8
|
-
declare class VallisCycle extends WorldStateObject {
|
|
9
|
-
#private;
|
|
10
|
-
/**
|
|
11
|
-
* Whether or not this it's daytime
|
|
12
|
-
*/
|
|
13
|
-
isWarm: boolean;
|
|
14
|
-
/**
|
|
15
|
-
* Current cycle state. One of `warm`, `cold`
|
|
16
|
-
*/
|
|
17
|
-
state: string;
|
|
18
|
-
constructor();
|
|
19
|
-
/**
|
|
20
|
-
* Whether this event has expired
|
|
21
|
-
*/
|
|
22
|
-
get expired(): boolean;
|
|
23
|
-
/**
|
|
24
|
-
* Time remaining string
|
|
25
|
-
*/
|
|
26
|
-
get timeLeft(): string;
|
|
27
|
-
get shortString(): string;
|
|
28
|
-
}
|
|
29
|
-
//#endregion
|
|
30
|
-
export { VallisCycle as t };
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { t as WorldStateObject } from "./WorldStateObject-45dbRgp7.mjs";
|
|
2
|
-
import { fromNow, timeDeltaToString } from "warframe-worldstate-data/utilities";
|
|
3
|
-
|
|
4
|
-
//#region lib/models/VallisCycle.ts
|
|
5
|
-
const lStart = /* @__PURE__ */ new Date("2026-02-04T19:46:48Z");
|
|
6
|
-
const loopTime = 16e5;
|
|
7
|
-
const coldTime = loopTime - 4e5;
|
|
8
|
-
/**
|
|
9
|
-
* Get the current cycle state for Orb Vallis
|
|
10
|
-
* @returns current cycle state
|
|
11
|
-
*/
|
|
12
|
-
function getCurrentCycle() {
|
|
13
|
-
const toNextFull = loopTime - (Date.now() - lStart.getTime()) % loopTime;
|
|
14
|
-
let state = "cold";
|
|
15
|
-
if (toNextFull > coldTime) state = "warm";
|
|
16
|
-
let toNextMinor;
|
|
17
|
-
if (toNextFull < coldTime) toNextMinor = toNextFull;
|
|
18
|
-
else toNextMinor = toNextFull - coldTime;
|
|
19
|
-
const milliAtNext = Date.now() + toNextMinor;
|
|
20
|
-
const milliAtPrev = Date.now() + toNextFull - (state === "warm" ? loopTime : coldTime);
|
|
21
|
-
const timeAtPrevious = new Date(milliAtPrev);
|
|
22
|
-
timeAtPrevious.setSeconds(0);
|
|
23
|
-
return {
|
|
24
|
-
state,
|
|
25
|
-
toNextMinor,
|
|
26
|
-
toNextFull,
|
|
27
|
-
timeAtNext: new Date(milliAtNext),
|
|
28
|
-
timeAtPrevious
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Represents the current Earth Day/Night Cycle
|
|
33
|
-
* @augments {WorldStateObject}
|
|
34
|
-
*/
|
|
35
|
-
var VallisCycle = class extends WorldStateObject {
|
|
36
|
-
/**
|
|
37
|
-
* Whether or not this it's daytime
|
|
38
|
-
*/
|
|
39
|
-
isWarm;
|
|
40
|
-
/**
|
|
41
|
-
* Current cycle state. One of `warm`, `cold`
|
|
42
|
-
*/
|
|
43
|
-
state;
|
|
44
|
-
/**
|
|
45
|
-
* The current cetus cycle, for calculating the other fields
|
|
46
|
-
*/
|
|
47
|
-
#ec = getCurrentCycle();
|
|
48
|
-
constructor() {
|
|
49
|
-
super({ _id: { $oid: "vallisCycle0" } });
|
|
50
|
-
this.id = `vallisCycle${this.#ec.timeAtPrevious.getTime()}`;
|
|
51
|
-
this.activation = this.#ec.timeAtPrevious;
|
|
52
|
-
this.expiry = this.#ec.timeAtNext;
|
|
53
|
-
this.isWarm = this.#ec.state === "warm";
|
|
54
|
-
this.state = this.#ec.state;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Whether this event has expired
|
|
58
|
-
*/
|
|
59
|
-
get expired() {
|
|
60
|
-
return fromNow(this.expiry) < 0;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Time remaining string
|
|
64
|
-
*/
|
|
65
|
-
get timeLeft() {
|
|
66
|
-
return timeDeltaToString(this.#ec.toNextMinor);
|
|
67
|
-
}
|
|
68
|
-
get shortString() {
|
|
69
|
-
return `${this.timeLeft.replace(/\s\d*s/gi, "")} to ${this.isWarm ? "Cold" : "Warm"}`;
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
//#endregion
|
|
74
|
-
export { VallisCycle as t };
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { t as WorldStateObject } from "./WorldStateObject-45dbRgp7.mjs";
|
|
2
|
-
import { t as VoidTraderItem } from "./VoidTraderItem-Cz6x1KTF.mjs";
|
|
3
|
-
import { t as VoidTraderSchedule } from "./VoidTraderSchedule-BsJLu50V.mjs";
|
|
4
|
-
import { fromNow, insist, node, parseDate, timeDeltaToString } from "warframe-worldstate-data/utilities";
|
|
5
|
-
|
|
6
|
-
//#region lib/models/VoidTrader.ts
|
|
7
|
-
/**
|
|
8
|
-
* Represents a void trader
|
|
9
|
-
* @augments {WorldStateObject}
|
|
10
|
-
*/
|
|
11
|
-
var VoidTrader = class extends WorldStateObject {
|
|
12
|
-
/**
|
|
13
|
-
* The void trader's name
|
|
14
|
-
*/
|
|
15
|
-
character;
|
|
16
|
-
/**
|
|
17
|
-
* The node at which the Void Trader appears
|
|
18
|
-
*/
|
|
19
|
-
location;
|
|
20
|
-
/**
|
|
21
|
-
* The trader's inventory
|
|
22
|
-
*/
|
|
23
|
-
inventory;
|
|
24
|
-
/**
|
|
25
|
-
* Pseudo Identifier for identifying changes in inventory
|
|
26
|
-
*/
|
|
27
|
-
psId;
|
|
28
|
-
/**
|
|
29
|
-
* The initial start date
|
|
30
|
-
*/
|
|
31
|
-
initialStart;
|
|
32
|
-
/**
|
|
33
|
-
* Whether it's completed or not
|
|
34
|
-
*/
|
|
35
|
-
completed;
|
|
36
|
-
/**
|
|
37
|
-
* Possible schedule
|
|
38
|
-
*/
|
|
39
|
-
schedule;
|
|
40
|
-
/**
|
|
41
|
-
* @param data The trader data
|
|
42
|
-
* @param deps The dependencies object
|
|
43
|
-
* @param deps.locale Locale to use for translations
|
|
44
|
-
* @param deps.character The trader name
|
|
45
|
-
*/
|
|
46
|
-
constructor(data, { locale = "en", character } = { locale: "en" }) {
|
|
47
|
-
super(data);
|
|
48
|
-
insist({ ...data }, "Activation", "Expiry");
|
|
49
|
-
this.character = data.Character ? data.Character.replace("Baro'Ki Teel", "Baro Ki'Teer") : character ?? "";
|
|
50
|
-
this.location = node(data.Node, locale);
|
|
51
|
-
this.inventory = data.Manifest ? data.Manifest.map((i) => new VoidTraderItem(i, { locale })) : [];
|
|
52
|
-
this.psId = `${this.id}${this.inventory.length}`;
|
|
53
|
-
this.initialStart = parseDate(data.InitialStartDate);
|
|
54
|
-
this.completed = data.Completed;
|
|
55
|
-
this.schedule = data.ScheduleInfo ? data.ScheduleInfo.map((i) => new VoidTraderSchedule(i, { locale })) : [];
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Whether the trader is active
|
|
59
|
-
*/
|
|
60
|
-
get active() {
|
|
61
|
-
return fromNow(this.activation) < 0 && fromNow(this.expiry) > 0;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Time delta string from now to the start
|
|
65
|
-
*/
|
|
66
|
-
get startString() {
|
|
67
|
-
return timeDeltaToString(fromNow(this.activation));
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Time delta string from now to the end
|
|
71
|
-
*/
|
|
72
|
-
get endString() {
|
|
73
|
-
return timeDeltaToString(fromNow(this.expiry));
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
//#endregion
|
|
78
|
-
export { VoidTrader as t };
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { languageString } from "warframe-worldstate-data/utilities";
|
|
2
|
-
|
|
3
|
-
//#region lib/models/VoidTraderItem.ts
|
|
4
|
-
/**
|
|
5
|
-
* A void trader inventory item
|
|
6
|
-
*/
|
|
7
|
-
var VoidTraderItem = class {
|
|
8
|
-
uniqueName;
|
|
9
|
-
/**
|
|
10
|
-
* The name of the inventory item
|
|
11
|
-
*/
|
|
12
|
-
item;
|
|
13
|
-
/**
|
|
14
|
-
* Ducat cost of the item
|
|
15
|
-
*/
|
|
16
|
-
ducats;
|
|
17
|
-
/**
|
|
18
|
-
* Credit cost of the item
|
|
19
|
-
*/
|
|
20
|
-
credits;
|
|
21
|
-
/**
|
|
22
|
-
* @param data The void trader item data
|
|
23
|
-
* @param data.ItemType Worldstate Item i18n path
|
|
24
|
-
* @param data.PrimePrice Ducat cost of the item
|
|
25
|
-
* @param data.RegularPrice Credit price of the item
|
|
26
|
-
* @param deps The dependencies object
|
|
27
|
-
* @param deps.locale Locale to use for translations
|
|
28
|
-
*/
|
|
29
|
-
constructor({ ItemType, PrimePrice, RegularPrice }, { locale = "en" } = { locale: "en" }) {
|
|
30
|
-
this.uniqueName = ItemType;
|
|
31
|
-
this.item = languageString(ItemType, locale);
|
|
32
|
-
this.ducats = Number.parseInt(String(PrimePrice), 10);
|
|
33
|
-
this.credits = Number.parseInt(String(RegularPrice), 10);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
//#endregion
|
|
38
|
-
export { VoidTraderItem as t };
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { languageString, parseDate } from "warframe-worldstate-data/utilities";
|
|
2
|
-
|
|
3
|
-
//#region lib/models/VoidTraderSchedule.ts
|
|
4
|
-
var VoidTraderSchedule = class {
|
|
5
|
-
expiry;
|
|
6
|
-
item;
|
|
7
|
-
constructor(data, { locale = "en" } = { locale: "en" }) {
|
|
8
|
-
this.expiry = parseDate(data.Expiry);
|
|
9
|
-
this.item = languageString(data.FeaturedItem, locale);
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
//#endregion
|
|
14
|
-
export { VoidTraderSchedule as t };
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { t as WorldStateObject } from "./WorldStateObject-45dbRgp7.mjs";
|
|
2
|
-
import { t as ChallengeInstance } from "./ChallengeInstance-BOu_e7ML.mjs";
|
|
3
|
-
|
|
4
|
-
//#region lib/models/WeeklyChallenge.ts
|
|
5
|
-
/**
|
|
6
|
-
* Represents a void trader
|
|
7
|
-
* @augments {WorldStateObject}
|
|
8
|
-
*/
|
|
9
|
-
var WeeklyChallenge = class extends WorldStateObject {
|
|
10
|
-
challenges;
|
|
11
|
-
/**
|
|
12
|
-
* @param data The Void trader data
|
|
13
|
-
*/
|
|
14
|
-
constructor(data) {
|
|
15
|
-
super(data);
|
|
16
|
-
this.challenges = data.Challenges.map((challengeData) => new ChallengeInstance(challengeData));
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
//#endregion
|
|
21
|
-
export { WeeklyChallenge as t };
|