koishi-plugin-warframe 1.4.1 → 1.4.4
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/lib/index.d.ts +514 -100
- package/lib/index.js +2437 -1838
- package/package.json +12 -9
package/lib/index.js
CHANGED
|
@@ -37,6 +37,9 @@ __export(index_exports, {
|
|
|
37
37
|
module.exports = __toCommonJS(index_exports);
|
|
38
38
|
var import_koishi = require("koishi");
|
|
39
39
|
|
|
40
|
+
// src/services/wfm-service.ts
|
|
41
|
+
var import_warframe_public_export_plus4 = require("warframe-public-export-plus");
|
|
42
|
+
|
|
40
43
|
// src/utils/time.ts
|
|
41
44
|
var toTimeStamp = /* @__PURE__ */ __name((timeStr) => {
|
|
42
45
|
return new Date(timeStr).getTime();
|
|
@@ -57,21 +60,17 @@ var msToHumanReadable = /* @__PURE__ */ __name((ms) => {
|
|
|
57
60
|
}, "msToHumanReadable");
|
|
58
61
|
|
|
59
62
|
// src/utils/cache.ts
|
|
60
|
-
function createAsyncCache(
|
|
61
|
-
let cache
|
|
63
|
+
function createAsyncCache(factory, ttlMs = 6e4) {
|
|
64
|
+
let cache;
|
|
62
65
|
let lastUpdatedAt = 0;
|
|
63
|
-
let inFlight
|
|
64
|
-
async function
|
|
65
|
-
const now = Date.now();
|
|
66
|
-
if (cache && now - lastUpdatedAt < ttlMs) {
|
|
67
|
-
return cache;
|
|
68
|
-
}
|
|
66
|
+
let inFlight;
|
|
67
|
+
async function update() {
|
|
69
68
|
if (inFlight) {
|
|
70
69
|
return inFlight;
|
|
71
70
|
}
|
|
72
71
|
inFlight = (async () => {
|
|
73
72
|
try {
|
|
74
|
-
const result = await
|
|
73
|
+
const result = await factory();
|
|
75
74
|
cache = result;
|
|
76
75
|
lastUpdatedAt = Date.now();
|
|
77
76
|
return cache;
|
|
@@ -81,8 +80,16 @@ function createAsyncCache(fetchFn, ttlMs) {
|
|
|
81
80
|
})();
|
|
82
81
|
return inFlight;
|
|
83
82
|
}
|
|
83
|
+
__name(update, "update");
|
|
84
|
+
async function get() {
|
|
85
|
+
const now = Date.now();
|
|
86
|
+
if (cache && (ttlMs < 0 || now - lastUpdatedAt < ttlMs)) {
|
|
87
|
+
return cache;
|
|
88
|
+
}
|
|
89
|
+
return await update();
|
|
90
|
+
}
|
|
84
91
|
__name(get, "get");
|
|
85
|
-
return { get };
|
|
92
|
+
return { get, update };
|
|
86
93
|
}
|
|
87
94
|
__name(createAsyncCache, "createAsyncCache");
|
|
88
95
|
|
|
@@ -93,7 +100,23 @@ var fullWidthToHalfWidth = /* @__PURE__ */ __name((text) => text.replace(/[\uFF0
|
|
|
93
100
|
}).replace(/\u3000/g, " "), "fullWidthToHalfWidth");
|
|
94
101
|
var removeSpace = /* @__PURE__ */ __name((text) => text.replace(/\s/g, ""), "removeSpace");
|
|
95
102
|
var pascalToSpaced = /* @__PURE__ */ __name((text) => text.replace(/([A-Z])/g, " $1").trim(), "pascalToSpaced");
|
|
96
|
-
var toPascalCase = /* @__PURE__ */ __name((text) =>
|
|
103
|
+
var toPascalCase = /* @__PURE__ */ __name((text) => {
|
|
104
|
+
const tokens = text.match(/[A-Z]+[a-z]*|[a-z]+|\s+|[^A-Za-z\s]+/g);
|
|
105
|
+
if (!tokens) {
|
|
106
|
+
return text;
|
|
107
|
+
}
|
|
108
|
+
return tokens.map((token) => {
|
|
109
|
+
if (/^\s+$/.test(token)) return "";
|
|
110
|
+
if (/^[A-Za-z]+$/.test(token)) {
|
|
111
|
+
if (/^[A-Z]+$/.test(token) || token.length === 1) {
|
|
112
|
+
return token.charAt(0).toUpperCase() + token.slice(1).toLowerCase();
|
|
113
|
+
}
|
|
114
|
+
const lower = token.toLowerCase();
|
|
115
|
+
return lower[0].toUpperCase() + lower.slice(1);
|
|
116
|
+
}
|
|
117
|
+
return token;
|
|
118
|
+
}).join("");
|
|
119
|
+
}, "toPascalCase");
|
|
97
120
|
function normalSimilarity(a, b) {
|
|
98
121
|
const distance = levenshtein(a, b);
|
|
99
122
|
return 1 - distance / Math.max(a.length, b.length);
|
|
@@ -140,8 +163,13 @@ var fetchAsyncText = /* @__PURE__ */ __name(async (url, method = "GET") => {
|
|
|
140
163
|
try {
|
|
141
164
|
return await response.text();
|
|
142
165
|
} catch (error) {
|
|
143
|
-
|
|
144
|
-
|
|
166
|
+
if (error instanceof Error) {
|
|
167
|
+
console.log(error.message);
|
|
168
|
+
console.log(error.stack);
|
|
169
|
+
} else {
|
|
170
|
+
console.log("未知错误", error);
|
|
171
|
+
}
|
|
172
|
+
return void 0;
|
|
145
173
|
}
|
|
146
174
|
}, "fetchAsyncText");
|
|
147
175
|
var fetchAsyncData = /* @__PURE__ */ __name(async (url, method = "GET") => {
|
|
@@ -158,8 +186,13 @@ var fetchAsyncData = /* @__PURE__ */ __name(async (url, method = "GET") => {
|
|
|
158
186
|
try {
|
|
159
187
|
return await response.json();
|
|
160
188
|
} catch (error) {
|
|
161
|
-
|
|
162
|
-
|
|
189
|
+
if (error instanceof Error) {
|
|
190
|
+
console.log(error.message);
|
|
191
|
+
console.log(error.stack);
|
|
192
|
+
} else {
|
|
193
|
+
console.log("未知错误", error);
|
|
194
|
+
}
|
|
195
|
+
return void 0;
|
|
163
196
|
}
|
|
164
197
|
}, "fetchAsyncData");
|
|
165
198
|
var fetchAsyncImage = /* @__PURE__ */ __name(async (url, method = "GET") => {
|
|
@@ -176,8 +209,13 @@ var fetchAsyncImage = /* @__PURE__ */ __name(async (url, method = "GET") => {
|
|
|
176
209
|
try {
|
|
177
210
|
return await response.blob();
|
|
178
211
|
} catch (error) {
|
|
179
|
-
|
|
180
|
-
|
|
212
|
+
if (error instanceof Error) {
|
|
213
|
+
console.log(error.message);
|
|
214
|
+
console.log(error.stack);
|
|
215
|
+
} else {
|
|
216
|
+
console.log("未知错误", error);
|
|
217
|
+
}
|
|
218
|
+
return void 0;
|
|
181
219
|
}
|
|
182
220
|
}, "fetchAsyncImage");
|
|
183
221
|
|
|
@@ -223,11 +261,21 @@ var import_warframe_public_export_plus2 = require("warframe-public-export-plus")
|
|
|
223
261
|
// src/utils/wf-export-adapter.ts
|
|
224
262
|
var import_warframe_public_export_plus = require("warframe-public-export-plus");
|
|
225
263
|
var regionToShort = /* @__PURE__ */ __name((region, dict) => {
|
|
264
|
+
let faction;
|
|
265
|
+
if (region.faction) {
|
|
266
|
+
const name2 = import_warframe_public_export_plus.ExportFactions[region.faction].name;
|
|
267
|
+
if (name2) {
|
|
268
|
+
faction = dict[name2];
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
if (!faction) {
|
|
272
|
+
faction = region.faction;
|
|
273
|
+
}
|
|
226
274
|
return {
|
|
227
275
|
name: dict[region.name],
|
|
228
276
|
system: dict[region.systemName],
|
|
229
277
|
type: dict[region.missionName],
|
|
230
|
-
faction
|
|
278
|
+
faction,
|
|
231
279
|
maxLevel: region.maxEnemyLevel,
|
|
232
280
|
minLevel: region.minEnemyLevel
|
|
233
281
|
};
|
|
@@ -245,9 +293,85 @@ var relicToFullNameZH = /* @__PURE__ */ __name((tier, category) => {
|
|
|
245
293
|
return `${import_warframe_public_export_plus2.dict_zh[relicEraToTransKey(tier)] ?? toPascalCase(tier)} ${category} 遗物`;
|
|
246
294
|
}, "relicToFullNameZH");
|
|
247
295
|
|
|
296
|
+
// src/utils/ocr.ts
|
|
297
|
+
var extractTextFromImage = /* @__PURE__ */ __name(async (image, secret) => {
|
|
298
|
+
if (image instanceof Blob) {
|
|
299
|
+
const buffer = await image.arrayBuffer();
|
|
300
|
+
image = Buffer.from(buffer).toString("base64");
|
|
301
|
+
}
|
|
302
|
+
const tencentcloud = require("tencentcloud-sdk-nodejs-ocr");
|
|
303
|
+
const ocrClient = tencentcloud.ocr.v20181119.Client;
|
|
304
|
+
const clientConfig = {
|
|
305
|
+
credential: {
|
|
306
|
+
secretId: secret.id,
|
|
307
|
+
secretKey: secret.key
|
|
308
|
+
},
|
|
309
|
+
region: "",
|
|
310
|
+
profile: {
|
|
311
|
+
httpProfile: {
|
|
312
|
+
endpoint: "ocr.tencentcloudapi.com"
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
const client = new ocrClient(clientConfig);
|
|
317
|
+
try {
|
|
318
|
+
const result = await client.GeneralAccurateOCR({
|
|
319
|
+
ImageBase64: image
|
|
320
|
+
});
|
|
321
|
+
return result.TextDetections?.map((t) => t.DetectedText).filter(
|
|
322
|
+
(v) => !!v
|
|
323
|
+
);
|
|
324
|
+
} catch (err) {
|
|
325
|
+
console.error("error", err);
|
|
326
|
+
return void 0;
|
|
327
|
+
}
|
|
328
|
+
}, "extractTextFromImage");
|
|
329
|
+
|
|
330
|
+
// src/utils/output.tsx
|
|
331
|
+
var import_path = __toESM(require("path"));
|
|
332
|
+
var import_url = require("url");
|
|
333
|
+
var import_fs = require("fs");
|
|
334
|
+
var import_meta = {};
|
|
335
|
+
var htmlString = (() => {
|
|
336
|
+
const __fileName = (0, import_url.fileURLToPath)(import_meta.url);
|
|
337
|
+
const __dirname = import_path.default.dirname(__fileName);
|
|
338
|
+
const stylePath = import_path.default.join(__dirname, "output.css");
|
|
339
|
+
const style = (0, import_fs.readFileSync)(stylePath, "utf8");
|
|
340
|
+
const svgPath = import_path.default.join(__dirname, "output.svg");
|
|
341
|
+
const svg = (0, import_fs.readFileSync)(svgPath, "utf8");
|
|
342
|
+
const template = `
|
|
343
|
+
<!DOCTYPE html>
|
|
344
|
+
<html>
|
|
345
|
+
<head>
|
|
346
|
+
<meta charset="UTF-8" />
|
|
347
|
+
<title>{{title}}</title>
|
|
348
|
+
<style>{{style}}</style>
|
|
349
|
+
</head>
|
|
350
|
+
<body>
|
|
351
|
+
<div style="display: none;">{{svg}}</div>
|
|
352
|
+
<div id="root">{{htmlString}}</div>
|
|
353
|
+
</body>
|
|
354
|
+
</html>`;
|
|
355
|
+
return (htmlString2, title = "title") => {
|
|
356
|
+
return template.replace("{{htmlString}}", htmlString2).replace("{{title}}", title).replace("{{style}}", style).replace("{{svg}}", svg);
|
|
357
|
+
};
|
|
358
|
+
})();
|
|
359
|
+
var generateImageOutput = /* @__PURE__ */ __name(async (puppe, element) => {
|
|
360
|
+
if (!puppe) {
|
|
361
|
+
return "本功能需要启用 koishi-plugin-puppeteer 插件";
|
|
362
|
+
}
|
|
363
|
+
return await puppe.render(
|
|
364
|
+
htmlString(element.toString()),
|
|
365
|
+
async (page, next) => {
|
|
366
|
+
const handle = await page.$("#root>*");
|
|
367
|
+
return await next(handle ?? void 0);
|
|
368
|
+
}
|
|
369
|
+
);
|
|
370
|
+
}, "generateImageOutput");
|
|
371
|
+
|
|
248
372
|
// src/utils/wfcd-adapter.ts
|
|
249
373
|
var import_warframe_public_export_plus3 = require("warframe-public-export-plus");
|
|
250
|
-
var solNodesEnDict
|
|
374
|
+
var solNodesEnDict;
|
|
251
375
|
var getSolNodeKey = /* @__PURE__ */ __name(async (name2) => {
|
|
252
376
|
const worldstateData = await import("warframe-worldstate-data");
|
|
253
377
|
if (!solNodesEnDict) {
|
|
@@ -257,7 +381,7 @@ var getSolNodeKey = /* @__PURE__ */ __name(async (name2) => {
|
|
|
257
381
|
}
|
|
258
382
|
return solNodesEnDict[name2];
|
|
259
383
|
}, "getSolNodeKey");
|
|
260
|
-
var missionTypeEnDict
|
|
384
|
+
var missionTypeEnDict;
|
|
261
385
|
var getMissionTypeKey = /* @__PURE__ */ __name(async (name2) => {
|
|
262
386
|
const worldstateData = await import("warframe-worldstate-data");
|
|
263
387
|
if (!missionTypeEnDict) {
|
|
@@ -333,416 +457,138 @@ var getVoidTraderItemName = /* @__PURE__ */ __name((sourceKey) => {
|
|
|
333
457
|
}
|
|
334
458
|
}, "getVoidTraderItemName");
|
|
335
459
|
|
|
336
|
-
// src/
|
|
460
|
+
// src/infrastructure/wfm/wfm-api.ts
|
|
337
461
|
var wfmApiV1Base = "https://api.warframe.market/v1/";
|
|
338
462
|
var wfmApiV2Base = "https://api.warframe.market/v2/";
|
|
339
463
|
var getWFMItemList = /* @__PURE__ */ __name(async () => {
|
|
340
|
-
|
|
464
|
+
const response = await fetchAsyncData(
|
|
465
|
+
`${wfmApiV2Base}items`
|
|
466
|
+
);
|
|
467
|
+
return response?.data;
|
|
341
468
|
}, "getWFMItemList");
|
|
342
469
|
var getWFMOrderList = /* @__PURE__ */ __name(async (itemId) => {
|
|
343
|
-
|
|
470
|
+
const response = await fetchAsyncData(
|
|
344
471
|
`${wfmApiV2Base}orders/item/${itemId}`
|
|
345
472
|
);
|
|
473
|
+
return response?.data;
|
|
346
474
|
}, "getWFMOrderList");
|
|
347
475
|
var getWFMRivenItemList = /* @__PURE__ */ __name(async () => {
|
|
348
|
-
|
|
476
|
+
const response = await fetchAsyncData(
|
|
349
477
|
`${wfmApiV2Base}riven/weapons`
|
|
350
478
|
);
|
|
479
|
+
return response?.data;
|
|
351
480
|
}, "getWFMRivenItemList");
|
|
352
481
|
var getWFMRivenOrderList = /* @__PURE__ */ __name(async (itemId) => {
|
|
353
|
-
|
|
482
|
+
const response = await fetchAsyncData(
|
|
354
483
|
`${wfmApiV1Base}auctions/search?type=riven&sort_by=price_asc&weapon_url_name=${itemId}`
|
|
355
484
|
);
|
|
485
|
+
return response?.payload.auctions;
|
|
356
486
|
}, "getWFMRivenOrderList");
|
|
357
487
|
var getWFMRivenAttributeList = /* @__PURE__ */ __name(async () => {
|
|
358
|
-
|
|
488
|
+
const response = await fetchAsyncData(
|
|
359
489
|
`${wfmApiV2Base}riven/attributes`
|
|
360
490
|
);
|
|
491
|
+
return response?.data;
|
|
361
492
|
}, "getWFMRivenAttributeList");
|
|
362
493
|
var getWFMDucatnator = /* @__PURE__ */ __name(async () => {
|
|
363
|
-
|
|
494
|
+
const response = await fetchAsyncData(`${wfmApiV1Base}tools/ducats`);
|
|
495
|
+
if (!response || !response.payload) {
|
|
496
|
+
return void 0;
|
|
497
|
+
}
|
|
498
|
+
const day = response.payload.previous_day.map((e) => {
|
|
499
|
+
return e;
|
|
500
|
+
});
|
|
501
|
+
const hour = response.payload.previous_hour.map((e) => {
|
|
502
|
+
return e;
|
|
503
|
+
});
|
|
504
|
+
return {
|
|
505
|
+
day,
|
|
506
|
+
hour
|
|
507
|
+
};
|
|
364
508
|
}, "getWFMDucatnator");
|
|
365
509
|
|
|
366
|
-
// src/
|
|
367
|
-
var
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
--color_auction_archiving: gray;
|
|
384
|
-
--color_rgb_auction_archiving: 128 128 128;
|
|
385
|
-
--color_dark_background--light: #11262b;
|
|
386
|
-
--color_dark_border--ligth: #283235;
|
|
387
|
-
--color_dark_background: #171e21;
|
|
388
|
-
--color_dark_border: #283235;
|
|
389
|
-
--color_dark_background--darker: #071013;
|
|
390
|
-
--color_dark_border--darker: #171e21;
|
|
391
|
-
--color_rgb_dark_background--light: 17 38 43;
|
|
392
|
-
--color_rgb_dark_border--ligth: 40 50 53;
|
|
393
|
-
--color_rgb_dark_background: 23 30 33;
|
|
394
|
-
--color_rgb_dark_border: 40 50 53;
|
|
395
|
-
--color_rgb_dark_background--darker: 7 16 19;
|
|
396
|
-
--color_rgb_dark_border--darker: 23 30 33;
|
|
397
|
-
--color_place_order: #b53600;
|
|
398
|
-
--color_place_order--hover: #e64400;
|
|
399
|
-
--color_place_order--active: #ff8f00;
|
|
400
|
-
--color_place_order_text: #f5f5f5;
|
|
401
|
-
--color_create_auction: #8960db;
|
|
402
|
-
--color_create_auction_text: #f5f5f5;
|
|
403
|
-
--color_create_auction--hover: #b08cff;
|
|
404
|
-
--color_create_auction--active: #9d92ff;
|
|
405
|
-
--color_input_inner_shadow: 0 0 0;
|
|
406
|
-
--color_input_text--highlight: #19a187;
|
|
407
|
-
--color_attribute_text: white;
|
|
408
|
-
--color_attribute_background_first: #19a187;
|
|
409
|
-
--color_attribute_background_second: #358576;
|
|
410
|
-
--color_attribute_background_third: #516965;
|
|
411
|
-
--color_attribute_background_negative: #98392d;
|
|
412
|
-
--color_rgb_attribute_background_first: 25 161 135;
|
|
413
|
-
--color_rgb_attribute_background_second: 53 133 118;
|
|
414
|
-
--color_rgb_attribute_background_third: 81 105 101;
|
|
415
|
-
--color_rgb_attribute_background_negative: 152 57 45;
|
|
416
|
-
--color_link_dimmed: #408698;
|
|
417
|
-
--color_link_dimmed--hover: #a3dddb;
|
|
418
|
-
--color_link_dimmed--active: #acb8dd;
|
|
419
|
-
--color_rgb_link_dimmed: 64 134 152;
|
|
420
|
-
--color_rgb_link_dimmed--hover: 163 221 219;
|
|
421
|
-
--color_rgb_link_dimmed--active: 172 184 221;
|
|
422
|
-
--color_dark_md_code_background: black;
|
|
423
|
-
--color_dark_md_code_text: #39a57e;
|
|
424
|
-
--color_rgb_dark_md_code_background: 0 0 0;
|
|
425
|
-
--color_status-offline: darkred;
|
|
426
|
-
--color_highlight: #b53600;
|
|
427
|
-
--color_highlight_text: #f5f5f5;
|
|
428
|
-
--color_tooltip_background: #1b2432;
|
|
429
|
-
--color_tooltip_border: black;
|
|
430
|
-
--color_tooltip_text: #aab3b6;
|
|
431
|
-
--color_rgb_tooltip_background: 27 36 50;
|
|
432
|
-
--color_text_svg: red;
|
|
433
|
-
--color_dark_text: #aab3b6;
|
|
434
|
-
--color_dark_h1: #fcfdfd;
|
|
435
|
-
--color_dark_h2: #e1e4e5;
|
|
436
|
-
--color_dark_h3: #c5ccce;
|
|
437
|
-
--color_dark_disclaimer: #333d40
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
body {
|
|
441
|
-
font-family: Arial, sans-serif; padding:
|
|
442
|
-
20px;
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
* {
|
|
446
|
-
margin: 0;
|
|
447
|
-
padding: 0;
|
|
510
|
+
// src/data/wfm/globalItem.ts
|
|
511
|
+
var globalItemDataFactory = /* @__PURE__ */ __name(async (response) => {
|
|
512
|
+
response ??= await getWFMItemList();
|
|
513
|
+
if (!response) {
|
|
514
|
+
return void 0;
|
|
515
|
+
}
|
|
516
|
+
const data = response;
|
|
517
|
+
const globalItemList = response;
|
|
518
|
+
const globalItemDict = listToDict(
|
|
519
|
+
data,
|
|
520
|
+
(i) => [i.slug]
|
|
521
|
+
);
|
|
522
|
+
const globalItemNameToSlugDict = ((list) => {
|
|
523
|
+
const result = {};
|
|
524
|
+
for (const item of list) {
|
|
525
|
+
if (item.i18n["zh-hans"]?.name) {
|
|
526
|
+
result[normalizeName(item.i18n["zh-hans"].name)] = item.slug;
|
|
448
527
|
}
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
list-style: none;
|
|
528
|
+
if (item.i18n["en"]?.name) {
|
|
529
|
+
result[normalizeName(item.i18n["en"].name)] = item.slug;
|
|
452
530
|
}
|
|
453
|
-
</style>
|
|
454
|
-
</head>
|
|
455
|
-
<body>
|
|
456
|
-
<svg style="display:none;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"><defs><symbol viewBox="0 0 19.736 20.883" id="icon-amber"><path d="M15.163 9.37c-3.622-4.486-4.755-6.107-5.312-6.107-.557 0-1.656 1.621-5.278 6.107.116 2.831 1.424 2.328 5.295 7.062 3.871-4.734 5.179-4.231 5.295-7.062zm-8.26.491c1.296-1.39 2.254-4.473 2.965-4.448.711-.025 1.67 3.058 2.966 4.448-.493 1.425-1.72 2.611-2.966 4.06-1.246-1.449-2.473-2.635-2.965-4.06zm-1.787 7.416C3.03 17.449 0 12.89 0 11.335c0-2.573 4.116-6.501 4.499-7.782l.11-2.16C5.854.397 7.632.1 9.87 0c2.235.099 4.014.396 5.258 1.394l.11 2.159c.383 1.28 4.5 5.209 4.5 7.782 0 1.555-3.085 5.942-5.117 5.942-.86 1.214-3.277 3.606-4.752 3.606-1.474 0-3.892-2.392-4.752-3.606z"/></symbol><symbol viewBox="0 0 320 512" id="icon-angle-up"><path d="m177 159.7 136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"/></symbol><symbol viewBox="0 0 512 512" id="icon-archive"><path d="M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z"/></symbol><symbol viewBox="-10 0 468 512" id="icon-arrow-link"><path fill="currentColor" d="M280 80q-22-2-24-24 2-22 24-24h144q22 2 24 24v144q-2 22-24 24-22-2-24-24v-86L200 312q-16 15-33 0-14-16 0-33L366 80h-86zM0 120q1-24 16-40 16-15 40-16h112q22 2 24 24-2 22-24 24H56q-7 1-8 8v304q1 7 8 8h304q7-1 8-8V312q2-22 24-24 22 2 24 24v112q-1 24-16 40-16 15-40 16H56q-24-1-40-16-15-16-16-40V120z"/></symbol><symbol viewBox="0 0 512 512" id="icon-arrows-alt-h"><path d="M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z"/></symbol><symbol viewBox="0 0 1000 1000" id="icon-auction"><path d="m324.4 138.5 250 144.3c19.8 11.4 45 4.6 56.3-15.1 11.4-19.7 4.7-45-15.1-56.3l-250-144.3c-19.8-11.4-45-4.6-56.3 15.1s-4.6 44.8 15.1 56.3zm229.4 180-250-144.3-144.3 250 250 144.3 144.3-250zM97.6 531.3l250 144.3c19.7 11.4 45 4.6 56.3-15.1 11.3-19.7 4.6-45-15.1-56.3L138.8 460c-19.8-11.4-45-4.6-56.3 15.1-11.5 19.6-4.7 44.9 15.1 56.2zm861.5 116.4L502.3 407.8 461 479.3l436.2 275.6c29.6 17.1 67.4 7 84.5-22.6 17.1-29.7 6.9-67.5-22.6-84.6zM506.3 856c0-22.8-18.5-41.2-41.2-41.2H93.8c-22.8 0-41.2 18.4-41.2 41.2v41.2l-42.6-.9 1.4 42.1h536.1l1.9-39.5-40.6-1.7c.1 0-2.5-18.5-2.5-41.2z"/></symbol><symbol viewBox="0 0 400 423" id="icon-averagePrice"><path d="m162.531 374.211-.905-319.596 70.517-.147 1.118 319.744z" fill="#ff5a69"/></symbol><symbol viewBox="0 0 384 512" id="icon-award"><path d="M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z"/></symbol><symbol viewBox="0 0 640 512" id="icon-backspace"><path d="M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z"/></symbol><symbol viewBox="0 0 512 512" id="icon-ban"><path d="M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z"/></symbol><symbol viewBox="0 0 448 512" id="icon-bars"><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></symbol><symbol viewBox="0 0 544 1423" id="icon-candlePrice"><g fill="green"><path d="m141.618 209.102 2.33 804.884 266.39.894-6.224-806.124c-58.188 2.227-202.884-.42-262.496.346z"/><path d="m243.855 250.785-1.697-236.057 63.435-.335.369 236.664zm.917 985.162.013-230.11 64.04-1.797.382 232.173z"/></g></symbol><symbol viewBox="0 0 320 512" id="icon-caret-down"><path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"/></symbol><symbol viewBox="0 0 192 512" id="icon-caret-left"><path d="M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z"/></symbol><symbol viewBox="0 0 512 512" id="icon-chart-area"><path d="M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5 288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z"/></symbol><symbol viewBox="0 0 512 512" id="icon-check"><path d="m173.898 439.404-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></symbol><symbol viewBox="0 0 512 512" id="icon-check-circle"><path d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm113-303c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z"/></symbol><symbol viewBox="0 0 448 512" id="icon-chevron-down"><path d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/></symbol><symbol viewBox="0 0 320 512" id="icon-chevron-left"><path d="M34.52 239.03 228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"/></symbol><symbol viewBox="0 0 448 512" id="icon-chevron-up"><path d="m240.971 130.524 194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z"/></symbol><symbol viewBox="0 0 512 512" id="icon-circle"><path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"/></symbol><symbol viewBox="0 0 512 512" id="icon-circle-check"><path d="M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm113-303L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"/></symbol><symbol viewBox="0 0 512 512" id="icon-circle-notch"><path d="M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z"/></symbol><symbol viewBox="0 0 640 512" id="icon-cogs"><path d="m512.1 191-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z"/></symbol><symbol viewBox="0 0 576 512" id="icon-comments"><path d="M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z"/></symbol><symbol viewBox="0 0 640 512" id="icon-contract"><path d="m519.2 127.9-47.6-47.6A56.252 56.252 0 0 0 432 64H205.2c-14.8 0-29.1 5.9-39.6 16.3L118 127.9H0v255.7h64c17.6 0 31.8-14.2 31.9-31.7h9.1l84.6 76.4c30.9 25.1 73.8 25.7 105.6 3.8 12.5 10.8 26 15.9 41.1 15.9 18.2 0 35.3-7.4 48.8-24 22.1 8.7 48.2 2.6 64-16.8l26.2-32.3c5.6-6.9 9.1-14.8 10.9-23h57.9c.1 17.5 14.4 31.7 31.9 31.7h64V127.9H519.2zM48 351.6c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16zm390-6.9-26.1 32.2c-2.8 3.4-7.8 4-11.3 1.2l-23.9-19.4-30 36.5c-6 7.3-15 4.8-18 2.4l-36.8-31.5-15.6 19.2c-13.9 17.1-39.2 19.7-55.3 6.6l-97.3-88H96V175.8h41.9l61.7-61.6c2-.8 3.7-1.5 5.7-2.3H262l-38.7 35.5c-29.4 26.9-31.1 72.3-4.4 101.3 14.8 16.2 61.2 41.2 101.5 4.4l8.2-7.5 108.2 87.8c3.4 2.8 3.9 7.9 1.2 11.3zm106-40.8h-69.2c-2.3-2.8-4.9-5.4-7.7-7.7l-102.7-83.4 12.5-11.4c6.5-6 7-16.1 1-22.6L367 167.1c-6-6.5-16.1-6.9-22.6-1l-55.2 50.6c-9.5 8.7-25.7 9.4-34.6 0-9.3-9.9-8.5-25.1 1.2-33.9l65.6-60.1c7.4-6.8 17-10.5 27-10.5l83.7-.2c2.1 0 4.1.8 5.5 2.3l61.7 61.6H544v128zm48 47.7c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16z"/></symbol><symbol viewBox="0 0 24 24" id="icon-crossplay"><path d="M10.762 3.098c-1.124.118-2.38.62-3.623 1.449C5.972 5.32 4.9 6.28 3.01 8.255c-1.364 1.42-1.598 1.701-1.86 2.25-.277.58-.361 1.003-.37 1.762 0 .361.013.68.032.699.019.023.712-.638 1.533-1.458l1.5-1.5v1.828L2.32 13.359.797 14.883l.01 1.256.013 1.252 3.985-3.966c2.193-2.18 4.153-4.097 4.36-4.26.735-.577 1.424-.93 2.165-1.107.567-.136 1.383-.108 1.865.06 1.557.554 2.663 1.913 2.817 3.465.02.178.043.323.061.323.014 0 .32-.29.675-.647l.643-.642v-.262c0-.572-.3-1.35-.76-1.974-.75-1.017-2.151-1.86-3.6-2.175-.614-.131-1.617-.112-2.208.042-1.5.394-2.63 1.163-4.434 3.024l-.712.736-.005-.919V8.17l.375-.45C7.12 6.436 8.634 5.4 10.03 5.002c.746-.216 1.29-.282 2.147-.258a7.312 7.312 0 0 1 3.211.815c1.425.718 2.658 1.932 3.22 3.178.211.465.253.375.22-.496-.023-.816-.107-1.172-.412-1.805-.736-1.533-2.54-2.78-4.612-3.197a11.417 11.417 0 0 0-3.043-.14Z"/><path d="M19.148 10.575c-2.189 2.18-4.153 4.097-4.359 4.26-.736.577-1.425.93-2.166 1.107-.567.136-1.382.108-1.865-.06-1.556-.554-2.663-1.913-2.817-3.465-.02-.178-.043-.323-.061-.323-.014 0-.32.29-.675.647l-.643.642v.262c0 .572.3 1.35.76 1.974.75 1.017 2.151 1.86 3.6 2.175.614.131 1.617.112 2.208-.042 1.5-.394 2.63-1.163 4.434-3.024l.713-.736.004.919v.919l-.375.45c-1.073 1.284-2.587 2.32-3.984 2.718-.745.216-1.29.282-2.147.258a7.31 7.31 0 0 1-3.21-.815c-1.426-.718-2.659-1.932-3.221-3.178-.211-.465-.253-.376-.22.496.023.816.107 1.172.412 1.805.614 1.275 1.992 2.386 3.652 2.94 1.673.557 3.839.594 5.371.093.563-.183 1.618-.713 2.246-1.134 1.18-.788 2.245-1.744 4.139-3.718 1.364-1.42 1.598-1.701 1.86-2.25.277-.58.362-1.003.371-1.762 0-.361-.014-.68-.033-.699-.019-.023-.712.638-1.533 1.458l-1.5 1.5v-1.828l1.524-1.523 1.523-1.524-.01-1.256-.013-1.252Z"/></symbol><symbol viewBox="0 0 24 24" id="icon-crossplay-warn"><g clip-path="url(#icon-crossplay-warn_a)"><path d="M10.762 3.098c-1.124.118-2.38.62-3.623 1.449C5.972 5.32 4.9 6.28 3.01 8.255c-1.364 1.42-1.598 1.701-1.86 2.25-.277.58-.361 1.003-.37 1.762 0 .361.013.68.032.699.019.023.712-.638 1.533-1.458l1.5-1.5v1.828L2.32 13.359.797 14.883l.01 1.256.013 1.252 3.985-3.966c2.193-2.18 4.153-4.097 4.36-4.26.735-.577 1.424-.93 2.165-1.107.567-.136 1.383-.108 1.865.06 1.557.554 2.663 1.913 2.817 3.465.02.178.043.323.061.323.014 0 .32-.29.675-.647l.643-.642v-.262c0-.572-.3-1.35-.76-1.974-.75-1.017-2.151-1.86-3.6-2.175-.614-.131-1.617-.112-2.208.042-1.5.394-2.63 1.163-4.434 3.024l-.712.736-.005-.919V8.17l.375-.45C7.12 6.436 8.634 5.4 10.03 5.002c.746-.216 1.29-.282 2.147-.258a7.312 7.312 0 0 1 3.211.815c1.425.718 2.658 1.932 3.22 3.178.211.465.253.375.22-.496-.023-.816-.107-1.172-.412-1.805-.736-1.533-2.54-2.78-4.612-3.197a11.417 11.417 0 0 0-3.043-.14Z"/><path d="M19.148 10.575c-2.189 2.18-4.153 4.097-4.359 4.26-.736.577-1.425.93-2.166 1.107-.567.136-1.382.108-1.865-.06-1.556-.554-2.663-1.913-2.817-3.465-.02-.178-.043-.323-.061-.323-.014 0-.32.29-.675.647l-.643.642v.262c0 .572.3 1.35.76 1.974.75 1.017 2.151 1.86 3.6 2.175.614.131 1.617.112 2.208-.042 1.5-.394 2.63-1.163 4.434-3.024l.713-.736.004.919v.919l-.375.45c-1.073 1.284-2.587 2.32-3.984 2.718-.745.216-1.29.282-2.147.258a7.31 7.31 0 0 1-3.21-.815c-1.426-.718-2.659-1.932-3.221-3.178-.211-.465-.253-.376-.22.496.023.816.107 1.172.412 1.805.614 1.275 1.992 2.386 3.652 2.94 1.673.557 3.839.594 5.371.093.563-.183 1.618-.713 2.246-1.134 1.18-.788 2.245-1.744 4.139-3.718 1.364-1.42 1.598-1.701 1.86-2.25.277-.58.362-1.003.371-1.762 0-.361-.014-.68-.033-.699-.019-.023-.712.638-1.533 1.458l-1.5 1.5v-1.828l1.524-1.523 1.523-1.524-.01-1.256-.013-1.252Z"/><path d="M18.741 12.996a.868.868 0 0 0-.313-.323.836.836 0 0 0-.856 0 .868.868 0 0 0-.313.323l-5.185 9.075c-.345.605.07 1.374.742 1.374h10.368c.672 0 1.087-.77.741-1.374z" fill="#fff"/><path d="M18.741 12.996a.868.868 0 0 0-.313-.323.836.836 0 0 0-.856 0 .868.868 0 0 0-.313.323l-5.185 9.075c-.345.605.07 1.374.742 1.374h10.368c.672 0 1.087-.77.741-1.374zM18 15.667c.404 0 .721.36.68.774l-.264 2.728a.434.434 0 0 1-.134.28.411.411 0 0 1-.565 0 .434.434 0 0 1-.133-.28l-.265-2.728a.723.723 0 0 1 .174-.542.685.685 0 0 1 .507-.232zm0 4.667c.2 0 .393.082.535.228a.79.79 0 0 1 .221.55c0 .206-.08.404-.221.55a.746.746 0 0 1-.535.227.746.746 0 0 1-.535-.227.789.789 0 0 1-.22-.55.79.79 0 0 1 .22-.55.746.746 0 0 1 .535-.228z" fill="#a52f31"/></g><defs/></symbol><clipPath id="icon-crossplay-warn_a"><path fill="#fff" d="M0 0h24v24H0z"/></clipPath><symbol viewBox="0 0 512 512" id="icon-cubes"><path d="M488.6 250.2 392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1-85 42.5v-79.1l85-38.8v75.4zm0-112-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112-85 42.5v-79.1l85-38.8v75.4zm0-112-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z"/></symbol><symbol viewBox="0 0 14.021 15.329" id="icon-cyan"><path d="M14.021 7.959c-.972-1.693-3.793-4.185-3.204-6.465L6.972 0 3.124 1.493C3.714 3.773.972 6.266 0 7.959c1.194 4.657 4.173 6.192 6.973 7.37 2.8-1.178 5.855-2.713 7.048-7.37zM3.127 7.783s1.898-4.066 3.848-5.095c1.95 1.029 3.92 5.095 3.92 5.095-1.4 2.758-3.922 3.62-3.922 3.62s-2.448-.862-3.846-3.62zm6.397-.067A10.821 10.821 0 0 0 6.98 4.397c-1.086.968-1.853 2.053-2.483 3.32.686.98 1.492 1.724 2.48 2.282a7.647 7.647 0 0 0 2.547-2.283z"/></symbol><symbol viewBox="0 0 940 940" id="icon-cycle-icon"><path d="M469.594.813c-132.135.23-258.059 56.12-346.873 153.955-31.762-19.523-64.48-37.499-96.83-56.034l29.308 229.293 210.975-88.775-89.528-50.959A407.135 407.135 0 0 1 469.594 63.271 407.135 407.135 0 1 1 62.459 470.406l.02-.406H.014l-.014.406a469.593 469.593 0 1 0 939.188 0A469.593 469.593 0 0 0 469.594.812z"/></symbol><symbol viewBox="-10 0 522 512" id="icon-dice"><path d="M20 317q-4 0-4-4V151q0-4 4-5 1 0 2 1l77 45-76 122q-1 4-3 3zm211 88L23 383q-7-1-7-8 0-2 1-4l106-156 108 190zM31 420q0-3 4-4h1l203 22v66q0 7-7 8-2 0-3-1L34 424q-2-2-3-4zm325-213L256 383 156 207h200zm120 208q4 1 4 4 0 2-2 4l-195 87q-1 1-3 1-7 0-8-8v-66l204-22zm19-44q1 2 1 4 0 7-7 8l-208 22 108-190 106 156zm-4-224q4 0 4 4v162q0 4-4 4-2 0-3-2l-76-122 77-45 2-1z" fill="currentColor"/><path d="M196.54 20.512q-1-8-8-8-2 0-4 1l-151 98q-2 2-3 4 0 2 2 3l83 49 79-143q2-2 2-4zm58-19q-7 0-13 8l-95 167h218l-95-168q-5-7-15-7zm224 114q0-2-2-4l-151-98q-2-1-4-1-7 0-8 8 0 2 2 4l80 143 81-49q3-1 2-3z" fill="currentColor" fill-opacity=".75"/></symbol><symbol viewBox="0 0 71 71" id="icon-discord"><path d="M60.105 12.928a58.55 58.55 0 0 0-14.452-4.483.22.22 0 0 0-.233.11 40.784 40.784 0 0 0-1.8 3.697c-5.456-.817-10.886-.817-16.23 0-.485-1.164-1.201-2.587-1.828-3.697a.228.228 0 0 0-.233-.11 58.386 58.386 0 0 0-14.451 4.483.207.207 0 0 0-.095.082C1.578 26.76-.944 40.174.293 53.42a.244.244 0 0 0 .093.167c6.073 4.46 11.955 7.167 17.729 8.962a.23.23 0 0 0 .249-.082 42.08 42.08 0 0 0 3.627-5.9.225.225 0 0 0-.123-.312 38.772 38.772 0 0 1-5.539-2.64.228.228 0 0 1-.022-.378 31.17 31.17 0 0 0 1.1-.862.22.22 0 0 1 .23-.03c11.619 5.304 24.198 5.304 35.68 0a.219.219 0 0 1 .233.027c.356.293.728.586 1.103.865a.228.228 0 0 1-.02.378 36.384 36.384 0 0 1-5.54 2.637.227.227 0 0 0-.121.315 47.249 47.249 0 0 0 3.624 5.897.225.225 0 0 0 .249.084c5.801-1.794 11.684-4.502 17.757-8.96a.228.228 0 0 0 .092-.165c1.48-15.315-2.48-28.618-10.497-40.412a.18.18 0 0 0-.093-.084zm-36.38 32.427c-3.497 0-6.38-3.21-6.38-7.156 0-3.944 2.827-7.156 6.38-7.156 3.583 0 6.438 3.24 6.382 7.156 0 3.945-2.827 7.156-6.381 7.156zm23.593 0c-3.498 0-6.38-3.21-6.38-7.156 0-3.944 2.826-7.156 6.38-7.156 3.582 0 6.437 3.24 6.38 7.156 0 3.945-2.798 7.156-6.38 7.156z"/></symbol><symbol viewBox="0 0 503 523" id="icon-dochPrice"><defs/><path d="m62.572 63.274 2.965-.822-.41 1.084z" opacity=".85" fill="#171e21" fill-opacity=".01" stroke="#171ed9" stroke-width=".008" transform="matrix(30.54912 0 0 33.4782 -1979.787 -2198.975)"/><path d="m66.514 78.982-.005-11.15 13.099.005.01 11.14z" opacity=".15" fill="#265663" stroke="url(#icon-dochPrice_b)" stroke-width=".014" stroke-opacity=".01" transform="matrix(30.54912 0 0 33.4782 -1979.787 -2198.975)"/><path d="M79.374 75.524c.01-.704.018-1.313.023-1.836.026-2.575-.002-3.08-.002-2.657 0 .554.006 2.608-.021 4.493zm-12.64.199c.01-.704.018-1.312.023-1.836.026-2.574-.002-3.079-.002-2.656 0 .553.006 2.608-.021 4.492zm-.063-7.661c.772.01 1.44.016 2.013.02 2.821.025 3.374 0 2.91-.001-.606 0-2.858.005-4.923-.02zm7.699-.064c.772.01 1.44.016 2.013.021 2.821.024 3.374-.002 2.91-.002-.606 0-2.858.005-4.922-.02zm.086 10.781c.772.01 1.439.016 2.012.02 2.822.025 3.375 0 2.911-.001-.606 0-2.858.005-4.923-.02zm-7.752.034c.772.01 1.44.016 2.013.021 2.821.024 3.374-.002 2.91-.002-.606 0-2.858.006-4.923-.02z" opacity=".259" fill="#4d4d4d" fill-opacity=".988" stroke="#171e21" stroke-width=".345" transform="matrix(30.54912 0 0 33.4782 -1979.787 -2198.975)"/></symbol><linearGradient osb:paint="solid" id="icon-dochPrice_a"><stop offset="0" stop-color="#171e21"/></linearGradient><linearGradient gradientTransform="translate(1.708 2.148)" y2="71.258" x2="77.916" y1="71.258" x1="64.794" gradientUnits="userSpaceOnUse" id="icon-dochPrice_b" xlink:href="#icon-dochPrice_a"/><symbol viewBox="0 0 512 512" id="icon-dot-circle"><path d="M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z"/></symbol><symbol viewBox="0 0 18.231 22.384" id="icon-ducats"><path d="m7.986.006-.275.363H4.737l2.606 4.189-.008 13.603 1.762 3.268 1.762-3.268-.008-13.603L13.457.369h-2.973l-.276-.363H7.986zM4.805 1.522c-.887.528-1.917 1.425-2.571 2.225l2.232 1.138c.4-.42 1.149-.981 1.646-1.277L4.805 1.522zm8.584 0-1.307 2.086c.497.296 1.246.856 1.646 1.277l2.232-1.138c-.654-.8-1.684-1.697-2.57-2.225zM.542 3.497l2.5 4.46v9.41l2.353.378.017-11.763-4.87-2.485zm17.11 0-4.87 2.485.017 11.763 2.353-.379v-9.41l2.5-4.459zM1.057 5.52C.598 6.61.346 8.06.346 9.321c0 2.25.812 4.303 2.15 5.877l.02-7.08L1.057 5.52zm16.08 0-1.459 2.597.02 7.081a9.046 9.046 0 0 0 2.15-5.877c0-1.26-.252-2.712-.711-3.8zm-11.23 8.93v3.103c.274.167.575.323.909.454V14.45c-.312.01-.696-.008-.91 0zm5.472 0v3.557a5.94 5.94 0 0 0 .91-.454v-3.104c-.215-.008-.599.01-.91 0zM3.04 18.006 5.396 22.4v-4.026l-2.356-.368zm12.114 0-2.355.368V22.4l2.355-4.394z" paint-order="markers stroke fill"/></symbol><symbol viewBox="0 0 576 512" id="icon-edit"><path d="m402.3 344.9 32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9 22.9 22.9 60 .1 82.8zM460.1 174 402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z"/></symbol><symbol viewBox="0 0 512 512" id="icon-ellipsis-h"><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></symbol><symbol viewBox="0 0 256 251.342" id="icon-endo"><path style="display:inline;opacity:1;fill-opacity:1;stroke:none;stroke-width:.785732;stroke-dasharray:none;stroke-opacity:1" d="M127.322 0C65.442.142 13.79 45.301 7.982 106.908l3.266-2.563 18.698-2.582c8.011-47.544 49.162-80.406 97.376-80.442h1.356c48.214.036 89.365 32.898 97.376 80.442l18.698 2.582 3.265 2.563C242.21 45.301 190.557.142 128.678 0Zm-.035 47.06c-32.405.03-60.827 21.633-69.53 52.847l.023-.003v3.347h14.186v-5.306l17.076-2.676c11.52-12.664 18.687-20.448 38.959-20.53 20.271.082 27.436 7.866 38.957 20.53l17.076 2.676v5.306h14.186v-3.347l.023.003c-8.703-31.214-37.125-52.817-69.53-52.846ZM128 84.513c-18.59.058-28.32 13.998-28.32 13.998l14.377.104-14.374 8.299H75.715l-37.213.01-24.361 3.365L0 121.395l26.828 11.82 70.13 3.585a35.294 35.294 0 0 0 12.581 13.113l6.143 69.327L128 251.342l12.317-32.102 6.143-69.327a35.295 35.295 0 0 0 12.581-13.113l70.13-3.585L256 121.395l-14.14-11.107-24.362-3.365-37.213-.01h-23.969l-14.373-8.299 14.376-.104s-9.729-13.94-28.318-13.998zm0 19.427c8.8.082 15.913 7.226 15.914 16.045 0 8.82-7.115 15.963-15.914 16.046-8.8-.083-15.915-7.227-15.915-16.046 0-8.819 7.115-15.963 15.915-16.045zM25.496 117.625h16.915c4.634.004 4.634 6.484 0 6.484H25.496c-4.634 0-4.634-6.484 0-6.484zm31.445 0h5.376c4.635.004 4.635 6.487 0 6.484h-5.376c-4.635-.004-4.635-6.488 0-6.484zm19.972 0h5.377c4.634.004 4.634 6.487 0 6.484h-5.377c-4.635-.004-4.635-6.488 0-6.484zm96.797 0h5.377c4.634-.004 4.634 6.48 0 6.484h-5.377c-4.635.004-4.635-6.48 0-6.484zm19.973 0h5.378c4.635-.004 4.635 6.48 0 6.484h-5.378c-4.635.004-4.635-6.48 0-6.484zm19.906 0h16.915c4.634 0 4.634 6.484 0 6.484h-16.915c-4.634 0-4.634-6.48 0-6.484zm-116.761.026h5.376c4.635.004 4.635 6.487 0 6.484h-5.376c-4.635-.004-4.635-6.488 0-6.484zm56.968 0h5.376c4.635-.004 4.635 6.48 0 6.484h-5.376c-4.635.004-4.635-6.48 0-6.484zM7.808 132.014c4.531 59.23 52.241 103.835 111.479 108.229l-9.88-20.952-9.918-21.851-7.229.14-6.56 6.127 17.64 25.85-21.698-22.127c-26.292-13.768-45.539-35.888-51.267-66.031l-1.433-.074zm240.384 0-21.134 9.311-1.433.074c-5.728 30.143-24.975 52.263-51.267 66.03l-21.698 22.128 17.64-25.85-6.56-6.126-7.23-.141-9.917 21.85-9.88 20.953c59.237-4.395 106.948-48.998 111.479-108.23zm-190.283 6.823c6.87 23.077 27.875 47.583 50.865 54.739l-2.3-25.03c-11.001-5.613-22.351-17.148-27.256-28.484Zm140.182 0-21.309 1.225c-4.905 11.336-16.255 22.871-27.257 28.485l-2.3 25.029c22.991-7.156 43.997-31.662 50.866-54.74zm-76.686 20.178H134.595s-.313 3.032-1.503 4.052c-1.189 1.02-5.091 1.022-5.091 1.022s-3.904-.002-5.093-1.022c-1.19-1.02-1.503-4.052-1.503-4.052zm-.037 19.701h13.264s.287 5.746-1.126 7.473c-1.413 1.726-5.505 1.992-5.505 1.992s-4.094-.266-5.507-1.992c-1.413-1.727-1.126-7.473-1.126-7.473zm.118 24.293H134.514s-.644 5.267-1.933 6.897c-1.267 1.602-4.467 2.517-4.58 2.55-.114-.033-3.315-.948-4.582-2.55-1.289-1.63-1.933-6.897-1.933-6.897z"/><path style="display:inline;opacity:.75;stroke-width:.799524" d="m99.685 98.435-23.498 3.417.049 5.238 23.452-.006 14.504-8.542zm56.63 0-14.507.107 14.504 8.542 23.454.006.047-5.238zm-76.94 43.87c3.308 10.97 13.424 22.62 24.495 26.022l-1.108-11.899c-5.298-2.668-10.763-8.153-13.125-13.542zm97.25 0-10.262.581c-2.362 5.39-7.827 10.874-13.125 13.542l-1.106 11.9c11.07-3.402 21.185-15.053 24.492-26.024zM85.7 203.706l-4.06 3.723 21.699 22.127zm84.598 0-17.639 25.85 21.698-22.127z"/></symbol><symbol viewBox="0 0 512 512" id="icon-envelope"><path d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"/></symbol><symbol viewBox="0 0 512 512" id="icon-exchange-alt"><path d="M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z"/></symbol><symbol viewBox="0 0 576 512" id="icon-eye"><path d="M569.354 231.631C512.97 135.949 407.81 72 288 72 168.14 72 63.004 135.994 6.646 231.631a47.999 47.999 0 0 0 0 48.739C63.031 376.051 168.19 440 288 440c119.86 0 224.996-63.994 281.354-159.631a47.997 47.997 0 0 0 0-48.738zM288 392c-102.556 0-192.091-54.701-240-136 44.157-74.933 123.677-127.27 216.162-135.007C273.958 131.078 280 144.83 280 160c0 30.928-25.072 56-56 56s-56-25.072-56-56l.001-.042C157.794 179.043 152 200.844 152 224c0 75.111 60.889 136 136 136s136-60.889 136-136c0-31.031-10.4-59.629-27.895-82.515C451.704 164.638 498.009 205.106 528 256c-47.908 81.299-137.444 136-240 136z"/></symbol><symbol viewBox="0 0 576 512" id="icon-eye-slash"><path d="M272.702 359.139c-80.483-9.011-136.212-86.886-116.93-167.042l116.93 167.042zM288 392c-102.556 0-192.092-54.701-240-136 21.755-36.917 52.1-68.342 88.344-91.658l-27.541-39.343C67.001 152.234 31.921 188.741 6.646 231.631a47.999 47.999 0 0 0 0 48.739C63.004 376.006 168.14 440 288 440a332.89 332.89 0 0 0 39.648-2.367l-32.021-45.744A284.16 284.16 0 0 1 288 392zm281.354-111.631c-33.232 56.394-83.421 101.742-143.554 129.492l48.116 68.74c3.801 5.429 2.48 12.912-2.949 16.712L450.23 509.83c-5.429 3.801-12.912 2.48-16.712-2.949L102.084 33.399c-3.801-5.429-2.48-12.912 2.949-16.712L125.77 2.17c5.429-3.801 12.912-2.48 16.712 2.949l55.526 79.325C226.612 76.343 256.808 72 288 72c119.86 0 224.996 63.994 281.354 159.631a48.002 48.002 0 0 1 0 48.738zM528 256c-44.157-74.933-123.677-127.27-216.162-135.007C302.042 131.078 296 144.83 296 160c0 30.928 25.072 56 56 56s56-25.072 56-56l-.001-.042c30.632 57.277 16.739 130.26-36.928 171.719l26.695 38.135C452.626 346.551 498.308 306.386 528 256z"/></symbol><symbol viewBox="0 0 512 512" id="icon-filter2"><path d="M24 64h336c10 0 19 6 22 15 4 9 2 19-5 26L256 226v198c0 10-6 19-15 22-9 4-19 2-26-5l-80-80c-4-4-7-10-7-17V226L7 105c-7-7-9-17-5-26s12-15 22-15Zm145 135c5 5 7 11 7 17v118l32 32V216c0-6 3-12 7-17l87-87H82ZM472 64h48c13 0 24 11 24 24s-11 24-24 24h-48c-13 0-24-11-24-24s11-24 24-24zM344 232h176c13 0 24 11 24 24s-11 24-24 24H344c-13 0-24-11-24-24s11-24 24-24zm0 168h176c13 0 24 11 24 24s-11 24-24 24H344c-13 0-24-11-24-24s11-24 24-24z"/></symbol><symbol viewBox="0 0 448 512" id="icon-fire-alt"><path fill="currentColor" d="M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z"/></symbol><symbol viewBox="0 0 496 512" id="icon-frown"><path d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z"/></symbol><symbol viewBox="0 0 1024 1024" id="icon-github"><path d="M512 13.028C229.345 13.028.407 241.966.407 524.62c0 226.38 146.443 417.588 349.802 485.374 25.58 4.476 35.172-10.871 35.172-24.3 0-12.151-.64-52.439-.64-95.285-128.538 23.661-161.791-31.335-172.023-60.112-5.755-14.708-30.696-60.112-52.438-72.263-17.906-9.592-43.486-33.253-.64-33.893 40.288-.64 69.065 37.09 78.658 52.439 46.043 77.378 119.585 55.635 149.001 42.206 4.477-33.254 17.906-55.636 32.614-68.426-113.83-12.79-232.775-56.914-232.775-252.599 0-55.635 19.825-101.679 52.439-137.49-5.116-12.79-23.022-65.229 5.116-135.573 0 0 42.845-13.429 140.688 52.439 40.927-11.511 84.413-17.267 127.898-17.267s86.97 5.756 127.898 17.267c97.842-66.507 140.688-52.439 140.688-52.439 28.138 70.344 10.232 122.783 5.116 135.573 32.614 35.811 52.439 81.215 52.439 137.49 0 196.324-119.585 239.81-233.415 252.6 18.545 15.987 34.533 46.682 34.533 94.644 0 68.426-.64 123.422-.64 140.688 0 13.43 9.593 29.417 35.172 24.301 202.08-67.786 348.523-259.634 348.523-485.374 0-282.655-228.938-511.593-511.593-511.593z"/></symbol><symbol viewBox="0 0 384 512" id="icon-hourglass-half"><path d="M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z"/></symbol><symbol viewBox="0 0 640 512" id="icon-infinity"><path d="M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z"/></symbol><symbol viewBox="0 0 512 512" id="icon-info"><path d="M256 40c118.621 0 216 96.075 216 216 0 119.291-96.61 216-216 216-119.244 0-216-96.562-216-216 0-119.203 96.602-216 216-216m0-32C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm-36 344h12V232h-12c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h48c6.627 0 12 5.373 12 12v140h12c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12h-72c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12zm36-240c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"/></symbol><symbol viewBox="0 0 512 512" id="icon-link"><path d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"/></symbol><symbol viewBox="0 0 16.267 16.491" id="icon-madurai"><path d="M1.694 16.491c2.23-6.227 5.77-7.546 8.965-10.499.951-.88 3.086-2.097 4.85-2.429-.685-.632-1.147-.878-1.782-1.182-.778-.408-1.376-.255-2.676 1.188-1.155 1.317-5.634 4.724-6.369 4.886-.6-1.235.772-5.57.975-8.455 0 0-3.164 2.749-5.657 2.557 0 0 2.429.895 2.557 1.917z"/></symbol><symbol viewBox="0 0 400 423" id="icon-medianPrice"><path d="m162.531 374.211-.905-319.596 70.517-.147 1.118 319.744z" fill="#5a95ff"/></symbol><symbol viewBox="0 0 496 512" id="icon-meh"><path d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z"/></symbol><symbol viewBox="0 0 18 18" id="icon-naramon"><path d="M2.096 13.26c-.135-1.702-.278-3.405-1.943-5.401l14.824-.226c1.105-.706.837-2.893.837-2.893.475 2.041.346 4.33 2.033 5.876l-14.576.045c-.726.484-1.175 2.599-1.175 2.599z"/></symbol><symbol viewBox="0 0 448 512" id="icon-paste"><path d="M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z"/></symbol><symbol viewBox="0 0 1024 1024" id="icon-patreon"><path d="M137.741 725.75c1.5-266.734 1.784-274.433 11.392-308.99 23.796-85.581 79.183-167.291 142.612-210.392 72.468-49.243 140.233-70.911 221.774-70.911 165.476 0 306.731 100.693 358.349 255.448 72.925 218.636-64.099 445.36-295.631 489.159-32.01 6.055-121.217 3.042-150.485-5.083l-18.827-5.227v-81.415c0-44.779.498-81.414 1.108-81.413s12.072 4.209 25.472 9.35c55.969 21.472 122.821 18.874 174.984-6.801 41.045-20.203 65.707-42.046 90.702-80.335 29.938-45.86 36.874-71.683 34.883-129.857-1.52-44.41-2.761-49.999-17.913-80.657-34.942-70.7-97.786-118.015-171.229-128.915-87.002-12.913-172.325 28.33-219.124 105.918-33.246 55.119-31.703 39.4-33.12 337.377l-1.272 267.515 145.246-2.37c143.004-2.334 146.034-2.574 196.28-15.553 173.31-44.768 304.422-174.39 353.036-349.024 11.417-41.014 12.246-49.68 12.054-125.998-.177-70.118-1.597-86.964-9.834-116.642-26-93.682-65.87-161.534-135.816-231.14-36.62-36.442-53.216-49.156-93.275-71.46-90.78-50.542-143.996-64.706-243.648-64.849-62.259-.09-76.537 1.328-117.394 11.65-82.493 20.841-170.399 70.213-225.413 126.602-58.491 59.953-98.831 125.916-122.085 199.632-22.794 72.255-24.565 99.609-24.593 379.888l-.028 258.045h110.255l1.538-273.55z"/></symbol><symbol viewBox="0 0 24 24" id="icon-platform-mobile"><path d="M5.75 4.5A2.5 2.5 0 0 1 8.25 2h7.5a2.5 2.5 0 0 1 2.5 2.5v15a2.5 2.5 0 0 1-2.5 2.5h-7.5a2.5 2.5 0 0 1-2.5-2.5Zm7.5 13.75a1.25 1.25 0 1 0-2.5 0 1.25 1.25 0 0 0 2.5 0Z"/></symbol><symbol viewBox="0 0 24 24" id="icon-platform-pc"><path d="M2 12v8.66h4.312v-5.815l1.197.01 1.197.012 1.368-1.368 1.368-1.368v-6.06l-1.368-1.368L8.709 3.34H2Zm5.018-2.855v2.279l-.353-.011-.353-.011V6.87h.706zm6.407-4.435-1.35 1.361v11.895l1.35 1.35 1.345 1.345h4.498l1.368-1.364L22 17.932V13.19l-2.256.007-2.26.011-.012 1.978-.007 1.98h-.669V6.908h.669v3.272H22V8.097c0-1.513-.011-2.082-.041-2.082-.022 0-.643-.602-1.379-1.338L19.242 3.34l-2.234.008-2.238.003Z"/></symbol><symbol viewBox="0 0 24 24" id="icon-platform-ps"><path d="M9.218 3s.008 6.318.035 6.445l-.02 9.866L12.8 20.5l.007-13.452c0-1.207.432-1.302.824-1.146.376.15.609.557.607 1.176l.008 5.67c.28.195 1.213.433 1.624.42.146-.003 2.603.153 2.342-4.011-.127-2.027-.728-3.269-2.788-4.269-1.43-.694-4.873-1.64-6.206-1.888Zm-.699 9.877-5.743 2.131c-2.19.783-2.322 1.977-.578 2.723 3.168 1.274 6.324.545 6.324.545l-.005-1.895c.02-.017-1.747.773-2.67.847-1.284.102-1.554-.215-1.572-.372-.029-.253.406-.436.507-.472l3.745-1.373zm8.853.915c-1.577.022-2.724.399-3.88.729l.019 2.212 4.073-1.463c.53-.19 2.104-.276 2.232.209.078.295-.256.42-.524.518l-5.8 2.118.015 2.131 7.837-2.89c.48-.177 1.679-.726 1.656-1.55-.028-.986-2.27-1.68-3.892-1.901-.637-.087-1.21-.12-1.736-.113z"/></symbol><symbol viewBox="0 0 24 24" id="icon-platform-switch"><path d="M5.8 8.4v.001a1.703 1.703 0 0 0 1.697 1.696c.934 0 1.697-.764 1.697-1.697S8.43 6.704 7.497 6.704A1.7 1.7 0 0 0 5.8 8.4z"/><path d="M11.54 3H7.61A4.61 4.61 0 0 0 3 7.61v8.766a4.61 4.61 0 0 0 4.61 4.611h3.93a.127.127 0 0 0 .128-.127V3.127c.014-.07-.043-.127-.128-.127Zm-1.315 16.544H7.61a3.088 3.088 0 0 1-2.235-.934 3.149 3.149 0 0 1-.933-2.234V7.61a3.09 3.09 0 0 1 .933-2.235 3.152 3.152 0 0 1 2.235-.933h2.615Zm9.425-15.18a4.609 4.609 0 0 0-3.26-1.35h-2.785a.111.111 0 0 0-.113.113v17.746c-.014.07.042.127.127.127h2.77A4.61 4.61 0 0 0 21 16.39V7.624a4.61 4.61 0 0 0-1.35-3.26zm-2.61 10.358a1.828 1.828 0 0 1-1.823-1.824c0-1.004.82-1.824 1.824-1.824s1.824.82 1.824 1.824-.82 1.824-1.824 1.824z"/></symbol><symbol viewBox="0 0 24 24" id="icon-platform-xbox"><path d="M11.007 21.959a9.984 9.984 0 0 1-4.44-1.574c-1.123-.732-1.377-1.033-1.377-1.634 0-1.206 1.328-3.32 3.599-5.729 1.289-1.368 3.085-2.971 3.28-2.928.377.085 3.397 3.028 4.528 4.414 1.787 2.191 2.609 3.986 2.191 4.786-.317.608-2.286 1.796-3.733 2.253-1.192.376-2.758.535-4.048.412zm-7.333-4.462c-.933-1.43-1.405-2.84-1.632-4.876-.075-.673-.049-1.057.17-2.438.273-1.72 1.253-3.71 2.432-4.935.501-.52.546-.534 1.158-.327.741.25 1.534.798 2.764 1.91l.718.648-.393.481c-1.82 2.233-3.74 5.4-4.463 7.358-.393 1.064-.55 2.133-.381 2.578.114.3.01.188-.374-.399zm16.377.243c.092-.45-.025-1.275-.298-2.109-.591-1.804-2.57-5.16-4.386-7.441l-.571-.719.618-.567c.808-.741 1.369-1.185 1.974-1.562.477-.298 1.16-.56 1.453-.56.18 0 .817.661 1.33 1.382.797 1.115 1.382 2.47 1.679 3.877.191.91.208 2.858.03 3.766a12.033 12.033 0 0 1-.75 2.367c-.226.49-.781 1.444-1.025 1.755-.126.16-.126.159-.056-.185zm-8.88-13.3c-.837-.425-2.13-.881-2.844-1.004a5.194 5.194 0 0 0-.949-.054c-.59.03-.563 0 .382-.447a9.722 9.722 0 0 1 2.332-.776c1-.21 2.882-.212 3.867-.005 1.063.224 2.316.69 3.022 1.125l.21.128-.481-.024c-.957-.048-2.351.338-3.848 1.066-.452.22-.844.395-.873.39a15.893 15.893 0 0 1-.818-.398Z"/></symbol><symbol viewBox="0 0 215.535 215.535" id="icon-platinum"><path d="M105.563 0c-32.088 0-56.76 18.984-56.76 18.984l8.052 7.096-15.052 16.395-15.916 13.998-6.903-7.67S0 74.875 0 109.973c0 32.087 18.984 56.761 18.984 56.761l7.096-8.054 16.395 15.052 13.998 15.916-7.67 6.905s26.072 18.982 61.17 18.982c32.087 0 56.761-18.982 56.761-18.982l-8.054-7.096 15.052-16.396 15.916-13.998 6.905 7.671s18.982-26.074 18.982-61.171c0-32.088-18.982-56.76-18.982-56.76l-7.096 8.052-16.394-15.052-14-15.916 7.671-6.903S140.66 0 105.562 0zm-.192 8.438c28.187.505 46.406 12.464 46.406 12.464l-5.369 5.178 20.326 22.05 22.532 20.999 5.56-5.56s10.93 14.189 12.272 41.802c-.506 28.187-12.463 46.404-12.463 46.404l-5.178-5.369-22.053 20.328-20.996 22.532 5.56 5.56s-14.189 10.93-41.802 12.272c-28.186-.506-46.406-12.463-46.406-12.463l5.369-5.178-20.326-22.053-22.532-20.998-5.56 5.563S9.78 137.777 8.437 110.164C8.943 81.978 20.902 63.76 20.902 63.76l5.178 5.369 22.05-20.326 21-22.533-5.56-5.562s14.187-10.929 41.8-12.27zM71.295 60.467v11.879h9.734v69.62h-9.734v13.231h72.592v-13.23h-9.239V72.346l9.239.144V60.467z" fill-rule="evenodd"/></symbol><symbol viewBox="0 0 448 512" id="icon-plus-square"><path d="M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"/></symbol><symbol viewBox="0 0 978 388" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" id="icon-pwa_logo"><path d="m719.12 322.11 28.23-71.38h81.503l-38.688-108.283 48.38-122.33L977.1 388H874.92l-23.676-65.89H719.121zm-87.175 45.77L780.27-.002l-98.332.008L580.47 237.74 508.314.005h-75.581L355.264 237.74l-54.639-108.338-49.444 152.33 50.204 86.149h96.774l70.01-213.197 66.744 213.197h97.032zM93.344 241.602h60.57c18.348 0 34.684-2.045 49.013-6.142l15.662-48.254 43.78-134.881a107.213 107.213 0 0 0-11.423-14.996C228.468 12.446 195.578.013 152.284.013H.002v367.884h93.342V241.602zm80.172-156.96c8.782 8.838 13.17 20.668 13.17 35.476 0 14.933-3.863 26.77-11.58 35.522-8.469 9.723-24.052 14.588-46.757 14.588H93.344V71.394h35.264c21.161 0 36.133 4.411 44.908 13.249z" fill-opacity=".91" fill-rule="nonzero"/></symbol><symbol viewBox="0 0 1952 734.93" id="icon-pwa_logo_inverse"><path d="m1436.62 603.304 56.39-142.599h162.82l-77.27-216.315L1675.2 0 1952 734.934h-204.13l-47.3-131.629h-263.95z" fill="#FFF"/><path d="M1262.47 734.935 1558.79.002h-196.45l-202.7 474.931L1015.5.003H864.499l-154.768 474.93-109.146-216.416-98.773 304.302 100.284 172.116h193.331l139.857-425.91 133.346 425.91h193.84z" fill="#a52f31"/><path d="M186.476 482.643h121.003c36.654 0 69.293-4.091 97.917-12.273l31.293-96.408 87.459-269.446c-6.664-10.563-14.272-20.55-22.824-29.96C456.419 24.853 390.719 0 304.222 0H0v734.933h186.476v-252.29zm160.166-313.564c17.54 17.653 26.309 41.276 26.309 70.871 0 29.822-7.713 53.474-23.138 70.956-16.91 19.425-48.047 29.137-93.409 29.137h-69.928V142.598h70.442c42.277 0 72.185 8.827 89.724 26.481z" fill="#FFF"/></symbol><symbol viewBox="0 0 51.936 53.127" id="icon-qq"><path d="M50.267 29.674c1.056 2.179 1.833 4.656 1.64 7.586-.077 1.202-.385 2.516-.974 3.326-.3.409-.736.791-1.199.798-.776.014-1.331-.911-1.729-1.508-.473-.708-.83-1.392-1.198-2.085-.478.492-.645 1.208-.887 1.818-.757 1.91-1.812 3.573-3.149 4.924 1.251.725 2.418 1.229 3.504 2.084.668.527 1.552 1.284 1.331 2.529-.147.831-.863 1.532-1.376 1.862-3.574 2.307-11.038 1.969-15.435.533-.854-.28-1.711-.729-2.484-.843-.293-.044-.798-.023-1.109-.045-.448-.03-.947-.116-1.153-.089-.264.036-.492.307-.798.488-1.938 1.145-3.832 1.795-6.743 1.996-3.233.226-6.495-.043-9.003-.843-1.331-.424-3.111-1.291-3.282-2.838-.084-.75.122-1.874.399-2.396.688-1.304 2.242-1.724 4.168-1.907-.071-.333-.533-.547-.843-.8-1.828-1.492-3.261-3.503-4.169-5.987-.145-.399-.201-.849-.443-1.242-.428.314-.477.891-.754 1.331-.559.888-1.453 1.824-2.352 2.262-.33.161-.821.355-1.197.266-.729-.171-.895-1.512-.977-2.438-.302-3.444.698-6.223 1.819-8.384 1.432-2.76 3.478-4.552 5.545-6.254-.577-1.593.107-3.379.842-4.348.028-.728.098-1.399.354-2.04.146-.354.467-.582.533-.887.07-.319-.029-.676 0-1.065.327-4.318 2.986-8.22 5.368-10.6 1.413-1.414 2.668-2.418 4.655-3.327 1.801-.823 4.089-1.3 6.566-1.553h3.236C36.907.748 41.949 4.27 44.321 10.6c.365.972.631 1.96.888 3.016.254 1.044.223 2.32.576 3.415.214.663.766 1.254 1.065 1.953.606 1.412.807 3.406 0 4.789 1.197 1.682 2.382 3.77 3.417 5.901zm-3.328 19.341c.376-2.04-2.059-1.636-3.637-1.73.191-.668 1.122-.592 1.818-.754a4.123 4.123 0 0 0-2.972-1.464c-3.032 2.644-6.568 4.785-11.577 5.456 1.441 1.203 4.591 1.694 7.674 1.817 3.032.121 6.287-.618 7.807-1.907.405-.343.793-.901.887-1.418zm-2.661-10.159c1.104-4.161-.569-7.771-2.262-10.246-5.013 3.403-13.106 6.049-20.804 4.035.045.823.128 1.729.134 2.706.005.971.195 2.061.044 2.883-.117.646-.679 1.299-1.197 1.509-.768.312-1.958.297-2.929.223-1.758-.137-3.261-.984-3.725-2.352-.176-.519-.14-1.181-.179-1.819-.119-2.033.078-3.921.356-5.722a20.458 20.458 0 0 0-2.706-1.597c-1.445 1.452-2.125 5.038-2.04 7.541.021.635.159 1.545.31 2.262.412 1.965 1.507 3.791 2.706 5.19 1.242 1.449 2.606 2.588 4.303 3.592 3.394 2.012 8.088 3.016 12.598 3.062 1.633.016 3.217-.311 4.701-.843 1.508-.542 2.95-1.376 4.259-2.219 1.289-.83 2.639-1.991 3.504-2.972 1.155-1.309 2.39-3.207 2.927-5.233zm-6.653-17.167c.361-.167 1.765-.771 1.73-1.242-.02-.237-.747-.669-1.109-.886-3.768-2.251-9.395-3.03-14.948-2.219-2.127.312-4.053.812-5.811 1.643-.556.262-2.138 1.056-2.085 1.64.021.228.378.505.577.622.864.507 2.262.805 3.238 1.02-.198-.543-.586-.892-.8-1.419 1.998 1.383 4.328 2.877 7.407 3.149 4.613.406 8.113-1.41 10.735-3.149-.25.629-1.129.919-1.287 1.464 1.02-.012 1.607-.278 2.353-.623zm-5.013-4.568c3.081-1.104 3.179-8.305.045-9.492-.281-.106-.839-.111-1.02-.088-1.013.122-1.712.842-2.13 1.553-1.396 2.374-.918 7.275 1.73 8.072.496.149 1.05.071 1.375-.045zm-9.889-.044c2.244.224 3.325-2.575 3.281-4.79-.046-2.284-1.131-4.685-2.972-4.701-1.132-.012-1.932.767-2.395 1.597-1.373 2.454-.784 7.608 2.086 7.894zm-5.858 35.528c3.022-.151 6.146-.59 7.275-2.262-4.633-.55-8.8-1.938-11.933-4.081-.395-.27-1.05-.858-1.374-.931-.07-.016-.221.042-.354.043-1.067.018-1.794.433-2.618.933-.552.336-1.23.853-.797 1.465.491-.026.791-.243 1.374-.179-.568.498-1.555.885-1.774 1.729-.188.73.512 1.346.932 1.642 2.09 1.479 5.7 1.823 9.269 1.641z"/><path d="M41.528 36.549c.038.506-.653.628-.931.312-.854.229-1.98.008-1.775-1.108.18-.976 1.55-1.893 2.219-.977.289.396.189 1.1.397 1.642-.208-.146-.358-.351-.62-.444-.936.278.404 1.491.71.575zm-1.287-.709c.201-.062.223.172.356.044-.182-1.575-1.55.501-.533.576-.017-.283.007-.524.177-.62zm.134.178c-.228-.036-.168.216-.177.399.151-.042.091-.293.177-.399z"/><path d="M40.642 36.417c-.188-.063.003-.296.177-.268-.018.131-.145.152-.177.268zm-1.952.132c.024.477-.659.647-.933.312-.787.158-1.766.092-1.817-.754-.065-1.048 1.341-2.195 2.128-1.465.295.274.419.786.354 1.42.058.105.113.212.179.311-.311 0-.355-.427-.665-.399-.595.051-.187.941.266.931.312-.008.241-.216.488-.356zm-1.287-.709c.173-.035.229.163.354.044-.071-.299-.175-.564-.443-.665-.373.127-.79 1.291-.089 1.198-.06-.217-.005-.482.178-.577zm0 .577c.016-.138.224-.384.045-.444-.082.137-.224.359-.045.444z"/><path d="M37.937 36.106c.122.098-.141.181-.134.311-.217-.092.06-.238.134-.311zm-6.034-25.15c.593.289.962 1.389.62 2.262-.961.134-.553-1.236-1.108-1.331-.612-.102-.519 1.057-.888 1.376-.688-.091-.519-.928-.354-1.419.206-.616.952-1.269 1.73-.888zm-7.541-.488c1.771-.235 1.605 3.937.089 3.858-1.539-.077-1.62-3.654-.089-3.858z"/></symbol><symbol viewBox="0 0 512 512" id="icon-question-circle-solid"><path d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z"/></symbol><symbol viewBox="0 0 512 512" id="icon-search"><path d="M505 442.7 405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></symbol><symbol viewBox="0 0 512 512" id="icon-search-plus"><path d="M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z"/></symbol><symbol viewBox="0 0 576 512" id="icon-shopping-cart"><path d="m528.12 301.319 47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z"/></symbol><symbol viewBox="0 0 512 512" id="icon-sign-in-alt"><path d="M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z"/></symbol><symbol viewBox="0 0 512 512" id="icon-sign-out-alt"><path d="M497 273 329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z"/></symbol><symbol viewBox="0 0 400 423" id="icon-simpleAvgPrice"><path d="m162.531 374.211-.905-319.596 70.517-.147 1.118 319.744z" fill="#464646"/></symbol><symbol viewBox="0 0 496 512" id="icon-smile"><path d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z"/></symbol><symbol viewBox="0 0 32 32" id="icon-stack"><path d="M32 10 16 2 0 10l16 8 16-8zM16 4.655 26.689 10 16 15.345 5.311 10 16 4.655zm12.795 9.743L32 16l-16 8-16-8 3.205-1.602L16 20.796zm0 6L32 22l-16 8-16-8 3.205-1.602L16 26.796z"/></symbol><symbol viewBox="0 0 448 512" id="icon-steam-square"><path d="M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z"/></symbol><symbol viewBox="0 0 352 512" id="icon-times"><path d="m242.72 256 100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"/></symbol><symbol viewBox="0 0 448 512" id="icon-trash-alt"><path d="M0 84V56c0-13.3 10.7-24 24-24h112l9.4-18.7c4-8.2 12.3-13.3 21.4-13.3h114.3c9.1 0 17.4 5.1 21.5 13.3L312 32h112c13.3 0 24 10.7 24 24v28c0 6.6-5.4 12-12 12H12C5.4 96 0 90.6 0 84zm416 56v324c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V140c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12zm-272 68c0-8.8-7.2-16-16-16s-16 7.2-16 16v224c0 8.8 7.2 16 16 16s16-7.2 16-16V208zm96 0c0-8.8-7.2-16-16-16s-16 7.2-16 16v224c0 8.8 7.2 16 16 16s16-7.2 16-16V208zm96 0c0-8.8-7.2-16-16-16s-16 7.2-16 16v224c0 8.8 7.2 16 16 16s16-7.2 16-16V208z"/></symbol><symbol viewBox="0 0 512 512" id="icon-upload"><path d="M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"/></symbol><symbol viewBox="0 0 448 512" id="icon-user"><path d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"/></symbol><symbol viewBox="0 0 13.546 16.345" id="icon-vazarin"><path d="M0 1.226c5.958 2.784 9.917 8.708 11.277 15.12 1.011-1.734 1.735-3.47 2.192-6.668.349-3.612-.572-7.13-1.043-9.678C11.95 1.529 0 1.226 0 1.226zM7.14 4.87s3.362-.141 4.93-.063c.186 1.331.536 2.41-.233 4.804l-1.525-.03C9.272 7.546 7.14 4.869 7.14 4.869z"/></symbol><symbol viewBox="0 0 614.156 507.697" id="icon-wifi2"><path d="M306.719 118.003c-80.452.303-160.77 30.425-222.313 90.281l55.906 55.282c92.257-89.611 240.746-90.142 333.657-1.157l55.781-55.812c-62.01-59.39-142.58-88.897-223.031-88.594M140.312 263.566l-.125.093z"/><path d="M306.594.003C195.649.421 84.87 41.96 0 124.503l55.469 54.844C194.41 44.792 417.73 44.108 557.5 177.972l56.656-55.781C528.642 40.29 417.54-.415 306.594.003M55.469 179.347l-.563.531zm251.406 56.156c-50.088.189-100.122 18.954-138.438 56.219l53.438 52.812c47.181-45.82 123.111-46.068 170.625-.562l53.219-53.313c-38.607-36.975-88.756-55.345-138.844-55.156zm-85 109.031-.063.063z"/><circle cx="307.078" cy="429.197" r="78.5"/></symbol><symbol viewBox="0 0 372.369 372.573" id="icon-xbox"><path d="M167.618 371.807c-28.683-2.748-57.723-13.049-82.67-29.325-20.904-13.639-25.624-19.245-25.624-30.434 0-22.476 24.712-61.84 66.992-106.716 24.013-25.487 57.46-55.36 61.078-54.55 7.03 1.571 63.25 56.41 84.296 82.224 33.28 40.821 48.58 74.245 40.808 89.147-5.908 11.327-42.572 33.467-69.507 41.972-22.2 7.01-51.356 9.981-75.373 7.681zM31.09 288.68C13.719 262.03 4.943 235.793.705 197.847c-1.4-12.53-.898-19.697 3.177-45.415 5.08-32.054 23.333-69.137 45.268-91.958 9.34-9.72 10.176-9.956 21.563-6.12C84.54 59.012 99.309 69.211 122.21 89.92l13.363 12.083-7.297 8.964c-33.873 41.613-69.63 100.597-83.106 137.09-7.326 19.838-10.28 39.753-7.128 48.043 2.128 5.598.173 3.511-6.953-7.42zm304.915 4.532c1.716-8.377-.454-23.762-5.54-39.28-11.018-33.606-47.84-96.124-81.654-138.63l-10.644-13.38 11.516-10.575c15.036-13.807 25.476-22.074 36.74-29.095 8.889-5.54 21.59-10.444 27.05-10.444 3.367 0 15.218 12.298 24.785 25.72 14.818 20.788 25.718 45.987 31.24 72.22 3.57 16.95 3.867 53.231.576 70.14-2.7 13.875-8.403 31.874-13.966 44.081-4.17 9.147-14.536 26.91-19.08 32.691-2.334 2.972-2.336 2.965-1.023-3.448zM170.69 45.462c-15.601-7.923-39.67-16.427-52.965-18.715-4.66-.803-12.612-1.25-17.67-.995-10.97.554-10.48-.02 7.119-8.333 14.63-6.912 26.834-10.977 43.4-14.455C169.21-.949 204.24-.996 222.58 2.87c19.808 4.174 43.133 12.854 56.276 20.943l3.906 2.404-8.962-.453c-17.81-.9-43.766 6.296-71.633 19.857-8.405 4.09-15.718 7.358-16.25 7.26-.532-.097-7.384-3.436-15.227-7.418z" style="stroke:none"/></symbol></defs></svg>
|
|
457
|
-
${body}
|
|
458
|
-
</body>
|
|
459
|
-
</html>`;
|
|
460
|
-
}, "getHtmlString");
|
|
461
|
-
var getHtmlImageBase64 = /* @__PURE__ */ __name(async (puppe, html, type) => {
|
|
462
|
-
return await puppe.render(
|
|
463
|
-
getHtmlString(html),
|
|
464
|
-
async (page, next) => {
|
|
465
|
-
const element = await page.$("body");
|
|
466
|
-
const clip = await element.evaluate((e) => {
|
|
467
|
-
const { x, y, width, height } = e.children[1].getBoundingClientRect();
|
|
468
|
-
return { x, y, width, height };
|
|
469
|
-
});
|
|
470
|
-
return await element.screenshot({
|
|
471
|
-
type: type ?? "png",
|
|
472
|
-
encoding: "base64",
|
|
473
|
-
clip
|
|
474
|
-
});
|
|
475
531
|
}
|
|
476
|
-
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
}
|
|
488
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: "display:flex; flex-direction: column;", children: [
|
|
489
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", { children: `
|
|
490
|
-
th {
|
|
491
|
-
align-items: center;
|
|
492
|
-
font-size: 1.8rem;
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
td {
|
|
496
|
-
text-align: center;
|
|
497
|
-
font-size: 1.5rem;
|
|
498
|
-
}
|
|
532
|
+
return result;
|
|
533
|
+
})(globalItemList);
|
|
534
|
+
const globalItemGameRefDict = listToDict(data, (i) => [i.gameRef]);
|
|
535
|
+
return {
|
|
536
|
+
globalItemList,
|
|
537
|
+
globalItemDict,
|
|
538
|
+
globalItemNameToSlugDict,
|
|
539
|
+
globalItemGameRefDict
|
|
540
|
+
};
|
|
541
|
+
}, "globalItemDataFactory");
|
|
542
|
+
var globalItemData = createAsyncCache(globalItemDataFactory, -1);
|
|
499
543
|
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("table", { style: "width:100%;", children: [
|
|
513
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { children: [
|
|
514
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { style: "width:40%;", children: "玩家名" }),
|
|
515
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { style: "width:30%;", children: "状态" }),
|
|
516
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { style: "width:10%;", children: "价格" }),
|
|
517
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { style: "width:10%;", children: "数量" }),
|
|
518
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { style: "width:10%;", children: "好评" })
|
|
519
|
-
] }),
|
|
520
|
-
orders.map((order) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { children: [
|
|
521
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { children: order.user.ingameName }),
|
|
522
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { children: order.user.status }),
|
|
523
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { children: order.platinum }),
|
|
524
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { children: order.quantity }),
|
|
525
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { children: order.user.reputation })
|
|
526
|
-
] }))
|
|
527
|
-
] }),
|
|
528
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: "text-align: center; margin-top: 30px; font-size: 25px;", children: (() => {
|
|
529
|
-
const firstOrder = orders[0];
|
|
530
|
-
const comment = `/w ${firstOrder.user.ingameName} Hi! I want to buy: "${item.i18n["en"].name}${!item.maxRank || item.maxRank === 0 ? "" : ` (rank ${firstOrder.rank})`}" for ${firstOrder.platinum} platinum. (warframe.market)`;
|
|
531
|
-
return comment;
|
|
532
|
-
})() })
|
|
533
|
-
] });
|
|
534
|
-
}, "ItemOrderOutput");
|
|
535
|
-
var RivenOrderOutput = /* @__PURE__ */ __name((item, orders) => {
|
|
536
|
-
const itemNameCN = item.i18n["zh-hans"].name;
|
|
537
|
-
const itemNameEN = item.i18n["en"].name;
|
|
538
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: "display:flex; flex-direction: column; font-size: 12px;", children: [
|
|
539
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("h1", { style: "text-align: center;", children: [
|
|
540
|
-
itemNameCN,
|
|
541
|
-
" / ",
|
|
542
|
-
itemNameEN,
|
|
543
|
-
" (ID: ",
|
|
544
|
-
item.slug,
|
|
545
|
-
")"
|
|
546
|
-
] }),
|
|
547
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { style: "width:100%;", children: orders.map((order) => {
|
|
548
|
-
return RivenOrderComponent(item, order);
|
|
549
|
-
}) })
|
|
550
|
-
] });
|
|
551
|
-
}, "RivenOrderOutput");
|
|
552
|
-
var RivenOrderComponent = /* @__PURE__ */ __name((item, order) => {
|
|
553
|
-
const itemNameCN = item.i18n["zh-hans"]?.name ?? item.i18n["en"].name;
|
|
554
|
-
const itemIconLink = "https://warframe.market/static/assets/" + item.i18n["en"].thumb;
|
|
555
|
-
const ownerAvatarLink = order.owner.avatar ? "https://warframe.market/static/assets/" + order.owner.avatar : void 0;
|
|
556
|
-
const reputationColor = order.owner.reputation >= 5 ? "#00a96c" : "#739098";
|
|
557
|
-
const reputationIconLink = order.owner.reputation >= 5 ? "#icon-smile" : "#icon-meh";
|
|
558
|
-
const statusData = {
|
|
559
|
-
ingame: ["ONLINE IN GAME", "#634b93"],
|
|
560
|
-
online: ["ONLINE", "darkgreen"],
|
|
561
|
-
offline: ["OFFLINE", "darkred"]
|
|
544
|
+
// src/data/wfm/globalRivenItem.ts
|
|
545
|
+
var globalRivenItemData = createAsyncCache(async () => {
|
|
546
|
+
const rivenData = await getWFMRivenItemList();
|
|
547
|
+
if (!rivenData) {
|
|
548
|
+
throw new Error("Failed to fetch riven items from Warframe Market API.");
|
|
549
|
+
}
|
|
550
|
+
const data = rivenData;
|
|
551
|
+
const globalRivenItemList = data;
|
|
552
|
+
const globalRivenItemDict = listToDict(data, (i) => [i.slug]);
|
|
553
|
+
return {
|
|
554
|
+
globalRivenItemList,
|
|
555
|
+
globalRivenItemDict
|
|
562
556
|
};
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
" ",
|
|
582
|
-
order.item.name
|
|
583
|
-
]
|
|
584
|
-
}
|
|
585
|
-
)
|
|
586
|
-
] }),
|
|
587
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
588
|
-
"div",
|
|
589
|
-
{
|
|
590
|
-
id: "body",
|
|
591
|
-
style: "display: flex; flex-wrap: wrap; justify-content: space-between;",
|
|
592
|
-
children: [
|
|
593
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { id: "body-left", children: [
|
|
594
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { style: "display: flex; padding-top: 5px;", children: order.item.attributes.filter((attr) => attr.positive).map(RivenAttributeComponent) }),
|
|
595
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { style: "display: flex; width: 100%; padding-top: 5px;", children: order.item.attributes.filter((attr) => !attr.positive).map(RivenAttributeComponent) }),
|
|
596
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ul", { style: "display: flex; padding: 5px 0; font-size: 12px;", children: [
|
|
597
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", { style: "margin-right: 10px;", children: [
|
|
598
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "段位 " }),
|
|
599
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("b", { children: order.item.mastery_level })
|
|
600
|
-
] }),
|
|
601
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", { style: "margin-right: 10px;", children: [
|
|
602
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "等级: " }),
|
|
603
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("b", { children: order.item.mod_rank })
|
|
604
|
-
] }),
|
|
605
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", { style: "margin-right: 10px;", children: [
|
|
606
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "循环: " }),
|
|
607
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("b", { children: order.item.re_rolls })
|
|
608
|
-
] }),
|
|
609
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", { style: "margin-right: 10px;", children: [
|
|
610
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "极性: " }),
|
|
611
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("b", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
612
|
-
"svg",
|
|
613
|
-
{
|
|
614
|
-
viewBox: "0 0 18 18",
|
|
615
|
-
style: "\n color: rgb(64 64 64 / 75%);\n height: 1em;\n width: 1em;\n vertical-align: -.125em;\n fill: currentcolor;",
|
|
616
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("use", { href: `#icon-${order.item.polarity}` })
|
|
617
|
-
}
|
|
618
|
-
) })
|
|
619
|
-
] })
|
|
620
|
-
] })
|
|
621
|
-
] }),
|
|
622
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
623
|
-
"div",
|
|
624
|
-
{
|
|
625
|
-
id: "body-right",
|
|
626
|
-
style: "display: flex; flex-direction: column; justify-content: center; padding-left: 10px;",
|
|
627
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: "display: flex; justify-content: flex-end; font-size: 16px;", children: [
|
|
628
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "售价: " }),
|
|
629
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: "padding-left: 5px; line-height: 1.5;", children: [
|
|
630
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("b", { children: order.starting_price }),
|
|
631
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
632
|
-
"svg",
|
|
633
|
-
{
|
|
634
|
-
viewBox: "0 0 215.535 215.535",
|
|
635
|
-
style: "\n margin: 0 0 0 3px;\n color: rgb(64 64 64 / 75%);\n height: 1em;\n width: 1em;\n vertical-align: -.125em;\n fill: currentcolor;",
|
|
636
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("use", { href: "#icon-platinum" })
|
|
637
|
-
}
|
|
638
|
-
)
|
|
639
|
-
] })
|
|
640
|
-
] })
|
|
641
|
-
}
|
|
642
|
-
)
|
|
643
|
-
]
|
|
644
|
-
}
|
|
645
|
-
),
|
|
646
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
647
|
-
"div",
|
|
648
|
-
{
|
|
649
|
-
id: "footer",
|
|
650
|
-
style: "display: flex; margin-top: 10px; line-height: 1.5;",
|
|
651
|
-
children: [
|
|
652
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: "display: flex;", children: [
|
|
653
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
654
|
-
"img",
|
|
655
|
-
{
|
|
656
|
-
src: ownerAvatarLink,
|
|
657
|
-
style: "height: 20px; width: 20px; object-fit: contain; border-radius: 50%; box-shadow: 0 0 10px 1px rgba(0, 0, 0, .15); vertical-align: middle;"
|
|
658
|
-
}
|
|
659
|
-
),
|
|
660
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: "margin-left: 5px;", children: order.owner.ingame_name })
|
|
661
|
-
] }),
|
|
662
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
663
|
-
"div",
|
|
664
|
-
{
|
|
665
|
-
style: `margin-left: 10px; color:${statusColor ?? "gray"}; font-size: 12px;`,
|
|
666
|
-
children: statusText
|
|
667
|
-
}
|
|
668
|
-
),
|
|
669
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: `margin-left: 10px; color:${reputationColor};`, children: [
|
|
670
|
-
order.owner.reputation,
|
|
671
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
672
|
-
"svg",
|
|
673
|
-
{
|
|
674
|
-
viewBox: "0 0 496 512",
|
|
675
|
-
style: "margin-left: 5px; margin-top: -2px; overflow:hidden; height: 1em; width: 1em; vertical-align: -.125em; fill: currentcolor;",
|
|
676
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("use", { href: reputationIconLink })
|
|
677
|
-
}
|
|
678
|
-
)
|
|
679
|
-
] })
|
|
680
|
-
]
|
|
681
|
-
}
|
|
682
|
-
)
|
|
683
|
-
] });
|
|
684
|
-
}, "RivenOrderComponent");
|
|
685
|
-
var RivenAttributeComponent = /* @__PURE__ */ __name((attr, index) => {
|
|
686
|
-
const attrInfo = globalRivenAttributeDict[attr.url_name];
|
|
687
|
-
const attrName = attrInfo.i18n["zh-hans"].name;
|
|
688
|
-
const attrValuePrefix = attrInfo.unit === "multiply" ? "x" : "";
|
|
689
|
-
const unitSuffixMap = {
|
|
690
|
-
percent: "%",
|
|
691
|
-
second: "s",
|
|
692
|
-
multiply: ""
|
|
557
|
+
}, -1);
|
|
558
|
+
|
|
559
|
+
// src/data/wfm/globalRivenAttribute.ts
|
|
560
|
+
var globalRivenAttributeFactory = /* @__PURE__ */ __name(async (rivenAttributeData) => {
|
|
561
|
+
rivenAttributeData ??= await getWFMRivenAttributeList();
|
|
562
|
+
if (!rivenAttributeData) {
|
|
563
|
+
throw new Error(
|
|
564
|
+
"Failed to fetch riven attributes from Warframe Market API."
|
|
565
|
+
);
|
|
566
|
+
}
|
|
567
|
+
const data = rivenAttributeData;
|
|
568
|
+
const globalRivenAttributeList = data;
|
|
569
|
+
const globalRivenAttributeDict = listToDict(data, (a) => [
|
|
570
|
+
a.slug
|
|
571
|
+
]);
|
|
572
|
+
return {
|
|
573
|
+
globalRivenAttributeList,
|
|
574
|
+
globalRivenAttributeDict
|
|
693
575
|
};
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
color: rgb(var(${color}));
|
|
709
|
-
padding: 2px 10px;
|
|
710
|
-
border-radius: 4px;
|
|
711
|
-
margin-right: 5px;
|
|
712
|
-
font-size: 14px;
|
|
713
|
-
line-height: 1.5;`,
|
|
714
|
-
children: [
|
|
715
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("b", { children: [
|
|
716
|
-
attr.positive && !attrValuePrefix && attr.value > 0 ? "+" : "",
|
|
717
|
-
attrValue,
|
|
718
|
-
" "
|
|
719
|
-
] }),
|
|
720
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: attrName })
|
|
721
|
-
]
|
|
722
|
-
}
|
|
723
|
-
);
|
|
724
|
-
}, "RivenAttributeComponent");
|
|
576
|
+
}, "globalRivenAttributeFactory");
|
|
577
|
+
var globalRivenAttribute = createAsyncCache(
|
|
578
|
+
globalRivenAttributeFactory,
|
|
579
|
+
-1
|
|
580
|
+
);
|
|
581
|
+
|
|
582
|
+
// src/data/wfm/globalDucatnator.ts
|
|
583
|
+
var globalDucatnatorIDDict = createAsyncCache(async () => {
|
|
584
|
+
const data = await getWFMDucatnator();
|
|
585
|
+
if (!data) {
|
|
586
|
+
return void 0;
|
|
587
|
+
}
|
|
588
|
+
return listToDict(data.hour, (d) => [d.item]);
|
|
589
|
+
}, 36e5);
|
|
725
590
|
|
|
726
591
|
// src/services/wfm-service.ts
|
|
727
|
-
var import_warframe_public_export_plus4 = require("warframe-public-export-plus");
|
|
728
|
-
var globalDucatnatorIDDict = createAsyncCache(
|
|
729
|
-
async () => {
|
|
730
|
-
const data = await getWFMDucatnator();
|
|
731
|
-
if (!data || !data.payload) {
|
|
732
|
-
return void 0;
|
|
733
|
-
}
|
|
734
|
-
return listToDict(data.payload.previous_hour, (d) => [d.item]);
|
|
735
|
-
},
|
|
736
|
-
36e5
|
|
737
|
-
);
|
|
738
|
-
var globalItemList = [];
|
|
739
|
-
var globalRivenItemList = [];
|
|
740
|
-
var globalRivenAttributeList = [];
|
|
741
|
-
var globalItemDict = {};
|
|
742
|
-
var globalRivenItemDict = {};
|
|
743
|
-
var globalRivenAttributeDict = {};
|
|
744
|
-
var globalItemNameToSlugDict = {};
|
|
745
|
-
var globalItemGameRefDict = {};
|
|
746
592
|
var warframeAlias = {
|
|
747
593
|
Volt: ["电", "电男", "伏特"],
|
|
748
594
|
Trinity: ["奶妈", "奶"],
|
|
@@ -838,49 +684,7 @@ var weaponPartSuffix = [
|
|
|
838
684
|
"连接器"
|
|
839
685
|
];
|
|
840
686
|
var wmOnReady = /* @__PURE__ */ __name(async () => {
|
|
841
|
-
const data = await getWFMItemList();
|
|
842
|
-
if (!data) {
|
|
843
|
-
throw new Error("Failed to fetch items from Warframe Market API.");
|
|
844
|
-
}
|
|
845
|
-
const rivenData = await getWFMRivenItemList();
|
|
846
|
-
if (!rivenData) {
|
|
847
|
-
throw new Error("Failed to fetch riven items from Warframe Market API.");
|
|
848
|
-
}
|
|
849
|
-
const rivenAttributeData = await getWFMRivenAttributeList();
|
|
850
|
-
if (!rivenAttributeData) {
|
|
851
|
-
throw new Error(
|
|
852
|
-
"Failed to fetch riven attributes from Warframe Market API."
|
|
853
|
-
);
|
|
854
|
-
}
|
|
855
|
-
setGlobalItem(data.data);
|
|
856
|
-
setGlobalRivenItem(rivenData.data);
|
|
857
|
-
setGlobalRivenAttribute(rivenAttributeData.data);
|
|
858
687
|
}, "wmOnReady");
|
|
859
|
-
var setGlobalItem = /* @__PURE__ */ __name((data) => {
|
|
860
|
-
globalItemList = data;
|
|
861
|
-
globalItemDict = listToDict(data, (i) => [i.slug]);
|
|
862
|
-
globalItemNameToSlugDict = ((list) => {
|
|
863
|
-
const result = {};
|
|
864
|
-
for (const item of list) {
|
|
865
|
-
if (item.i18n["zh-hans"]?.name) {
|
|
866
|
-
result[normalizeName(item.i18n["zh-hans"].name)] = item.slug;
|
|
867
|
-
}
|
|
868
|
-
if (item.i18n["en"]?.name) {
|
|
869
|
-
result[normalizeName(item.i18n["en"].name)] = item.slug;
|
|
870
|
-
}
|
|
871
|
-
}
|
|
872
|
-
return result;
|
|
873
|
-
})(globalItemList);
|
|
874
|
-
globalItemGameRefDict = listToDict(data, (i) => [i.gameRef]);
|
|
875
|
-
}, "setGlobalItem");
|
|
876
|
-
var setGlobalRivenItem = /* @__PURE__ */ __name((data) => {
|
|
877
|
-
globalRivenItemList = data;
|
|
878
|
-
globalRivenItemDict = listToDict(data, (i) => [i.slug]);
|
|
879
|
-
}, "setGlobalRivenItem");
|
|
880
|
-
var setGlobalRivenAttribute = /* @__PURE__ */ __name((data) => {
|
|
881
|
-
globalRivenAttributeList = data;
|
|
882
|
-
globalRivenAttributeDict = listToDict(data, (a) => [a.slug]);
|
|
883
|
-
}, "setGlobalRivenAttribute");
|
|
884
688
|
var getItemOrders = /* @__PURE__ */ __name(async (input) => {
|
|
885
689
|
if (!input) return null;
|
|
886
690
|
input = normalizeName(input);
|
|
@@ -892,7 +696,7 @@ var getItemOrders = /* @__PURE__ */ __name(async (input) => {
|
|
|
892
696
|
input = input.slice(0, input.length - 2);
|
|
893
697
|
}
|
|
894
698
|
}
|
|
895
|
-
const targetItem = stringToWFMItem(input);
|
|
699
|
+
const targetItem = await stringToWFMItem(input);
|
|
896
700
|
if (!targetItem) {
|
|
897
701
|
return null;
|
|
898
702
|
}
|
|
@@ -901,7 +705,7 @@ var getItemOrders = /* @__PURE__ */ __name(async (input) => {
|
|
|
901
705
|
if (!data) {
|
|
902
706
|
return null;
|
|
903
707
|
}
|
|
904
|
-
const result = data.
|
|
708
|
+
const result = data.filter(
|
|
905
709
|
(order) => order.user.status === "ingame" && order.visible && order.type === "sell" && (!isFullLevel || order.rank == targetItem.maxRank)
|
|
906
710
|
).sort((a, b) => toTimeStamp(b.updatedAt) - toTimeStamp(a.updatedAt)).sort((a, b) => a.platinum - b.platinum).slice(0, 5);
|
|
907
711
|
return {
|
|
@@ -909,12 +713,9 @@ var getItemOrders = /* @__PURE__ */ __name(async (input) => {
|
|
|
909
713
|
orders: result
|
|
910
714
|
};
|
|
911
715
|
}, "getItemOrders");
|
|
912
|
-
var generateItemOrderOutput = /* @__PURE__ */ __name(async (puppe, item, orders) => {
|
|
913
|
-
const element = ItemOrderOutput(item, orders);
|
|
914
|
-
const imgBase64 = await getHtmlImageBase64(puppe, element.toString());
|
|
915
|
-
return OutputImage(imgBase64);
|
|
916
|
-
}, "generateItemOrderOutput");
|
|
917
716
|
var getRivenOrders = /* @__PURE__ */ __name(async (input) => {
|
|
717
|
+
const { globalRivenItemList } = await globalRivenItemData.get();
|
|
718
|
+
const { globalRivenAttributeDict } = await globalRivenAttribute.get();
|
|
918
719
|
const targetItem = globalRivenItemList.find(
|
|
919
720
|
(item) => compareRivenItemName(input, item.i18n["zh-hans"].name)
|
|
920
721
|
) ?? globalRivenItemList.find(
|
|
@@ -928,18 +729,26 @@ var getRivenOrders = /* @__PURE__ */ __name(async (input) => {
|
|
|
928
729
|
if (!data) {
|
|
929
730
|
return null;
|
|
930
731
|
}
|
|
931
|
-
const top5 = data.
|
|
732
|
+
const top5 = data.filter(
|
|
932
733
|
(order) => order.owner.status === "ingame" && order.visible && !order.private && !order.closed && order.is_direct_sell
|
|
933
734
|
).sort((a, b) => toTimeStamp(b.updated) - toTimeStamp(a.updated)).sort((a, b) => a.starting_price - b.starting_price).slice(0, 5);
|
|
934
|
-
|
|
735
|
+
const orders = top5.map((e) => {
|
|
736
|
+
const transformed = e.item.attributes.map(
|
|
737
|
+
(attr) => {
|
|
738
|
+
return {
|
|
739
|
+
...attr,
|
|
740
|
+
attribute: globalRivenAttributeDict[attr.url_name]
|
|
741
|
+
};
|
|
742
|
+
}
|
|
743
|
+
);
|
|
744
|
+
e.item.attributes = transformed;
|
|
745
|
+
return e;
|
|
746
|
+
});
|
|
747
|
+
return { item: targetItem, orders };
|
|
935
748
|
}, "getRivenOrders");
|
|
936
|
-
var generateRivenOrderOutput = /* @__PURE__ */ __name(async (puppe, item, orders) => {
|
|
937
|
-
const element = RivenOrderOutput(item, orders);
|
|
938
|
-
const imgBase64 = await getHtmlImageBase64(puppe, element.toString());
|
|
939
|
-
return OutputImage(imgBase64);
|
|
940
|
-
}, "generateRivenOrderOutput");
|
|
941
749
|
var applyRelicData = /* @__PURE__ */ __name(async (relic) => {
|
|
942
750
|
const tier = import_warframe_public_export_plus4.dict_zh[relic.tierKey] ?? relic.tier;
|
|
751
|
+
const { globalItemGameRefDict } = await globalItemData.get();
|
|
943
752
|
const wfmDict = await globalDucatnatorIDDict.get();
|
|
944
753
|
const loadedItems = relic.items.map((element) => {
|
|
945
754
|
const item = globalItemGameRefDict[element.name];
|
|
@@ -970,17 +779,18 @@ var applyRelicData = /* @__PURE__ */ __name(async (relic) => {
|
|
|
970
779
|
items: loadedItems
|
|
971
780
|
};
|
|
972
781
|
}, "applyRelicData");
|
|
973
|
-
var stringToWFMItem = /* @__PURE__ */ __name((input) => {
|
|
782
|
+
var stringToWFMItem = /* @__PURE__ */ __name(async (input) => {
|
|
783
|
+
const { globalItemList, globalItemDict, globalItemNameToSlugDict } = await globalItemData.get();
|
|
974
784
|
input = normalizeName(input);
|
|
975
785
|
const slug = globalItemNameToSlugDict[input];
|
|
976
786
|
if (slug) return globalItemDict[slug];
|
|
977
|
-
const normalShortHandRes = shortHandProcess(input);
|
|
787
|
+
const normalShortHandRes = await shortHandProcess(input);
|
|
978
788
|
if (normalShortHandRes) return normalShortHandRes;
|
|
979
789
|
const { pure: inputNoSuffix, suffix } = removeNameSuffix(input);
|
|
980
790
|
const aliasHasEndP = inputNoSuffix.endsWith(primeSuffix) ? inputNoSuffix.replace(new RegExp(`${primeSuffix}$`), "") : inputNoSuffix;
|
|
981
791
|
const mappedAliasHasEndP = warframeAliasDict[aliasHasEndP];
|
|
982
792
|
if (mappedAliasHasEndP) {
|
|
983
|
-
const aliasHasEndPRes = shortHandProcess(
|
|
793
|
+
const aliasHasEndPRes = await shortHandProcess(
|
|
984
794
|
normalizeName(mappedAliasHasEndP) + primeSuffix + suffix
|
|
985
795
|
);
|
|
986
796
|
if (aliasHasEndPRes) return aliasHasEndPRes;
|
|
@@ -989,7 +799,7 @@ var stringToWFMItem = /* @__PURE__ */ __name((input) => {
|
|
|
989
799
|
const aliasNoEndP = inputNoSuffix.replace(/p$/, "");
|
|
990
800
|
const mappedAliasNoEndP = warframeAliasDict[aliasNoEndP];
|
|
991
801
|
if (mappedAliasNoEndP) {
|
|
992
|
-
const aliasNoEndPRes = shortHandProcess(
|
|
802
|
+
const aliasNoEndPRes = await shortHandProcess(
|
|
993
803
|
normalizeName(mappedAliasNoEndP) + primeSuffix + suffix
|
|
994
804
|
);
|
|
995
805
|
if (aliasNoEndPRes) return aliasNoEndPRes;
|
|
@@ -1074,7 +884,8 @@ var removeNameSuffix = /* @__PURE__ */ __name((input) => {
|
|
|
1074
884
|
};
|
|
1075
885
|
}
|
|
1076
886
|
}, "removeNameSuffix");
|
|
1077
|
-
var shortHandProcess = /* @__PURE__ */ __name((input) => {
|
|
887
|
+
var shortHandProcess = /* @__PURE__ */ __name(async (input) => {
|
|
888
|
+
const { globalItemDict, globalItemNameToSlugDict } = await globalItemData.get();
|
|
1078
889
|
const { pure: inputNoSuffix, suffix } = removeNameSuffix(input);
|
|
1079
890
|
if (inputNoSuffix === input) {
|
|
1080
891
|
const fixSet = input + setSuffix;
|
|
@@ -1115,7 +926,7 @@ var compareRivenItemName = /* @__PURE__ */ __name((input, standard) => {
|
|
|
1115
926
|
}, "compareRivenItemName");
|
|
1116
927
|
|
|
1117
928
|
// src/services/wf-service.ts
|
|
1118
|
-
var
|
|
929
|
+
var import_warframe_public_export_plus8 = require("warframe-public-export-plus");
|
|
1119
930
|
|
|
1120
931
|
// src/assets/zh.json
|
|
1121
932
|
var zh_default = {
|
|
@@ -1597,6 +1408,199 @@ var arbyRewards_default = {
|
|
|
1597
1408
|
// 冥i防
|
|
1598
1409
|
};
|
|
1599
1410
|
|
|
1411
|
+
// src/assets/circuitRewards.json
|
|
1412
|
+
var incarnons = [
|
|
1413
|
+
[
|
|
1414
|
+
"/Lotus/Language/Items/AutoShotgunName",
|
|
1415
|
+
"/Lotus/Language/Items/ReconnasorName",
|
|
1416
|
+
"/Lotus/Language/Items/CorpusHandRocketLauncherName",
|
|
1417
|
+
"/Lotus/Language/Items/HeavyRifleName",
|
|
1418
|
+
"/Lotus/Language/Items/ParisScytheName"
|
|
1419
|
+
],
|
|
1420
|
+
[
|
|
1421
|
+
"/Lotus/Language/Items/StaffName",
|
|
1422
|
+
"/Lotus/Language/Items/SemiAutoRifleName",
|
|
1423
|
+
"/Lotus/Language/Items/AutoPistolName",
|
|
1424
|
+
"/Lotus/Language/Items/FistName",
|
|
1425
|
+
"/Lotus/Language/Items/ShotgunName"
|
|
1426
|
+
],
|
|
1427
|
+
[
|
|
1428
|
+
"/Lotus/Language/Locations/Lex",
|
|
1429
|
+
"/Lotus/Language/Items/PaladinMaceName",
|
|
1430
|
+
"/Lotus/Language/Items/BoltoRifleName",
|
|
1431
|
+
"/Lotus/Language/Items/HandCannonName",
|
|
1432
|
+
"/Lotus/Language/Items/CeramicDaggerName"
|
|
1433
|
+
],
|
|
1434
|
+
[
|
|
1435
|
+
"/Lotus/Language/ClanTech/Torid",
|
|
1436
|
+
"/Lotus/Language/Items/InfestedLexName",
|
|
1437
|
+
"/Lotus/Language/Weapons/InfestedDualAxeName",
|
|
1438
|
+
"/Lotus/Language/Items/GrineerSawbladeGunName",
|
|
1439
|
+
"/Lotus/Language/Items/GrnHeatGunName"
|
|
1440
|
+
],
|
|
1441
|
+
[
|
|
1442
|
+
"/Lotus/Language/Items/RegorAxeShieldName",
|
|
1443
|
+
"/Lotus/Language/Items/TennoAssaultRifleName",
|
|
1444
|
+
"/Lotus/Language/Items/TennoRevolverName",
|
|
1445
|
+
"/Lotus/Language/Items/NamiSoloName",
|
|
1446
|
+
"/Lotus/Language/Items/BurstRifleName"
|
|
1447
|
+
],
|
|
1448
|
+
[
|
|
1449
|
+
"/Lotus/Language/Weapons/SybarisPistolName",
|
|
1450
|
+
"/Lotus/Language/Items/IceHammerName",
|
|
1451
|
+
"/Lotus/Language/Items/StalkerBowName",
|
|
1452
|
+
"/Lotus/Language/Items/StalkerKunaiName",
|
|
1453
|
+
"/Lotus/Language/Items/StalkerScytheName"
|
|
1454
|
+
],
|
|
1455
|
+
[
|
|
1456
|
+
"/Lotus/Language/Items/EnergyRifleName",
|
|
1457
|
+
"/Lotus/Language/Items/TennoLeverActionRifleName",
|
|
1458
|
+
"/Lotus/Language/Items/CorpusMinigunName",
|
|
1459
|
+
"/Lotus/Language/Items/BurstPistolName",
|
|
1460
|
+
"/Lotus/Language/Items/TennoSaiName"
|
|
1461
|
+
],
|
|
1462
|
+
[
|
|
1463
|
+
"/Lotus/Language/Items/RifleName",
|
|
1464
|
+
"/Lotus/Language/Items/PistolName",
|
|
1465
|
+
"/Lotus/Language/Items/LongSwordName",
|
|
1466
|
+
"/Lotus/Language/Items/HuntingBowName",
|
|
1467
|
+
"/Lotus/Language/Items/KunaiName"
|
|
1468
|
+
]
|
|
1469
|
+
];
|
|
1470
|
+
var warframes = [
|
|
1471
|
+
[
|
|
1472
|
+
"/Lotus/Language/Suits/InfestationName",
|
|
1473
|
+
"/Lotus/Language/Suits/BardName",
|
|
1474
|
+
"/Lotus/Language/Suits/PriestName"
|
|
1475
|
+
],
|
|
1476
|
+
[
|
|
1477
|
+
"/Lotus/Language/Suits/GlassName",
|
|
1478
|
+
"/Lotus/Language/Suits/KhoraName",
|
|
1479
|
+
"/Lotus/Language/Suits/RevenantName"
|
|
1480
|
+
],
|
|
1481
|
+
[
|
|
1482
|
+
"/Lotus/Language/Suits/GarudaName",
|
|
1483
|
+
"/Lotus/Language/Suits/PacifistName",
|
|
1484
|
+
"/Lotus/Language/Suits/IronFrameName"
|
|
1485
|
+
],
|
|
1486
|
+
[
|
|
1487
|
+
"/Lotus/Language/Suits/ExcaliburName",
|
|
1488
|
+
"/Lotus/Language/Suits/TrinityName",
|
|
1489
|
+
"/Lotus/Language/Suits/EmberName"
|
|
1490
|
+
],
|
|
1491
|
+
[
|
|
1492
|
+
"/Lotus/Language/Suits/LokiName",
|
|
1493
|
+
"/Lotus/Language/Suits/MagName",
|
|
1494
|
+
"/Lotus/Language/Suits/RhinoName"
|
|
1495
|
+
],
|
|
1496
|
+
[
|
|
1497
|
+
"/Lotus/Language/Suits/AshName",
|
|
1498
|
+
"/Lotus/Language/Suits/FrostName",
|
|
1499
|
+
"/Lotus/Language/Suits/NyxName"
|
|
1500
|
+
],
|
|
1501
|
+
[
|
|
1502
|
+
"/Lotus/Language/Suits/SarynName",
|
|
1503
|
+
"/Lotus/Language/Suits/VaubanName",
|
|
1504
|
+
"/Lotus/Language/Suits/NovaName"
|
|
1505
|
+
],
|
|
1506
|
+
[
|
|
1507
|
+
"/Lotus/Language/Suits/NekrosName",
|
|
1508
|
+
"/Lotus/Language/Suits/ValkyrName",
|
|
1509
|
+
"/Lotus/Language/Suits/OberonName"
|
|
1510
|
+
],
|
|
1511
|
+
[
|
|
1512
|
+
"/Lotus/Language/Suits/HydroidName",
|
|
1513
|
+
"/Lotus/Language/Suits/MirageName",
|
|
1514
|
+
"/Lotus/Language/Suits/LimboName"
|
|
1515
|
+
],
|
|
1516
|
+
[
|
|
1517
|
+
"/Lotus/Language/Suits/MesaName",
|
|
1518
|
+
"/Lotus/Language/Suits/ChromaName",
|
|
1519
|
+
"/Lotus/Language/Suits/AtlasName"
|
|
1520
|
+
],
|
|
1521
|
+
[
|
|
1522
|
+
"/Lotus/Language/Suits/IvaraName",
|
|
1523
|
+
"/Lotus/Language/Suits/InarosName",
|
|
1524
|
+
"/Lotus/Language/Suits/TitaniaName"
|
|
1525
|
+
]
|
|
1526
|
+
];
|
|
1527
|
+
|
|
1528
|
+
// src/data/wf/relics.ts
|
|
1529
|
+
var import_warframe_public_export_plus5 = require("warframe-public-export-plus");
|
|
1530
|
+
var relics = (() => {
|
|
1531
|
+
const result = {};
|
|
1532
|
+
for (const key in import_warframe_public_export_plus5.ExportRelics) {
|
|
1533
|
+
const exportRelic = import_warframe_public_export_plus5.ExportRelics[key];
|
|
1534
|
+
const exportRewards = import_warframe_public_export_plus5.ExportRewards[exportRelic.rewardManifest];
|
|
1535
|
+
const era = "/Lotus/Language/Relics/Era_" + exportRelic.era.toUpperCase();
|
|
1536
|
+
const relicKey = normalizeName(exportRelic.era + exportRelic.category);
|
|
1537
|
+
const rewards = (exportRewards[0] ?? []).map((r) => {
|
|
1538
|
+
const item = fixRelicRewardKey(r.type);
|
|
1539
|
+
return {
|
|
1540
|
+
name: item,
|
|
1541
|
+
rarity: r.rarity,
|
|
1542
|
+
quantity: r.itemCount
|
|
1543
|
+
};
|
|
1544
|
+
});
|
|
1545
|
+
const relic = {
|
|
1546
|
+
tier: exportRelic.era,
|
|
1547
|
+
tierKey: era,
|
|
1548
|
+
num: exportRelic.category,
|
|
1549
|
+
items: rewards
|
|
1550
|
+
};
|
|
1551
|
+
result[relicKey] = relic;
|
|
1552
|
+
}
|
|
1553
|
+
return result;
|
|
1554
|
+
})();
|
|
1555
|
+
|
|
1556
|
+
// src/data/wf/globalWorldState.ts
|
|
1557
|
+
var import_warframe_public_export_plus6 = require("warframe-public-export-plus");
|
|
1558
|
+
|
|
1559
|
+
// src/infrastructure/wf/wf-api.ts
|
|
1560
|
+
var apiBase = "https://api.warframe.com/cdn/";
|
|
1561
|
+
var getWorldState = /* @__PURE__ */ __name(async (json) => {
|
|
1562
|
+
if (!json) {
|
|
1563
|
+
json = await fetchAsyncText(apiBase + "worldState.php");
|
|
1564
|
+
}
|
|
1565
|
+
if (!json) {
|
|
1566
|
+
throw new Error("获取游戏信息失败");
|
|
1567
|
+
}
|
|
1568
|
+
const WorldStateParser = await import("warframe-worldstate-parser");
|
|
1569
|
+
return await WorldStateParser.WorldState.build(json);
|
|
1570
|
+
}, "getWorldState");
|
|
1571
|
+
|
|
1572
|
+
// src/data/wf/globalWorldState.ts
|
|
1573
|
+
var globalWorldState = createAsyncCache(async () => {
|
|
1574
|
+
const worldState = await getWorldState();
|
|
1575
|
+
const fissures = [];
|
|
1576
|
+
const rjFissures = [];
|
|
1577
|
+
const spFissures = [];
|
|
1578
|
+
for (const fissure of worldState.fissures) {
|
|
1579
|
+
const nodeKey = await getSolNodeKey(fissure.nodeKey);
|
|
1580
|
+
const tierName = fissure.tierNum in fissureTierName ? import_warframe_public_export_plus6.dict_zh[fissureTierName[fissure.tierNum]] : fissure.tierNum;
|
|
1581
|
+
const obj = {
|
|
1582
|
+
category: fissure.isStorm ? "rj-fissures" : fissure.isHard ? "sp-fissures" : "fissures",
|
|
1583
|
+
hard: fissure.isHard,
|
|
1584
|
+
activation: fissure.activation?.getTime(),
|
|
1585
|
+
expiry: fissure.expiry?.getTime(),
|
|
1586
|
+
node: regionToShort(import_warframe_public_export_plus6.ExportRegions[nodeKey], import_warframe_public_export_plus6.dict_zh),
|
|
1587
|
+
tier: tierName,
|
|
1588
|
+
tierNum: fissureTierNumToNumber(fissure.tierNum)
|
|
1589
|
+
};
|
|
1590
|
+
if (fissure.isStorm) {
|
|
1591
|
+
rjFissures.push(obj);
|
|
1592
|
+
} else if (fissure.isHard) {
|
|
1593
|
+
spFissures.push(obj);
|
|
1594
|
+
} else {
|
|
1595
|
+
fissures.push(obj);
|
|
1596
|
+
}
|
|
1597
|
+
}
|
|
1598
|
+
fissures.sort((a, b) => a.tierNum - b.tierNum);
|
|
1599
|
+
spFissures.sort((a, b) => a.tierNum - b.tierNum);
|
|
1600
|
+
rjFissures.sort((a, b) => a.tierNum - b.tierNum);
|
|
1601
|
+
return { raw: worldState, fissures, spFissures, rjFissures };
|
|
1602
|
+
}, 12e4);
|
|
1603
|
+
|
|
1600
1604
|
// src/assets/arbys.ts
|
|
1601
1605
|
var arbys = `1727884800,SettlementNode11
|
|
1602
1606
|
1727888400,ClanNode10
|
|
@@ -45657,122 +45661,162 @@ var arbys = `1727884800,SettlementNode11
|
|
|
45657
45661
|
`;
|
|
45658
45662
|
var arbys_default = arbys;
|
|
45659
45663
|
|
|
45660
|
-
// src/
|
|
45661
|
-
var
|
|
45662
|
-
|
|
45663
|
-
|
|
45664
|
-
|
|
45665
|
-
|
|
45666
|
-
|
|
45667
|
-
|
|
45668
|
-
|
|
45669
|
-
|
|
45670
|
-
|
|
45671
|
-
"
|
|
45672
|
-
"
|
|
45673
|
-
"
|
|
45674
|
-
"
|
|
45675
|
-
|
|
45676
|
-
|
|
45677
|
-
"
|
|
45678
|
-
|
|
45679
|
-
"
|
|
45680
|
-
"
|
|
45681
|
-
"/
|
|
45682
|
-
|
|
45683
|
-
|
|
45684
|
-
"
|
|
45685
|
-
|
|
45686
|
-
"
|
|
45687
|
-
"
|
|
45688
|
-
"
|
|
45689
|
-
|
|
45690
|
-
|
|
45691
|
-
"
|
|
45692
|
-
"
|
|
45693
|
-
"
|
|
45694
|
-
|
|
45695
|
-
|
|
45696
|
-
|
|
45697
|
-
|
|
45698
|
-
"
|
|
45699
|
-
"
|
|
45700
|
-
"
|
|
45701
|
-
"
|
|
45702
|
-
"
|
|
45703
|
-
|
|
45704
|
-
|
|
45705
|
-
"
|
|
45706
|
-
"
|
|
45707
|
-
"/
|
|
45708
|
-
"
|
|
45709
|
-
"
|
|
45710
|
-
|
|
45711
|
-
|
|
45712
|
-
"
|
|
45713
|
-
"
|
|
45714
|
-
"
|
|
45715
|
-
"
|
|
45716
|
-
"
|
|
45717
|
-
|
|
45718
|
-
|
|
45719
|
-
|
|
45720
|
-
|
|
45721
|
-
|
|
45722
|
-
"
|
|
45723
|
-
"
|
|
45724
|
-
|
|
45725
|
-
|
|
45726
|
-
"
|
|
45727
|
-
"
|
|
45728
|
-
"
|
|
45729
|
-
|
|
45730
|
-
|
|
45731
|
-
"
|
|
45732
|
-
"/
|
|
45733
|
-
"
|
|
45734
|
-
|
|
45735
|
-
|
|
45736
|
-
|
|
45737
|
-
"
|
|
45738
|
-
"
|
|
45739
|
-
|
|
45740
|
-
|
|
45741
|
-
"
|
|
45742
|
-
"
|
|
45743
|
-
"
|
|
45744
|
-
|
|
45745
|
-
|
|
45746
|
-
|
|
45747
|
-
|
|
45748
|
-
"
|
|
45749
|
-
|
|
45750
|
-
|
|
45751
|
-
"
|
|
45752
|
-
"
|
|
45753
|
-
"
|
|
45754
|
-
|
|
45755
|
-
|
|
45756
|
-
"
|
|
45757
|
-
"
|
|
45758
|
-
"/
|
|
45759
|
-
|
|
45760
|
-
|
|
45761
|
-
|
|
45762
|
-
"
|
|
45763
|
-
"
|
|
45764
|
-
|
|
45765
|
-
|
|
45766
|
-
"
|
|
45767
|
-
"
|
|
45768
|
-
"
|
|
45769
|
-
|
|
45770
|
-
|
|
45771
|
-
|
|
45772
|
-
|
|
45773
|
-
"
|
|
45774
|
-
|
|
45775
|
-
|
|
45664
|
+
// src/data/wf/arbitrationSchedule.ts
|
|
45665
|
+
var arbitrationSchedule = arbys_default.split("\n").map((line) => line.split(",")).filter((arr) => arr.length == 2).map((arr) => {
|
|
45666
|
+
return {
|
|
45667
|
+
time: parseInt(arr[0]),
|
|
45668
|
+
node: arr[1]
|
|
45669
|
+
};
|
|
45670
|
+
});
|
|
45671
|
+
|
|
45672
|
+
// src/assets/rivenAttrValues.json
|
|
45673
|
+
var rivenAttrValues_default = {
|
|
45674
|
+
Rifle: {
|
|
45675
|
+
"Ammo Maximum": 49.95,
|
|
45676
|
+
"Damage to Corpus": 0.45,
|
|
45677
|
+
"Damage to Grineer": 0.45,
|
|
45678
|
+
"Damage to Infested": 0.45,
|
|
45679
|
+
"Cold Damage": 90,
|
|
45680
|
+
"Critical Chance": 149.99,
|
|
45681
|
+
"Critical Damage": 120,
|
|
45682
|
+
Damage: 165,
|
|
45683
|
+
"Electricity Damage": 90,
|
|
45684
|
+
"Heat Damage": 90,
|
|
45685
|
+
"Fire Rate / Attack Speed": 60.03,
|
|
45686
|
+
"Projectile Speed": 90,
|
|
45687
|
+
"Impact Damage": 119.97,
|
|
45688
|
+
"Magazine Capacity": 50,
|
|
45689
|
+
Multishot: 90,
|
|
45690
|
+
"Toxin Damage": 90,
|
|
45691
|
+
"Punch Through": 2.7,
|
|
45692
|
+
"Puncture Damage": 119.97,
|
|
45693
|
+
"Reload Speed": 50,
|
|
45694
|
+
"Slash Damage": 119.97,
|
|
45695
|
+
"Status Chance": 90,
|
|
45696
|
+
"Status Duration": 99.99,
|
|
45697
|
+
"Weapon Recoil": -90,
|
|
45698
|
+
Zoom: 59.99
|
|
45699
|
+
},
|
|
45700
|
+
Shotgun: {
|
|
45701
|
+
"Ammo Maximum": 90,
|
|
45702
|
+
"Damage to Corpus": 0.45,
|
|
45703
|
+
"Damage to Grineer": 0.45,
|
|
45704
|
+
"Damage to Infested": 0.45,
|
|
45705
|
+
"Cold Damage": 90,
|
|
45706
|
+
"Critical Chance": 90,
|
|
45707
|
+
"Critical Damage": 90,
|
|
45708
|
+
Damage: 164.7,
|
|
45709
|
+
"Electricity Damage": 90,
|
|
45710
|
+
"Heat Damage": 90,
|
|
45711
|
+
"Fire Rate / Attack Speed": 89.1,
|
|
45712
|
+
"Projectile Speed": 89.1,
|
|
45713
|
+
"Impact Damage": 119.97,
|
|
45714
|
+
"Magazine Capacity": 50,
|
|
45715
|
+
Multishot: 119.7,
|
|
45716
|
+
"Toxin Damage": 90,
|
|
45717
|
+
"Punch Through": 2.7,
|
|
45718
|
+
"Puncture Damage": 119.97,
|
|
45719
|
+
"Reload Speed": 49.45,
|
|
45720
|
+
"Slash Damage": 119.97,
|
|
45721
|
+
"Status Chance": 90,
|
|
45722
|
+
"Status Duration": 99,
|
|
45723
|
+
"Weapon Recoil": -90
|
|
45724
|
+
},
|
|
45725
|
+
Pistol: {
|
|
45726
|
+
"Ammo Maximum": 90,
|
|
45727
|
+
"Damage to Corpus": 0.45,
|
|
45728
|
+
"Damage to Grineer": 0.45,
|
|
45729
|
+
"Damage to Infested": 0.45,
|
|
45730
|
+
"Cold Damage": 90,
|
|
45731
|
+
"Critical Chance": 149.99,
|
|
45732
|
+
"Critical Damage": 90,
|
|
45733
|
+
Damage: 219.6,
|
|
45734
|
+
"Electricity Damage": 90,
|
|
45735
|
+
"Heat Damage": 90,
|
|
45736
|
+
"Fire Rate / Attack Speed": 74.7,
|
|
45737
|
+
"Projectile Speed": 90,
|
|
45738
|
+
"Impact Damage": 119.97,
|
|
45739
|
+
"Magazine Capacity": 50,
|
|
45740
|
+
Multishot: 119.7,
|
|
45741
|
+
"Toxin Damage": 90,
|
|
45742
|
+
"Punch Through": 2.7,
|
|
45743
|
+
"Puncture Damage": 119.97,
|
|
45744
|
+
"Reload Speed": 50,
|
|
45745
|
+
"Slash Damage": 119.97,
|
|
45746
|
+
"Status Chance": 90,
|
|
45747
|
+
"Status Duration": 99.99,
|
|
45748
|
+
"Weapon Recoil": -90,
|
|
45749
|
+
Zoom: 80.1
|
|
45750
|
+
},
|
|
45751
|
+
Archgun: {
|
|
45752
|
+
"Ammo Maximum": 99.9,
|
|
45753
|
+
"Damage to Corpus": 0.45,
|
|
45754
|
+
"Damage to Grineer": 0.45,
|
|
45755
|
+
"Damage to Infested": 0.45,
|
|
45756
|
+
"Cold Damage": 119.7,
|
|
45757
|
+
"Critical Chance": 99.9,
|
|
45758
|
+
"Critical Damage": 80.1,
|
|
45759
|
+
Damage: 99.9,
|
|
45760
|
+
"Electricity Damage": 119.7,
|
|
45761
|
+
"Heat Damage": 119.7,
|
|
45762
|
+
"Fire Rate / Attack Speed": 60.03,
|
|
45763
|
+
"Impact Damage": 90,
|
|
45764
|
+
"Magazine Capacity": 60.3,
|
|
45765
|
+
Multishot: 60.3,
|
|
45766
|
+
"Toxin Damage": 119.7,
|
|
45767
|
+
"Punch Through": 2.7,
|
|
45768
|
+
"Puncture Damage": 90,
|
|
45769
|
+
"Reload Speed": 99.9,
|
|
45770
|
+
"Slash Damage": 90,
|
|
45771
|
+
"Status Chance": 60.3,
|
|
45772
|
+
"Status Duration": 99.99,
|
|
45773
|
+
"Weapon Recoil": -90,
|
|
45774
|
+
Zoom: 59.99
|
|
45775
|
+
},
|
|
45776
|
+
Melee: {
|
|
45777
|
+
"Additional Combo Count Chance": 58.77,
|
|
45778
|
+
"Damage to Corpus": 0.45,
|
|
45779
|
+
"Damage to Grineer": 0.45,
|
|
45780
|
+
"Damage to Infested": 0.45,
|
|
45781
|
+
"Cold Damage": 90,
|
|
45782
|
+
"Combo Duration": 8.1,
|
|
45783
|
+
"Critical Chance": 180,
|
|
45784
|
+
"Critical Chance for Slide Attack": 120,
|
|
45785
|
+
"Critical Damage": 90,
|
|
45786
|
+
Damage: 164.7,
|
|
45787
|
+
"Electricity Damage": 90,
|
|
45788
|
+
"Heat Damage": 90,
|
|
45789
|
+
"Finisher Damage": 119.7,
|
|
45790
|
+
"Fire Rate / Attack Speed": 54.9,
|
|
45791
|
+
"Initial Combo": 24.5,
|
|
45792
|
+
"Impact Damage": 119.7,
|
|
45793
|
+
"Heavy Attack Efficiency": 73.44,
|
|
45794
|
+
"Toxin Damage": 90,
|
|
45795
|
+
"Puncture Damage": 119.7,
|
|
45796
|
+
Range: 1.94,
|
|
45797
|
+
"Slash Damage": 119.7,
|
|
45798
|
+
"Status Chance": 90,
|
|
45799
|
+
"Status Duration": 99
|
|
45800
|
+
}
|
|
45801
|
+
};
|
|
45802
|
+
|
|
45803
|
+
// src/data/wf/rivenBaseValues.ts
|
|
45804
|
+
var rivenAttrValueDict = (() => {
|
|
45805
|
+
const dict = {};
|
|
45806
|
+
for (const key in rivenAttrValues_default) {
|
|
45807
|
+
const attrs = rivenAttrValues_default[key];
|
|
45808
|
+
dict[key] = {};
|
|
45809
|
+
for (const attrKey in attrs) {
|
|
45810
|
+
const removeDamageSuffix = attrKey.endsWith("Damage") && attrKey !== "Damage" && attrKey !== "Finisher Damage" && !attrKey.startsWith("Critical");
|
|
45811
|
+
const wfmKey = removeDamageSuffix ? normalizeName(attrKey.replace("Damage", "")) : normalizeName(attrKey);
|
|
45812
|
+
dict[key][wfmKey] = attrs[attrKey];
|
|
45813
|
+
}
|
|
45814
|
+
}
|
|
45815
|
+
return dict;
|
|
45816
|
+
})();
|
|
45817
|
+
|
|
45818
|
+
// src/data/wf/rivenDisposition.ts
|
|
45819
|
+
var import_warframe_public_export_plus7 = require("warframe-public-export-plus");
|
|
45776
45820
|
|
|
45777
45821
|
// src/assets/rivencalc.json
|
|
45778
45822
|
var rivencalc_default = {
|
|
@@ -49471,350 +49515,983 @@ var rivencalc_default = {
|
|
|
49471
49515
|
]
|
|
49472
49516
|
};
|
|
49473
49517
|
|
|
49474
|
-
// src/
|
|
49475
|
-
var
|
|
49476
|
-
|
|
49477
|
-
|
|
49478
|
-
|
|
49479
|
-
|
|
49480
|
-
|
|
49481
|
-
|
|
49482
|
-
|
|
49483
|
-
|
|
49484
|
-
|
|
49485
|
-
|
|
49486
|
-
|
|
49487
|
-
|
|
49488
|
-
|
|
49489
|
-
|
|
49490
|
-
|
|
49491
|
-
|
|
49492
|
-
|
|
49493
|
-
|
|
49494
|
-
|
|
49495
|
-
|
|
49496
|
-
|
|
49497
|
-
|
|
49498
|
-
|
|
49499
|
-
|
|
49500
|
-
|
|
49501
|
-
|
|
49502
|
-
|
|
49503
|
-
|
|
49504
|
-
|
|
49505
|
-
|
|
49506
|
-
|
|
49507
|
-
|
|
49508
|
-
|
|
49509
|
-
|
|
49510
|
-
|
|
49511
|
-
|
|
49512
|
-
|
|
49513
|
-
|
|
49514
|
-
|
|
49515
|
-
|
|
49516
|
-
|
|
49517
|
-
|
|
49518
|
-
|
|
49519
|
-
|
|
49520
|
-
|
|
49521
|
-
|
|
49522
|
-
|
|
49523
|
-
|
|
49524
|
-
|
|
49525
|
-
|
|
49526
|
-
|
|
49527
|
-
|
|
49528
|
-
|
|
49529
|
-
"Damage to Corpus": 0.45,
|
|
49530
|
-
"Damage to Grineer": 0.45,
|
|
49531
|
-
"Damage to Infested": 0.45,
|
|
49532
|
-
"Cold Damage": 90,
|
|
49533
|
-
"Critical Chance": 149.99,
|
|
49534
|
-
"Critical Damage": 90,
|
|
49535
|
-
Damage: 219.6,
|
|
49536
|
-
"Electricity Damage": 90,
|
|
49537
|
-
"Heat Damage": 90,
|
|
49538
|
-
"Fire Rate / Attack Speed": 74.7,
|
|
49539
|
-
"Projectile Speed": 90,
|
|
49540
|
-
"Impact Damage": 119.97,
|
|
49541
|
-
"Magazine Capacity": 50,
|
|
49542
|
-
Multishot: 119.7,
|
|
49543
|
-
"Toxin Damage": 90,
|
|
49544
|
-
"Punch Through": 2.7,
|
|
49545
|
-
"Puncture Damage": 119.97,
|
|
49546
|
-
"Reload Speed": 50,
|
|
49547
|
-
"Slash Damage": 119.97,
|
|
49548
|
-
"Status Chance": 90,
|
|
49549
|
-
"Status Duration": 99.99,
|
|
49550
|
-
"Weapon Recoil": -90,
|
|
49551
|
-
Zoom: 80.1
|
|
49518
|
+
// src/data/wf/rivenDisposition.ts
|
|
49519
|
+
var weaponRivenDispositionDict = (() => {
|
|
49520
|
+
const mapped = rivencalc_default.weapons.reduce(
|
|
49521
|
+
(prev, element) => {
|
|
49522
|
+
let mapped2 = void 0;
|
|
49523
|
+
for (const weaponKey in import_warframe_public_export_plus7.ExportWeapons) {
|
|
49524
|
+
const weapon = import_warframe_public_export_plus7.ExportWeapons[weaponKey];
|
|
49525
|
+
const splited = weapon.name.split("/");
|
|
49526
|
+
if (splited.length <= 0) {
|
|
49527
|
+
continue;
|
|
49528
|
+
}
|
|
49529
|
+
const keyName = splited[splited.length - 1];
|
|
49530
|
+
const normalizedCalcName = normalizeName(element.name);
|
|
49531
|
+
if (normalizeName(keyName) === normalizedCalcName) {
|
|
49532
|
+
mapped2 = weapon;
|
|
49533
|
+
break;
|
|
49534
|
+
}
|
|
49535
|
+
const weaponEN2 = import_warframe_public_export_plus7.dict_en[weapon.name];
|
|
49536
|
+
if (weaponEN2 && normalizeName(weaponEN2) === normalizedCalcName) {
|
|
49537
|
+
mapped2 = weapon;
|
|
49538
|
+
break;
|
|
49539
|
+
}
|
|
49540
|
+
}
|
|
49541
|
+
if (!mapped2) {
|
|
49542
|
+
return prev;
|
|
49543
|
+
}
|
|
49544
|
+
const weaponEN = import_warframe_public_export_plus7.dict_en[mapped2.name];
|
|
49545
|
+
const weaponZH = import_warframe_public_export_plus7.dict_zh[mapped2.name];
|
|
49546
|
+
const result = {
|
|
49547
|
+
name: {
|
|
49548
|
+
en: weaponEN,
|
|
49549
|
+
zh: weaponZH
|
|
49550
|
+
},
|
|
49551
|
+
calc: element,
|
|
49552
|
+
weapon: mapped2
|
|
49553
|
+
};
|
|
49554
|
+
prev.push(result);
|
|
49555
|
+
return prev;
|
|
49556
|
+
},
|
|
49557
|
+
[]
|
|
49558
|
+
);
|
|
49559
|
+
return listToDict(mapped, (e) => [
|
|
49560
|
+
normalizeName(e.name.zh),
|
|
49561
|
+
normalizeName(e.name.en)
|
|
49562
|
+
]);
|
|
49563
|
+
})();
|
|
49564
|
+
|
|
49565
|
+
// src/data/wf/rivenStatData.ts
|
|
49566
|
+
var rivenStatFixFactor = {
|
|
49567
|
+
"2": { buffFactor: 0.99, buffCount: 2, curseFactor: 0, curseCount: 0 },
|
|
49568
|
+
"21": {
|
|
49569
|
+
buffFactor: 1.2375,
|
|
49570
|
+
buffCount: 2,
|
|
49571
|
+
curseFactor: -0.495,
|
|
49572
|
+
curseCount: 1
|
|
49552
49573
|
},
|
|
49553
|
-
|
|
49554
|
-
|
|
49555
|
-
|
|
49556
|
-
|
|
49557
|
-
|
|
49558
|
-
"Cold Damage": 119.7,
|
|
49559
|
-
"Critical Chance": 99.9,
|
|
49560
|
-
"Critical Damage": 80.1,
|
|
49561
|
-
Damage: 99.9,
|
|
49562
|
-
"Electricity Damage": 119.7,
|
|
49563
|
-
"Heat Damage": 119.7,
|
|
49564
|
-
"Fire Rate / Attack Speed": 60.03,
|
|
49565
|
-
"Impact Damage": 90,
|
|
49566
|
-
"Magazine Capacity": 60.3,
|
|
49567
|
-
Multishot: 60.3,
|
|
49568
|
-
"Toxin Damage": 119.7,
|
|
49569
|
-
"Punch Through": 2.7,
|
|
49570
|
-
"Puncture Damage": 90,
|
|
49571
|
-
"Reload Speed": 99.9,
|
|
49572
|
-
"Slash Damage": 90,
|
|
49573
|
-
"Status Chance": 60.3,
|
|
49574
|
-
"Status Duration": 99.99,
|
|
49575
|
-
"Weapon Recoil": -90,
|
|
49576
|
-
Zoom: 59.99
|
|
49574
|
+
"3": {
|
|
49575
|
+
buffFactor: 0.75,
|
|
49576
|
+
buffCount: 3,
|
|
49577
|
+
curseFactor: 0,
|
|
49578
|
+
curseCount: 0
|
|
49577
49579
|
},
|
|
49578
|
-
|
|
49579
|
-
|
|
49580
|
-
|
|
49581
|
-
|
|
49582
|
-
|
|
49583
|
-
"Cold Damage": 90,
|
|
49584
|
-
"Combo Duration": 8.1,
|
|
49585
|
-
"Critical Chance": 180,
|
|
49586
|
-
"Critical Chance for Slide Attack": 120,
|
|
49587
|
-
"Critical Damage": 90,
|
|
49588
|
-
Damage: 164.7,
|
|
49589
|
-
"Electricity Damage": 90,
|
|
49590
|
-
"Heat Damage": 90,
|
|
49591
|
-
"Finisher Damage": 119.7,
|
|
49592
|
-
"Fire Rate / Attack Speed": 54.9,
|
|
49593
|
-
"Initial Combo": 24.5,
|
|
49594
|
-
"Impact Damage": 119.7,
|
|
49595
|
-
"Heavy Attack Efficiency": 73.44,
|
|
49596
|
-
"Toxin Damage": 90,
|
|
49597
|
-
"Puncture Damage": 119.7,
|
|
49598
|
-
Range: 1.94,
|
|
49599
|
-
"Slash Damage": 119.7,
|
|
49600
|
-
"Status Chance": 90,
|
|
49601
|
-
"Status Duration": 99
|
|
49580
|
+
"31": {
|
|
49581
|
+
buffFactor: 0.9375,
|
|
49582
|
+
buffCount: 3,
|
|
49583
|
+
curseFactor: -0.75,
|
|
49584
|
+
curseCount: 1
|
|
49602
49585
|
}
|
|
49603
49586
|
};
|
|
49604
49587
|
|
|
49605
|
-
// src/
|
|
49606
|
-
var
|
|
49607
|
-
|
|
49608
|
-
|
|
49609
|
-
|
|
49610
|
-
|
|
49611
|
-
|
|
49612
|
-
|
|
49613
|
-
|
|
49614
|
-
|
|
49615
|
-
|
|
49616
|
-
|
|
49617
|
-
|
|
49618
|
-
|
|
49619
|
-
|
|
49620
|
-
|
|
49621
|
-
|
|
49622
|
-
|
|
49623
|
-
|
|
49624
|
-
|
|
49625
|
-
|
|
49626
|
-
|
|
49627
|
-
|
|
49628
|
-
|
|
49629
|
-
|
|
49630
|
-
|
|
49631
|
-
|
|
49632
|
-
|
|
49588
|
+
// src/services/wf-service.ts
|
|
49589
|
+
var getRelic = /* @__PURE__ */ __name(async (input) => {
|
|
49590
|
+
if (!input) {
|
|
49591
|
+
return "请提供正确的遗物名称";
|
|
49592
|
+
}
|
|
49593
|
+
input = normalizeName(input);
|
|
49594
|
+
if (!input) {
|
|
49595
|
+
return "请提供正确的遗物名称";
|
|
49596
|
+
}
|
|
49597
|
+
if (!relics) {
|
|
49598
|
+
return "遗物数据未加载完成,请稍后再试";
|
|
49599
|
+
}
|
|
49600
|
+
const tierListForMatch = [
|
|
49601
|
+
"古纪",
|
|
49602
|
+
"前纪",
|
|
49603
|
+
"中纪",
|
|
49604
|
+
"后纪",
|
|
49605
|
+
"安魂",
|
|
49606
|
+
"先锋",
|
|
49607
|
+
"Lith",
|
|
49608
|
+
"Meso",
|
|
49609
|
+
"Neo",
|
|
49610
|
+
"Axi",
|
|
49611
|
+
"Requiem",
|
|
49612
|
+
"Vanguard"
|
|
49613
|
+
].map((t) => normalizeName(t));
|
|
49614
|
+
const tier = tierListForMatch.find((t) => input.startsWith(t));
|
|
49615
|
+
if (!tier) {
|
|
49616
|
+
return "请提供正确的遗物名称";
|
|
49617
|
+
}
|
|
49618
|
+
const category = input.replace(new RegExp(`^${tier}`), "").replace(/遗物$|relic$/, "");
|
|
49619
|
+
const zhTierMap = {
|
|
49620
|
+
古纪: "Lith",
|
|
49621
|
+
前纪: "Meso",
|
|
49622
|
+
中纪: "Neo",
|
|
49623
|
+
后纪: "Axi",
|
|
49624
|
+
安魂: "Requiem",
|
|
49625
|
+
先锋: "Vanguard"
|
|
49626
|
+
};
|
|
49627
|
+
const enTier = zhTierMap[tier] ?? tier;
|
|
49628
|
+
const key = normalizeName(enTier + category);
|
|
49629
|
+
return relics[key] ?? "未找到对应遗物信息";
|
|
49630
|
+
}, "getRelic");
|
|
49631
|
+
var getArbitrations = /* @__PURE__ */ __name((day = 3) => {
|
|
49632
|
+
if (day > 14 || day <= 0) {
|
|
49633
|
+
return "天数需小于等于14且大于0";
|
|
49634
|
+
}
|
|
49635
|
+
const currentHourTimeStamp = Math.floor(
|
|
49636
|
+
(/* @__PURE__ */ new Date()).setMinutes(0, 0, 0) / 1e3
|
|
49633
49637
|
);
|
|
49634
|
-
|
|
49635
|
-
|
|
49636
|
-
|
|
49637
|
-
|
|
49638
|
-
|
|
49639
|
-
|
|
49640
|
-
|
|
49641
|
-
|
|
49642
|
-
|
|
49643
|
-
|
|
49644
|
-
|
|
49645
|
-
|
|
49646
|
-
|
|
49647
|
-
|
|
49648
|
-
|
|
49649
|
-
|
|
49650
|
-
|
|
49651
|
-
|
|
49652
|
-
|
|
49653
|
-
|
|
49654
|
-
|
|
49655
|
-
|
|
49656
|
-
|
|
49657
|
-
|
|
49658
|
-
|
|
49659
|
-
|
|
49660
|
-
|
|
49661
|
-
|
|
49638
|
+
const currentHourIndex = arbitrationSchedule.findIndex(
|
|
49639
|
+
(a) => a.time === currentHourTimeStamp
|
|
49640
|
+
);
|
|
49641
|
+
const weekArbys = arbitrationSchedule.slice(
|
|
49642
|
+
currentHourIndex,
|
|
49643
|
+
currentHourIndex + 24 * day
|
|
49644
|
+
);
|
|
49645
|
+
return weekArbys.filter((a) => arbyRewards_default[a.node]).map((a) => {
|
|
49646
|
+
const obj = regionToShort(import_warframe_public_export_plus8.ExportRegions[a.node], import_warframe_public_export_plus8.dict_zh);
|
|
49647
|
+
return {
|
|
49648
|
+
...obj,
|
|
49649
|
+
time: new Date(a.time * 1e3).toLocaleString("zh-cn", {
|
|
49650
|
+
year: "numeric",
|
|
49651
|
+
month: "numeric",
|
|
49652
|
+
day: "numeric",
|
|
49653
|
+
hour: "numeric",
|
|
49654
|
+
// minute: 'numeric', // 保持注释或删除,以去除分钟
|
|
49655
|
+
// second: 'numeric', // 保持注释或删除,以去除秒
|
|
49656
|
+
hour12: false,
|
|
49657
|
+
// 统一使用 24 小时制
|
|
49658
|
+
// hourCycle: 'h23' // 另一种设置 24 小时制的方法
|
|
49659
|
+
timeZone: "Asia/Shanghai"
|
|
49660
|
+
}),
|
|
49661
|
+
rewards: arbyRewards_default[a.node]
|
|
49662
|
+
};
|
|
49663
|
+
});
|
|
49664
|
+
}, "getArbitrations");
|
|
49665
|
+
var getWeekly = /* @__PURE__ */ __name(async () => {
|
|
49666
|
+
const { raw: worldState } = await globalWorldState.get();
|
|
49667
|
+
if (!worldState) {
|
|
49668
|
+
return "内部错误,获取最新信息失败";
|
|
49669
|
+
}
|
|
49670
|
+
const archon = {
|
|
49671
|
+
name: import_warframe_public_export_plus8.dict_zh["/Lotus/Language/Narmer/" + removeSpace(worldState.archonHunt.boss)]
|
|
49672
|
+
};
|
|
49673
|
+
const stringToDebuff = /* @__PURE__ */ __name((key, name2, prefix) => {
|
|
49674
|
+
const keyToName = zh_default[`${prefix}${key}`];
|
|
49675
|
+
if (!keyToName) {
|
|
49676
|
+
for (const transKey in en_default) {
|
|
49677
|
+
if (en_default[transKey] === name2) {
|
|
49678
|
+
return {
|
|
49679
|
+
name: zh_default[transKey],
|
|
49680
|
+
desc: zh_default[transKey + "_Desc"]
|
|
49681
|
+
};
|
|
49682
|
+
}
|
|
49662
49683
|
}
|
|
49663
|
-
|
|
49664
|
-
|
|
49665
|
-
|
|
49666
|
-
|
|
49667
|
-
|
|
49668
|
-
|
|
49669
|
-
|
|
49670
|
-
|
|
49684
|
+
}
|
|
49685
|
+
const riskDesc = zh_default[`${prefix}${key}_Desc`];
|
|
49686
|
+
return {
|
|
49687
|
+
name: keyToName,
|
|
49688
|
+
desc: riskDesc
|
|
49689
|
+
};
|
|
49690
|
+
}, "stringToDebuff");
|
|
49691
|
+
const deepArchim = worldState.archimedeas[0];
|
|
49692
|
+
const deepArchimMissions = await Promise.all(
|
|
49693
|
+
deepArchim.missions.map(async (m) => {
|
|
49694
|
+
const receivedType = await getMissionTypeKey(m.missionType);
|
|
49695
|
+
const type = import_warframe_public_export_plus8.dict_zh[import_warframe_public_export_plus8.ExportMissionTypes[receivedType]?.name ?? ""] ?? m.missionType;
|
|
49696
|
+
const deviation = stringToDebuff(
|
|
49697
|
+
m.deviation.key,
|
|
49698
|
+
m.deviation.name,
|
|
49699
|
+
"/Lotus/Language/Conquest/MissionVariant_LabConquest_"
|
|
49700
|
+
);
|
|
49701
|
+
const risks = m.risks.map(
|
|
49702
|
+
(r) => stringToDebuff(r.key, r.name, "/Lotus/Language/Conquest/Condition_")
|
|
49703
|
+
);
|
|
49704
|
+
return {
|
|
49705
|
+
type,
|
|
49706
|
+
deviation,
|
|
49707
|
+
risks
|
|
49708
|
+
};
|
|
49709
|
+
})
|
|
49710
|
+
);
|
|
49711
|
+
const deepArchimPersonalModifier = deepArchim.personalModifiers.map(
|
|
49712
|
+
(p) => stringToDebuff(p.key, p.name, "/Lotus/Language/Conquest/PersonalMod_")
|
|
49713
|
+
);
|
|
49714
|
+
const deepArchimRes = {
|
|
49715
|
+
name: "深层科研",
|
|
49716
|
+
missions: deepArchimMissions,
|
|
49717
|
+
peronal: deepArchimPersonalModifier
|
|
49671
49718
|
};
|
|
49672
|
-
const
|
|
49673
|
-
|
|
49674
|
-
|
|
49675
|
-
|
|
49676
|
-
|
|
49677
|
-
|
|
49678
|
-
|
|
49719
|
+
const temporalArchim = worldState.archimedeas[1];
|
|
49720
|
+
const temporalArchimMissions = await Promise.all(
|
|
49721
|
+
temporalArchim.missions.map(async (m) => {
|
|
49722
|
+
const receivedType = await getMissionTypeKey(m.missionType);
|
|
49723
|
+
const type = import_warframe_public_export_plus8.dict_zh[import_warframe_public_export_plus8.ExportMissionTypes[receivedType]?.name ?? ""] ?? receivedType;
|
|
49724
|
+
const deviation = stringToDebuff(
|
|
49725
|
+
m.deviation.key,
|
|
49726
|
+
m.deviation.name,
|
|
49727
|
+
"/Lotus/Language/Conquest/MissionVariant_HexConquest_"
|
|
49728
|
+
);
|
|
49729
|
+
const risks = m.risks.map(
|
|
49730
|
+
(r) => stringToDebuff(r.key, r.name, "/Lotus/Language/Conquest/Condition_")
|
|
49731
|
+
);
|
|
49732
|
+
return {
|
|
49733
|
+
type,
|
|
49734
|
+
deviation,
|
|
49735
|
+
risks
|
|
49736
|
+
};
|
|
49737
|
+
})
|
|
49738
|
+
);
|
|
49739
|
+
const temporalArchimPersonalModifier = temporalArchim.personalModifiers.map(
|
|
49740
|
+
(p) => stringToDebuff(p.key, p.name, "/Lotus/Language/Conquest/PersonalMod_")
|
|
49741
|
+
);
|
|
49742
|
+
const temporalArchimRes = {
|
|
49743
|
+
name: "时光科研",
|
|
49744
|
+
missions: temporalArchimMissions,
|
|
49745
|
+
peronal: temporalArchimPersonalModifier
|
|
49746
|
+
};
|
|
49747
|
+
return {
|
|
49748
|
+
archonHunt: archon,
|
|
49749
|
+
deepArchimedea: deepArchimRes,
|
|
49750
|
+
temporalArchimedea: temporalArchimRes
|
|
49751
|
+
};
|
|
49752
|
+
}, "getWeekly");
|
|
49753
|
+
var getEnvironment = /* @__PURE__ */ __name(async () => {
|
|
49754
|
+
const { raw: worldState } = await globalWorldState.get();
|
|
49755
|
+
if (!worldState) {
|
|
49756
|
+
return "内部错误,获取最新信息失败";
|
|
49757
|
+
}
|
|
49758
|
+
const cetusDay = worldState.cetusCycle.isDay ? "白天" : "黑夜";
|
|
49759
|
+
const cetus = `地球/夜灵平野: ${cetusDay} ${worldState.cetusCycle.timeLeft}`;
|
|
49760
|
+
const vallisState = worldState.vallisCycle.isWarm ? "温暖" : "寒冷";
|
|
49761
|
+
const vallis = `奥布山谷: ${vallisState} ${worldState.vallisCycle.timeLeft}`;
|
|
49762
|
+
const cambionState = worldState.cambionCycle.state ? worldState.cambionCycle.state.charAt(0).toUpperCase() + worldState.cambionCycle.state.slice(1) : "未知";
|
|
49763
|
+
const cambion = `魔胎之境: ${cambionState} ${worldState.cambionCycle.timeLeft}`;
|
|
49764
|
+
const duviriStateTransDict = {
|
|
49765
|
+
sorrow: "悲伤",
|
|
49766
|
+
fear: "恐惧",
|
|
49767
|
+
joy: "喜悦",
|
|
49768
|
+
anger: "愤怒",
|
|
49769
|
+
envy: "嫉妒"
|
|
49770
|
+
};
|
|
49771
|
+
const duviriState = duviriStateTransDict[worldState.duviriCycle.state] ?? worldState.duviriCycle.state;
|
|
49772
|
+
const duviri = `双衍王境: ${duviriState} ${worldState.duviriCycle.endString}`;
|
|
49773
|
+
const zarimanFaction = worldState.zarimanCycle.isCorpus ? "Corpus" : "Grineer";
|
|
49774
|
+
const zariman = `扎里曼号: ${zarimanFaction} ${worldState.zarimanCycle.timeLeft}`;
|
|
49775
|
+
return `当前环境:
|
|
49776
|
+
${cetus}
|
|
49777
|
+
${vallis}
|
|
49778
|
+
${cambion}
|
|
49779
|
+
${duviri}
|
|
49780
|
+
${zariman}`;
|
|
49781
|
+
}, "getEnvironment");
|
|
49782
|
+
var getCircuitWeek = /* @__PURE__ */ __name(() => {
|
|
49783
|
+
const EPOCH = 1734307200 * 1e3;
|
|
49784
|
+
const week = Math.trunc((Date.now() - EPOCH) / 6048e5);
|
|
49785
|
+
const incarnons2 = incarnons[week % incarnons.length].map(
|
|
49786
|
+
(i) => import_warframe_public_export_plus8.dict_zh[i]
|
|
49787
|
+
);
|
|
49788
|
+
const warframes2 = warframes[week % warframes.length].map(
|
|
49789
|
+
(i) => import_warframe_public_export_plus8.dict_zh[i]
|
|
49790
|
+
);
|
|
49791
|
+
return {
|
|
49792
|
+
incarnons: incarnons2,
|
|
49793
|
+
warframes: warframes2
|
|
49794
|
+
};
|
|
49795
|
+
}, "getCircuitWeek");
|
|
49796
|
+
var getFissures = /* @__PURE__ */ __name(async () => {
|
|
49797
|
+
const { fissures } = await globalWorldState.get();
|
|
49798
|
+
return fissures ?? "内部错误,获取最新信息失败";
|
|
49799
|
+
}, "getFissures");
|
|
49800
|
+
var getSteelPathFissures = /* @__PURE__ */ __name(async () => {
|
|
49801
|
+
const { spFissures } = await globalWorldState.get();
|
|
49802
|
+
return spFissures ?? "内部错误,获取最新信息失败";
|
|
49803
|
+
}, "getSteelPathFissures");
|
|
49804
|
+
var getRailjackFissures = /* @__PURE__ */ __name(async () => {
|
|
49805
|
+
const { rjFissures } = await globalWorldState.get();
|
|
49806
|
+
return rjFissures ?? "内部错误,获取最新信息失败";
|
|
49807
|
+
}, "getRailjackFissures");
|
|
49808
|
+
var getAnalyzedRiven = /* @__PURE__ */ __name(async (secret, url) => {
|
|
49809
|
+
const img = await fetchAsyncImage(url);
|
|
49810
|
+
if (!img) {
|
|
49811
|
+
return "获取图片失败";
|
|
49812
|
+
}
|
|
49813
|
+
const extractResult = await extractTextFromImage(img, secret);
|
|
49814
|
+
if (!extractResult) {
|
|
49815
|
+
return "解析图片失败";
|
|
49816
|
+
}
|
|
49817
|
+
const parseResult = await parseOCRResult(extractResult);
|
|
49818
|
+
if (!parseResult || parseResult.attributes.length < 2 || parseResult.attributes.length > 4) {
|
|
49819
|
+
return "解析图片失败";
|
|
49820
|
+
}
|
|
49821
|
+
return analyzeRivenStat(parseResult);
|
|
49822
|
+
}, "getAnalyzedRiven");
|
|
49823
|
+
var getVoidTrader = /* @__PURE__ */ __name(async () => {
|
|
49824
|
+
const { raw: worldState } = await globalWorldState.get();
|
|
49825
|
+
if (worldState.voidTraders.length === 0) {
|
|
49826
|
+
return "虚空商人仍在未知地带漂流...";
|
|
49827
|
+
}
|
|
49828
|
+
const trader = worldState.voidTraders[0];
|
|
49829
|
+
if (trader && trader.activation && trader.activation.getTime() > Date.now()) {
|
|
49830
|
+
const diff2 = trader.activation.getTime() - Date.now();
|
|
49831
|
+
return "距离虚空商人到达还有: " + msToHumanReadable(diff2);
|
|
49832
|
+
}
|
|
49833
|
+
const diff = trader.expiry.getTime() - Date.now();
|
|
49834
|
+
const items = trader.inventory.map(getVoidTraderItem);
|
|
49835
|
+
return { expiry: msToHumanReadable(diff), items };
|
|
49836
|
+
}, "getVoidTrader");
|
|
49837
|
+
var getStaticRivenStats = /* @__PURE__ */ __name(async (weaponType, statType, disposition) => {
|
|
49838
|
+
if (disposition > 1.51 || disposition < 0.5) {
|
|
49839
|
+
return "裂罅倾向错误";
|
|
49840
|
+
}
|
|
49841
|
+
const weaponTypes = [
|
|
49842
|
+
"步枪",
|
|
49843
|
+
"手枪",
|
|
49844
|
+
"霰弹枪",
|
|
49845
|
+
"Archwing枪械",
|
|
49846
|
+
"近战",
|
|
49847
|
+
"Rifle",
|
|
49848
|
+
"Shotgun",
|
|
49849
|
+
"Pistol",
|
|
49850
|
+
"Archgun",
|
|
49851
|
+
"Melee"
|
|
49679
49852
|
];
|
|
49680
|
-
|
|
49681
|
-
|
|
49682
|
-
|
|
49683
|
-
|
|
49684
|
-
|
|
49685
|
-
|
|
49686
|
-
|
|
49687
|
-
|
|
49688
|
-
|
|
49689
|
-
|
|
49690
|
-
|
|
49691
|
-
|
|
49692
|
-
|
|
49693
|
-
|
|
49694
|
-
|
|
49695
|
-
|
|
49696
|
-
|
|
49697
|
-
|
|
49698
|
-
|
|
49699
|
-
|
|
49700
|
-
|
|
49701
|
-
|
|
49702
|
-
|
|
49703
|
-
|
|
49704
|
-
|
|
49705
|
-
|
|
49706
|
-
|
|
49707
|
-
|
|
49708
|
-
|
|
49709
|
-
|
|
49710
|
-
|
|
49711
|
-
|
|
49712
|
-
|
|
49713
|
-
|
|
49714
|
-
|
|
49715
|
-
|
|
49716
|
-
|
|
49717
|
-
|
|
49718
|
-
|
|
49719
|
-
|
|
49720
|
-
|
|
49721
|
-
|
|
49722
|
-
|
|
49723
|
-
|
|
49853
|
+
const matchedWeaponType = weaponTypes.find(
|
|
49854
|
+
(v) => normalizeName(v).startsWith(normalizeName(weaponType))
|
|
49855
|
+
);
|
|
49856
|
+
if (!matchedWeaponType) {
|
|
49857
|
+
return "武器类型错误";
|
|
49858
|
+
}
|
|
49859
|
+
const weaponTypeKeys = {
|
|
49860
|
+
步枪: "Rifle",
|
|
49861
|
+
手枪: "Pistol",
|
|
49862
|
+
霰弹枪: "Shotgun",
|
|
49863
|
+
近战: "Melee",
|
|
49864
|
+
Archwing枪械: "Archgun"
|
|
49865
|
+
};
|
|
49866
|
+
const weaponTypeKey = weaponTypeKeys[matchedWeaponType] ?? matchedWeaponType;
|
|
49867
|
+
const statTypes = ["2", "3", "21", "31"];
|
|
49868
|
+
if (!statTypes.includes(statType)) {
|
|
49869
|
+
return "词条类型错误";
|
|
49870
|
+
}
|
|
49871
|
+
const rivenAttrValues = rivenAttrValueDict[weaponTypeKey];
|
|
49872
|
+
const factor = rivenStatFixFactor[statType];
|
|
49873
|
+
const result = {
|
|
49874
|
+
positive: {},
|
|
49875
|
+
negative: factor.curseCount > 0 ? {} : void 0
|
|
49876
|
+
};
|
|
49877
|
+
const { globalRivenAttributeList } = await globalRivenAttribute.get();
|
|
49878
|
+
for (const key in rivenAttrValues) {
|
|
49879
|
+
const data = globalRivenAttributeList.find(
|
|
49880
|
+
(v) => normalizeName(v.i18n["en"].name) == key
|
|
49881
|
+
);
|
|
49882
|
+
const baseValue = rivenAttrValues[key];
|
|
49883
|
+
const buffValue = baseValue * disposition * factor.buffFactor;
|
|
49884
|
+
result.positive[key] = {
|
|
49885
|
+
name: data?.i18n["zh-hans"].name ?? key,
|
|
49886
|
+
max: buffValue * 1.1,
|
|
49887
|
+
min: buffValue * 0.9,
|
|
49888
|
+
unit: data?.unit ?? ""
|
|
49889
|
+
};
|
|
49890
|
+
if (result.negative) {
|
|
49891
|
+
const curseValue = baseValue * disposition * factor.curseFactor;
|
|
49892
|
+
result.negative[key] = {
|
|
49893
|
+
name: data?.i18n["zh-hans"].name ?? key,
|
|
49894
|
+
max: curseValue * 0.9,
|
|
49895
|
+
min: curseValue * 1.1,
|
|
49896
|
+
unit: data?.unit ?? ""
|
|
49897
|
+
};
|
|
49724
49898
|
}
|
|
49725
|
-
|
|
49726
|
-
|
|
49727
|
-
|
|
49728
|
-
|
|
49729
|
-
|
|
49730
|
-
const
|
|
49731
|
-
|
|
49732
|
-
|
|
49733
|
-
|
|
49734
|
-
|
|
49735
|
-
|
|
49736
|
-
|
|
49899
|
+
}
|
|
49900
|
+
return result;
|
|
49901
|
+
}, "getStaticRivenStats");
|
|
49902
|
+
var getWeaponRivenDisposition = /* @__PURE__ */ __name((name2) => {
|
|
49903
|
+
const normalizedName = normalizeName(name2);
|
|
49904
|
+
const normalRes = weaponRivenDispositionDict[normalizedName];
|
|
49905
|
+
if (normalRes) {
|
|
49906
|
+
return normalRes;
|
|
49907
|
+
}
|
|
49908
|
+
const withPrimeSuffix = normalizedName + "prime";
|
|
49909
|
+
const withPrimeRes = weaponRivenDispositionDict[withPrimeSuffix];
|
|
49910
|
+
if (withPrimeRes) {
|
|
49911
|
+
return withPrimeRes;
|
|
49912
|
+
}
|
|
49913
|
+
return void 0;
|
|
49914
|
+
}, "getWeaponRivenDisposition");
|
|
49915
|
+
var parseOCRResult = /* @__PURE__ */ __name(async (ocrResult) => {
|
|
49916
|
+
const { globalRivenAttributeList } = await globalRivenAttribute.get();
|
|
49917
|
+
const list = ocrResult;
|
|
49918
|
+
if (!list.length) {
|
|
49919
|
+
return;
|
|
49920
|
+
}
|
|
49921
|
+
function similarity(standard, input) {
|
|
49922
|
+
if (!standard || !input) {
|
|
49923
|
+
return 0;
|
|
49737
49924
|
}
|
|
49738
|
-
|
|
49739
|
-
|
|
49740
|
-
|
|
49741
|
-
|
|
49742
|
-
|
|
49743
|
-
|
|
49744
|
-
|
|
49745
|
-
|
|
49746
|
-
|
|
49747
|
-
|
|
49748
|
-
}
|
|
49749
|
-
|
|
49750
|
-
|
|
49751
|
-
|
|
49752
|
-
|
|
49753
|
-
|
|
49754
|
-
|
|
49755
|
-
|
|
49756
|
-
|
|
49757
|
-
|
|
49758
|
-
|
|
49759
|
-
const
|
|
49760
|
-
|
|
49761
|
-
|
|
49762
|
-
|
|
49763
|
-
|
|
49764
|
-
|
|
49765
|
-
|
|
49766
|
-
|
|
49767
|
-
|
|
49768
|
-
|
|
49769
|
-
|
|
49770
|
-
|
|
49771
|
-
|
|
49772
|
-
|
|
49773
|
-
|
|
49774
|
-
|
|
49775
|
-
|
|
49776
|
-
|
|
49777
|
-
|
|
49778
|
-
|
|
49779
|
-
|
|
49780
|
-
|
|
49781
|
-
|
|
49782
|
-
|
|
49783
|
-
|
|
49784
|
-
|
|
49785
|
-
|
|
49786
|
-
|
|
49787
|
-
|
|
49788
|
-
|
|
49789
|
-
|
|
49790
|
-
|
|
49791
|
-
|
|
49792
|
-
|
|
49793
|
-
|
|
49794
|
-
|
|
49795
|
-
|
|
49796
|
-
|
|
49797
|
-
|
|
49798
|
-
|
|
49799
|
-
|
|
49800
|
-
|
|
49801
|
-
|
|
49802
|
-
|
|
49803
|
-
|
|
49925
|
+
standard = normalizeName(standard);
|
|
49926
|
+
input = normalizeName(input);
|
|
49927
|
+
if (input === "伤害") {
|
|
49928
|
+
return standard === "基础伤害" ? 1 : 0;
|
|
49929
|
+
}
|
|
49930
|
+
if (standard === "基础伤害" && input.match(/^伤害$|近战伤害/)) {
|
|
49931
|
+
return 1;
|
|
49932
|
+
}
|
|
49933
|
+
if (standard === "暴击率") {
|
|
49934
|
+
standard = "暴击几率";
|
|
49935
|
+
}
|
|
49936
|
+
if (standard.includes(input) || input.includes(standard) || standard.split("/").find((x) => !!x && input.includes(x))) {
|
|
49937
|
+
return 1;
|
|
49938
|
+
}
|
|
49939
|
+
const t = tokenSimilarity(standard, input);
|
|
49940
|
+
const s = normalSimilarity(standard, input);
|
|
49941
|
+
return Math.max(t, s);
|
|
49942
|
+
}
|
|
49943
|
+
__name(similarity, "similarity");
|
|
49944
|
+
const texts = list;
|
|
49945
|
+
const attributes = [];
|
|
49946
|
+
const statLines = [];
|
|
49947
|
+
for (const t of texts) {
|
|
49948
|
+
if (!t || !t.match(/^[x+-]|^[0-9]/)) {
|
|
49949
|
+
continue;
|
|
49950
|
+
}
|
|
49951
|
+
const prefix = t.match(/^[x+-]/) ? t[0] : "";
|
|
49952
|
+
const attrNamePart = removeSpace(t ?? "").replace(/^[^一-龥]+/, "");
|
|
49953
|
+
const attr = globalRivenAttributeList.find((a) => {
|
|
49954
|
+
if (!a) return false;
|
|
49955
|
+
let zhName = a.i18n["zh-hans"]?.name;
|
|
49956
|
+
if (!zhName) return false;
|
|
49957
|
+
const sim = similarity(zhName, attrNamePart);
|
|
49958
|
+
if (sim < 0.8) return false;
|
|
49959
|
+
return true;
|
|
49960
|
+
});
|
|
49961
|
+
if (!attr) {
|
|
49962
|
+
continue;
|
|
49963
|
+
}
|
|
49964
|
+
statLines.push(t);
|
|
49965
|
+
const value = (/* @__PURE__ */ __name((function extractStatValue(text) {
|
|
49966
|
+
const t2 = text.replace(/\s+/g, "");
|
|
49967
|
+
const multMatch = t2.match(/x(\d+(\.\d+)?)/i);
|
|
49968
|
+
if (multMatch) {
|
|
49969
|
+
return {
|
|
49970
|
+
value: parseFloat(multMatch[1]),
|
|
49971
|
+
type: "multiply"
|
|
49972
|
+
};
|
|
49973
|
+
}
|
|
49974
|
+
const percentMatch = t2.match(/([+-]?\d+(\.\d+)?)%/);
|
|
49975
|
+
if (percentMatch) {
|
|
49976
|
+
return {
|
|
49977
|
+
value: parseFloat(percentMatch[1]),
|
|
49978
|
+
type: "percent"
|
|
49979
|
+
};
|
|
49980
|
+
}
|
|
49981
|
+
const numMatch = t2.match(/([+-]?\d+(\.\d+)?)/);
|
|
49982
|
+
if (numMatch) {
|
|
49983
|
+
return {
|
|
49984
|
+
value: parseFloat(numMatch[1]),
|
|
49985
|
+
type: "number"
|
|
49986
|
+
};
|
|
49987
|
+
}
|
|
49988
|
+
return void 0;
|
|
49989
|
+
}), "extractStatValue"))(t);
|
|
49990
|
+
if (!value) {
|
|
49991
|
+
return void 0;
|
|
49992
|
+
}
|
|
49993
|
+
attributes.push({ attr, value: value.value, prefix });
|
|
49994
|
+
}
|
|
49995
|
+
const weaponName = (/* @__PURE__ */ __name((function extractWeaponName(ocrData) {
|
|
49996
|
+
const rejectPatterns = [
|
|
49997
|
+
/%/,
|
|
49998
|
+
/x\d/i,
|
|
49999
|
+
/\d/,
|
|
50000
|
+
// numbers, %, multipliers
|
|
50001
|
+
/伤害/,
|
|
50002
|
+
/暴击/,
|
|
50003
|
+
/射速/,
|
|
50004
|
+
/攻击/,
|
|
50005
|
+
/后坐力/,
|
|
50006
|
+
/段位/,
|
|
50007
|
+
/加倍/,
|
|
50008
|
+
/效/,
|
|
50009
|
+
/武器/,
|
|
50010
|
+
/果/,
|
|
50011
|
+
/\)/,
|
|
50012
|
+
/\(/
|
|
50013
|
+
// junk OCR fragments
|
|
50014
|
+
];
|
|
50015
|
+
const candidates = ocrData.filter((str) => {
|
|
50016
|
+
const s = str.trim();
|
|
50017
|
+
if (/^\d+$/.test(s)) return false;
|
|
50018
|
+
if (/[+%]/.test(s)) return false;
|
|
50019
|
+
if (!/[A-Za-z\u4e00-\u9fa5]/.test(s)) return false;
|
|
50020
|
+
if (rejectPatterns.some((p) => p.test(s))) return false;
|
|
50021
|
+
return true;
|
|
50022
|
+
});
|
|
50023
|
+
const merged = candidates.join("");
|
|
50024
|
+
function removeRivenSuffix(name2) {
|
|
50025
|
+
let s = name2.replace(/\s+/g, "");
|
|
50026
|
+
const rivenPattern = /[A-Za-z]+-?[A-Za-z]+$/;
|
|
50027
|
+
return s.replace(rivenPattern, "");
|
|
50028
|
+
}
|
|
50029
|
+
__name(removeRivenSuffix, "removeRivenSuffix");
|
|
50030
|
+
return merged ? removeRivenSuffix(merged) : null;
|
|
50031
|
+
}), "extractWeaponName"))(texts.filter((t) => !statLines.some((l) => l === t)));
|
|
50032
|
+
if (!weaponName || !attributes.length) {
|
|
50033
|
+
return void 0;
|
|
50034
|
+
}
|
|
50035
|
+
return {
|
|
50036
|
+
name: weaponName,
|
|
50037
|
+
attributes
|
|
50038
|
+
};
|
|
50039
|
+
}, "parseOCRResult");
|
|
50040
|
+
var analyzeRivenStat = /* @__PURE__ */ __name((parseResult) => {
|
|
50041
|
+
const weaponRiven = getWeaponRivenDisposition(parseResult.name);
|
|
50042
|
+
if (!weaponRiven) {
|
|
50043
|
+
return "未找到武器: " + parseResult.name;
|
|
50044
|
+
}
|
|
50045
|
+
const disposition = weaponRiven.calc.disposition;
|
|
50046
|
+
const weaponType = weaponRiven.calc.riventype;
|
|
50047
|
+
const rivenStatCountType = (function() {
|
|
50048
|
+
if (parseResult.attributes.length === 4) {
|
|
50049
|
+
return "31";
|
|
50050
|
+
} else if (parseResult.attributes.length === 2) {
|
|
50051
|
+
return "2";
|
|
50052
|
+
}
|
|
50053
|
+
const firstStat = parseResult.attributes[0];
|
|
50054
|
+
const firstStatBaseValue = rivenAttrValueDict[weaponType][normalizeName(firstStat.attr.i18n["en"].name)];
|
|
50055
|
+
if (firstStat.value >= firstStatBaseValue * 1.2375 * 0.9 * disposition) {
|
|
50056
|
+
return "21";
|
|
50057
|
+
} else {
|
|
50058
|
+
return "3";
|
|
50059
|
+
}
|
|
50060
|
+
})();
|
|
50061
|
+
const { buffFactor, buffCount, curseFactor, curseCount } = rivenStatFixFactor[rivenStatCountType];
|
|
50062
|
+
const buffs = [];
|
|
50063
|
+
for (let i = 0; i < buffCount; i++) {
|
|
50064
|
+
const attr = parseResult.attributes[i];
|
|
50065
|
+
const baseValue = rivenAttrValueDict[weaponType][normalizeName(attr.attr.i18n["en"].name)];
|
|
50066
|
+
const value = attr.attr.unit === "multiply" ? attr.value - 1 : attr.value;
|
|
50067
|
+
const standardValue = baseValue * buffFactor * disposition;
|
|
50068
|
+
const percent = (value - standardValue) / standardValue;
|
|
50069
|
+
buffs.push({
|
|
50070
|
+
name: attr.attr.i18n["zh-hans"].name,
|
|
50071
|
+
unit: attr.attr.unit,
|
|
50072
|
+
value: attr.value,
|
|
50073
|
+
percent,
|
|
50074
|
+
max: standardValue * 1.1,
|
|
50075
|
+
min: standardValue * 0.9
|
|
50076
|
+
});
|
|
50077
|
+
}
|
|
50078
|
+
const curses = [];
|
|
50079
|
+
if (curseCount > 0) {
|
|
50080
|
+
for (let i = buffCount; i < buffCount + curseCount; i++) {
|
|
50081
|
+
const attr = parseResult.attributes[i];
|
|
50082
|
+
const baseValue = rivenAttrValueDict[weaponType][normalizeName(attr.attr.i18n["en"].name)];
|
|
50083
|
+
const value = attr.attr.unit === "multiply" ? attr.value - 1 : attr.value;
|
|
50084
|
+
const standardValue = baseValue * curseFactor * disposition;
|
|
50085
|
+
const percent = (value - standardValue) / standardValue * -1;
|
|
50086
|
+
curses.push({
|
|
50087
|
+
name: attr.attr.i18n["zh-hans"].name,
|
|
50088
|
+
unit: attr.attr.unit,
|
|
50089
|
+
value: attr.value,
|
|
50090
|
+
percent,
|
|
50091
|
+
max: standardValue * 0.9,
|
|
50092
|
+
min: standardValue * 1.1
|
|
50093
|
+
});
|
|
50094
|
+
}
|
|
50095
|
+
}
|
|
50096
|
+
return {
|
|
50097
|
+
name: weaponRiven.name.zh,
|
|
50098
|
+
disposition,
|
|
50099
|
+
buffs,
|
|
50100
|
+
curses
|
|
50101
|
+
};
|
|
50102
|
+
}, "analyzeRivenStat");
|
|
50103
|
+
|
|
50104
|
+
// src/components/wf.tsx
|
|
50105
|
+
var import_jsx_runtime = require("@satorijs/element/jsx-runtime");
|
|
50106
|
+
var ArbitrationComponent = /* @__PURE__ */ __name((arbi) => {
|
|
50107
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50108
|
+
"div",
|
|
50109
|
+
{
|
|
50110
|
+
style: "width:calc(100dvw-40px);display:flex;flex-direction:column;align-items: center;",
|
|
50111
|
+
children: [
|
|
50112
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { children: "高掉落仲裁时间表" }),
|
|
50113
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { style: "width:100%;font-size: 30px;", children: arbi.map((a) => {
|
|
50114
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", { children: [
|
|
50115
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
|
|
50116
|
+
"[",
|
|
50117
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: "color:darkgreen;", children: a.time }),
|
|
50118
|
+
"]"
|
|
50119
|
+
] }),
|
|
50120
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: "margin-left:10px;", children: `${a.name} ${a.system}-${a.type} (${a.faction})`.replace(
|
|
50121
|
+
/\(|\)/g,
|
|
50122
|
+
""
|
|
50123
|
+
) }),
|
|
50124
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { style: "margin-left:10px;", children: [
|
|
50125
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: "color:darkgreen;", children: a.rewards }),
|
|
50126
|
+
"精华/h"
|
|
50127
|
+
] })
|
|
50128
|
+
] });
|
|
50129
|
+
}) }) })
|
|
50130
|
+
]
|
|
50131
|
+
}
|
|
50132
|
+
);
|
|
50133
|
+
}, "ArbitrationComponent");
|
|
50134
|
+
var CircuitComponent = /* @__PURE__ */ __name((incarnons2, warframes2) => {
|
|
50135
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
50136
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("header", { style: "text-align: center;font-size:30px;", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { children: "本周回廊奖励" }) }),
|
|
50137
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50138
|
+
"div",
|
|
50139
|
+
{
|
|
50140
|
+
style: "display:flex;flex-direction:column;align-items:center;margin-top:40px;font-size:40px;",
|
|
50141
|
+
children: [
|
|
50142
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: "display:flex;align-items:center;line-height:1;", children: [
|
|
50143
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "灵化之源:" }),
|
|
50144
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { style: "display:flex;gap:13px;margin-left:15px;", children: incarnons2.map((i) => {
|
|
50145
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: i });
|
|
50146
|
+
}) })
|
|
50147
|
+
] }),
|
|
50148
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50149
|
+
"div",
|
|
50150
|
+
{
|
|
50151
|
+
style: "display:flex;align-items:center;line-height:1;margin-top:40px;",
|
|
50152
|
+
children: [
|
|
50153
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "战甲:" }),
|
|
50154
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { style: "display:flex;gap:13px;margin-left:15px;", children: warframes2.map((i) => {
|
|
50155
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: i });
|
|
50156
|
+
}) })
|
|
50157
|
+
]
|
|
50158
|
+
}
|
|
50159
|
+
)
|
|
50160
|
+
]
|
|
50161
|
+
}
|
|
50162
|
+
)
|
|
50163
|
+
] });
|
|
50164
|
+
}, "CircuitComponent");
|
|
50165
|
+
var FissureComponent = /* @__PURE__ */ __name((fissures, type) => {
|
|
50166
|
+
const titles = {
|
|
50167
|
+
fissure: "虚空裂缝",
|
|
50168
|
+
"sp-fissure": "虚空裂缝 (钢铁之路)",
|
|
50169
|
+
"rj-fissure": "虚空裂缝 (九重天)"
|
|
50170
|
+
};
|
|
50171
|
+
const colors = [
|
|
50172
|
+
"#B87333",
|
|
50173
|
+
"#4A6F43",
|
|
50174
|
+
"#B2B2B2",
|
|
50175
|
+
"#D4AF37",
|
|
50176
|
+
"#8B0000",
|
|
50177
|
+
"#2F9E88"
|
|
50178
|
+
];
|
|
50179
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: "display:flex;flex-direction:column;align-items:center;", children: [
|
|
50180
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { style: "font-size: 50px;", children: titles[type] }),
|
|
50181
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { style: "font-size: 30px;margin-top:30px;", children: fissures.filter((f) => f.expiry - Date.now() > 0).map((f) => {
|
|
50182
|
+
let timeLeft = f.expiry - Date.now();
|
|
50183
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", { style: "margin-top: 10px;", children: [
|
|
50184
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `color:${colors[f.tierNum - 1]};`, children: `${f.tier}(T${f.tierNum})` }),
|
|
50185
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { style: "margin-left: 20px;", children: [
|
|
50186
|
+
f.node.name,
|
|
50187
|
+
" ",
|
|
50188
|
+
f.node.system
|
|
50189
|
+
] }),
|
|
50190
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: "margin-left: 10px;", children: f.node.type }),
|
|
50191
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { style: "margin-left: 10px;color:purple;", children: [
|
|
50192
|
+
f.node.faction,
|
|
50193
|
+
"(",
|
|
50194
|
+
f.node.minLevel + 5 + (f.hard ? 100 : 0),
|
|
50195
|
+
"-",
|
|
50196
|
+
f.node.maxLevel + 5 + (f.hard ? 100 : 0),
|
|
50197
|
+
")"
|
|
50198
|
+
] }),
|
|
50199
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50200
|
+
"span",
|
|
50201
|
+
{
|
|
50202
|
+
style: `margin-left: 10px;color:${timeLeft > 36e5 ? "green" : timeLeft > 6e5 ? "blue" : "red"};`,
|
|
50203
|
+
children: [
|
|
50204
|
+
"剩余",
|
|
50205
|
+
msToHumanReadable(timeLeft)
|
|
50206
|
+
]
|
|
50207
|
+
}
|
|
50208
|
+
)
|
|
50209
|
+
] });
|
|
50210
|
+
}) }),
|
|
50211
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: "margin-top: 30px; font-size: 30px;", children: "注: 该功能的数据有一定延迟" })
|
|
50212
|
+
] });
|
|
50213
|
+
}, "FissureComponent");
|
|
50214
|
+
var WeeklyComponent = /* @__PURE__ */ __name((archon, deepArchimedea, temporalArchimedea) => {
|
|
50215
|
+
const archonHuntSection = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50216
|
+
"section",
|
|
50217
|
+
{
|
|
50218
|
+
style: `
|
|
50219
|
+
border-radius: 8px;
|
|
50220
|
+
border: 1px solid #1f2937;
|
|
50221
|
+
padding: 12px 14px;
|
|
50222
|
+
background-color: #0b0f19;
|
|
50223
|
+
box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.9);
|
|
50224
|
+
color: #e5e7eb;
|
|
50225
|
+
`,
|
|
50226
|
+
children: [
|
|
50227
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50228
|
+
"div",
|
|
50229
|
+
{
|
|
50230
|
+
style: `
|
|
50231
|
+
font-size: 12px;
|
|
50232
|
+
color: #9ca3af;
|
|
50233
|
+
margin-bottom: 6px;
|
|
50234
|
+
`,
|
|
50235
|
+
children: "Archon Hunt"
|
|
50236
|
+
}
|
|
50237
|
+
),
|
|
50238
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50239
|
+
"div",
|
|
50240
|
+
{
|
|
50241
|
+
style: `
|
|
50242
|
+
font-size: 16px;
|
|
50243
|
+
font-weight: 600;
|
|
50244
|
+
`,
|
|
50245
|
+
children: `执行官刺杀: ${archon.name}`
|
|
50246
|
+
}
|
|
50247
|
+
)
|
|
50248
|
+
]
|
|
50249
|
+
}
|
|
50250
|
+
);
|
|
50251
|
+
const deepArchimedeaSection = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50252
|
+
"section",
|
|
50253
|
+
{
|
|
50254
|
+
style: `
|
|
50255
|
+
border-radius: 8px;
|
|
50256
|
+
border: 1px solid #1f2937;
|
|
50257
|
+
padding: 12px 14px;
|
|
50258
|
+
background-color: #0b0f19;
|
|
50259
|
+
box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.9);
|
|
50260
|
+
color: #e5e7eb;
|
|
50261
|
+
`,
|
|
50262
|
+
children: [
|
|
50263
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50264
|
+
"div",
|
|
50265
|
+
{
|
|
50266
|
+
style: `
|
|
50267
|
+
font-size: 12px;
|
|
50268
|
+
color: #6ee7b7;
|
|
50269
|
+
margin-bottom: 6px;
|
|
50270
|
+
`,
|
|
50271
|
+
children: "Deep Archimedea"
|
|
50272
|
+
}
|
|
50273
|
+
),
|
|
50274
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50275
|
+
"div",
|
|
50276
|
+
{
|
|
50277
|
+
style: `
|
|
50278
|
+
font-size: 16px;
|
|
50279
|
+
font-weight: 600;
|
|
50280
|
+
margin-bottom: 8px;
|
|
50281
|
+
`,
|
|
50282
|
+
children: deepArchimedea.name
|
|
50283
|
+
}
|
|
50284
|
+
),
|
|
50285
|
+
deepArchimedea.missions.map((m) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50286
|
+
"div",
|
|
50287
|
+
{
|
|
50288
|
+
style: `
|
|
50289
|
+
border-radius: 6px;
|
|
50290
|
+
border: 1px solid rgba(255,255,255,0.15);
|
|
50291
|
+
padding: 8px 10px;
|
|
50292
|
+
margin-bottom: 8px;
|
|
50293
|
+
background-color: rgba(255,255,255,0.05);
|
|
50294
|
+
`,
|
|
50295
|
+
children: [
|
|
50296
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50297
|
+
"div",
|
|
50298
|
+
{
|
|
50299
|
+
style: `
|
|
50300
|
+
font-size: 13px;
|
|
50301
|
+
font-weight: 600;
|
|
50302
|
+
margin-bottom: 4px;
|
|
50303
|
+
`,
|
|
50304
|
+
children: m.type
|
|
50305
|
+
}
|
|
50306
|
+
),
|
|
50307
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: `font-size: 12px;`, children: [
|
|
50308
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
50309
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `font-weight: 600; margin-right: 4px;`, children: "偏差:" }),
|
|
50310
|
+
`${m.deviation.name}(${m.deviation.desc})`
|
|
50311
|
+
] }),
|
|
50312
|
+
m.risks.map((r) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
50313
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `font-weight: 600; margin-right: 4px;`, children: "风险:" }),
|
|
50314
|
+
`${r.name}(${r.desc})`
|
|
50315
|
+
] }))
|
|
50316
|
+
] })
|
|
50317
|
+
]
|
|
50318
|
+
}
|
|
50319
|
+
)),
|
|
50320
|
+
deepArchimedea.peronal.map((p) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: `font-size: 12px; margin-top: 4px;`, children: [
|
|
50321
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `font-weight: 600; margin-right: 4px;`, children: "个人变量:" }),
|
|
50322
|
+
`${p.name}(${p.desc})`
|
|
50323
|
+
] }))
|
|
50324
|
+
]
|
|
50325
|
+
}
|
|
50326
|
+
);
|
|
50327
|
+
const temporalArchimedeaSection = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50328
|
+
"section",
|
|
50329
|
+
{
|
|
50330
|
+
style: `
|
|
50331
|
+
border-radius: 8px;
|
|
50332
|
+
border: 1px solid #1f2937;
|
|
50333
|
+
padding: 12px 14px;
|
|
50334
|
+
background-color: #0b0f19;
|
|
50335
|
+
box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.9);
|
|
50336
|
+
color: #e5e7eb;
|
|
50337
|
+
`,
|
|
50338
|
+
children: [
|
|
50339
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50340
|
+
"div",
|
|
50341
|
+
{
|
|
50342
|
+
style: `
|
|
50343
|
+
font-size: 12px;
|
|
50344
|
+
color: #a5b4fc;
|
|
50345
|
+
margin-bottom: 6px;
|
|
50346
|
+
`,
|
|
50347
|
+
children: "Temporal Archimedea"
|
|
50348
|
+
}
|
|
50349
|
+
),
|
|
50350
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50351
|
+
"div",
|
|
50352
|
+
{
|
|
50353
|
+
style: `
|
|
50354
|
+
font-size: 16px;
|
|
50355
|
+
font-weight: 600;
|
|
50356
|
+
margin-bottom: 8px;
|
|
50357
|
+
`,
|
|
50358
|
+
children: temporalArchimedea.name
|
|
50359
|
+
}
|
|
50360
|
+
),
|
|
50361
|
+
temporalArchimedea.missions.map((m) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50362
|
+
"div",
|
|
50363
|
+
{
|
|
50364
|
+
style: `
|
|
50365
|
+
border-radius: 6px;
|
|
50366
|
+
border: 1px solid rgba(255,255,255,0.15);
|
|
50367
|
+
padding: 8px 10px;
|
|
50368
|
+
margin-bottom: 8px;
|
|
50369
|
+
background-color: rgba(255,255,255,0.05);
|
|
50370
|
+
`,
|
|
50371
|
+
children: [
|
|
50372
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50373
|
+
"div",
|
|
50374
|
+
{
|
|
50375
|
+
style: `
|
|
50376
|
+
font-size: 13px;
|
|
50377
|
+
font-weight: 600;
|
|
50378
|
+
margin-bottom: 4px;
|
|
50379
|
+
`,
|
|
50380
|
+
children: m.type
|
|
50381
|
+
}
|
|
50382
|
+
),
|
|
50383
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: `font-size: 12px;`, children: [
|
|
50384
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
50385
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `font-weight: 600; margin-right: 4px;`, children: "偏差:" }),
|
|
50386
|
+
`${m.deviation.name}(${m.deviation.desc})`
|
|
50387
|
+
] }),
|
|
50388
|
+
m.risks.map((r) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
50389
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `font-weight: 600; margin-right: 4px;`, children: "风险:" }),
|
|
50390
|
+
`${r.name}(${r.desc})`
|
|
50391
|
+
] }))
|
|
50392
|
+
] })
|
|
50393
|
+
]
|
|
50394
|
+
}
|
|
50395
|
+
)),
|
|
50396
|
+
temporalArchimedea.peronal.map((p) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: `font-size: 12px; margin-top: 4px;`, children: [
|
|
50397
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `font-weight: 600; margin-right: 4px;`, children: "个人变量:" }),
|
|
50398
|
+
`${p.name}(${p.desc})`
|
|
50399
|
+
] }))
|
|
50400
|
+
]
|
|
50401
|
+
}
|
|
50402
|
+
);
|
|
50403
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50404
|
+
"div",
|
|
50405
|
+
{
|
|
50406
|
+
style: `
|
|
50407
|
+
color: #e4e7ec;
|
|
50408
|
+
line-height: 1.5;
|
|
50409
|
+
font-size: 14px;
|
|
50410
|
+
background-color: #05060a;
|
|
50411
|
+
font-family: 'Segoe UI', system-ui, sans-serif;
|
|
50412
|
+
max-width: 1024px;
|
|
50413
|
+
margin: 0 auto;
|
|
50414
|
+
display: grid;
|
|
50415
|
+
grid-template-columns: 1fr 1fr 1fr;
|
|
50416
|
+
gap: 16px;
|
|
50417
|
+
`,
|
|
50418
|
+
children: [
|
|
50419
|
+
archonHuntSection,
|
|
50420
|
+
deepArchimedeaSection,
|
|
50421
|
+
temporalArchimedeaSection
|
|
50422
|
+
]
|
|
50423
|
+
}
|
|
50424
|
+
);
|
|
50425
|
+
}, "WeeklyComponent");
|
|
50426
|
+
var RelicComponent = /* @__PURE__ */ __name((relic) => {
|
|
50427
|
+
const gold = relic.items.filter((i) => i.rarity === "RARE");
|
|
50428
|
+
const silver = relic.items.filter((i) => i.rarity === "UNCOMMON");
|
|
50429
|
+
const bronze = relic.items.filter((i) => i.rarity === "COMMON");
|
|
50430
|
+
const getRateColor = /* @__PURE__ */ __name((rarity) => {
|
|
50431
|
+
if (rarity === "RARE") return "#ffd700";
|
|
50432
|
+
if (rarity === "UNCOMMON") return "#c0c0c0";
|
|
50433
|
+
if (rarity === "COMMON") return "#cd7f32";
|
|
50434
|
+
return "#000000";
|
|
50435
|
+
}, "getRateColor");
|
|
50436
|
+
const relicRewardDropRate = {
|
|
50437
|
+
RARE: "2/4/6/10",
|
|
50438
|
+
UNCOMMON: "11/13/17/20",
|
|
50439
|
+
COMMON: "25/23/20/17"
|
|
50440
|
+
};
|
|
50441
|
+
const renderRewards = /* @__PURE__ */ __name((items) => {
|
|
50442
|
+
if (items.length === 0) return null;
|
|
50443
|
+
return items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50444
|
+
"div",
|
|
50445
|
+
{
|
|
50446
|
+
style: `padding: 8px 12px;
|
|
50447
|
+
margin: 4px 0;
|
|
50448
|
+
border-radius: 4px;
|
|
50449
|
+
background-color: rgba(255, 255, 255, 0.05);
|
|
50450
|
+
border-left: 4px solid ${getRateColor(item.rarity)};
|
|
50451
|
+
display: flex;
|
|
50452
|
+
justify-content: space-between;
|
|
50453
|
+
align-items: center;
|
|
50454
|
+
line-height: 1;`,
|
|
50455
|
+
children: [
|
|
50456
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `color: #000000; font-size: 14px;`, children: item.name }),
|
|
50457
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50458
|
+
"span",
|
|
50459
|
+
{
|
|
50460
|
+
style: `color: #a0a0a0;
|
|
50461
|
+
font-size: 12px;
|
|
50462
|
+
font-family: monospace;
|
|
50463
|
+
display:flex;
|
|
50464
|
+
gap:10px;`,
|
|
50465
|
+
children: [
|
|
50466
|
+
item.platinum ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50467
|
+
"span",
|
|
50468
|
+
{
|
|
50469
|
+
style: "\n color: #0d93b8;\n display:flex;\n line-height:1;",
|
|
50470
|
+
children: [
|
|
50471
|
+
item.platinum,
|
|
50472
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50473
|
+
"svg",
|
|
50474
|
+
{
|
|
50475
|
+
viewBox: "0 0 18 18",
|
|
50476
|
+
style: "\n color: rgb(64 64 64 / 75%);\n height: 1em;\n width: 1em;\n vertical-align: -.125em;\n fill: currentcolor;\n margin-left:2px;",
|
|
50477
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("use", { href: `#icon-platinum` })
|
|
50478
|
+
}
|
|
50479
|
+
)
|
|
50480
|
+
]
|
|
49804
50481
|
}
|
|
49805
50482
|
) : "",
|
|
49806
|
-
item.ducats ? /* @__PURE__ */ (0,
|
|
50483
|
+
item.ducats ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { style: "color: #a0a000;display:flex;line-height:1;", children: [
|
|
49807
50484
|
item.ducats,
|
|
49808
|
-
/* @__PURE__ */ (0,
|
|
50485
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49809
50486
|
"svg",
|
|
49810
50487
|
{
|
|
49811
50488
|
viewBox: "0 0 18 18",
|
|
49812
50489
|
style: "\n color: rgb(64 64 64 / 75%);\n height: 1em;\n width: 1em;\n vertical-align: -.125em;\n fill: currentcolor;",
|
|
49813
|
-
children: /* @__PURE__ */ (0,
|
|
50490
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("use", { href: `#icon-ducats` })
|
|
49814
50491
|
}
|
|
49815
50492
|
)
|
|
49816
50493
|
] }) : "",
|
|
49817
|
-
/* @__PURE__ */ (0,
|
|
50494
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
|
|
49818
50495
|
relicRewardDropRate[item.rarity],
|
|
49819
50496
|
"%"
|
|
49820
50497
|
] })
|
|
@@ -49825,7 +50502,7 @@ var RelicComponent = /* @__PURE__ */ __name((relic) => {
|
|
|
49825
50502
|
}
|
|
49826
50503
|
));
|
|
49827
50504
|
}, "renderRewards");
|
|
49828
|
-
return /* @__PURE__ */ (0,
|
|
50505
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
49829
50506
|
"div",
|
|
49830
50507
|
{
|
|
49831
50508
|
style: `
|
|
@@ -49839,7 +50516,7 @@ var RelicComponent = /* @__PURE__ */ __name((relic) => {
|
|
|
49839
50516
|
max-width: 500px;
|
|
49840
50517
|
min-width: 320px;`,
|
|
49841
50518
|
children: [
|
|
49842
|
-
/* @__PURE__ */ (0,
|
|
50519
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49843
50520
|
"div",
|
|
49844
50521
|
{
|
|
49845
50522
|
style: `display: flex;
|
|
@@ -49848,7 +50525,7 @@ var RelicComponent = /* @__PURE__ */ __name((relic) => {
|
|
|
49848
50525
|
margin-bottom: 16px;
|
|
49849
50526
|
padding-bottom: 12px;
|
|
49850
50527
|
border-bottom: 1px solid rgba(255, 255, 255, 0.1);`,
|
|
49851
|
-
children: /* @__PURE__ */ (0,
|
|
50528
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49852
50529
|
"h1",
|
|
49853
50530
|
{
|
|
49854
50531
|
style: `font-size: 20px;
|
|
@@ -49860,14 +50537,14 @@ var RelicComponent = /* @__PURE__ */ __name((relic) => {
|
|
|
49860
50537
|
)
|
|
49861
50538
|
}
|
|
49862
50539
|
),
|
|
49863
|
-
gold.length > 0 && /* @__PURE__ */ (0,
|
|
49864
|
-
/* @__PURE__ */ (0,
|
|
50540
|
+
gold.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: `margin-bottom: 12px;`, children: [
|
|
50541
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49865
50542
|
"div",
|
|
49866
50543
|
{
|
|
49867
50544
|
style: `display: flex;
|
|
49868
50545
|
align-items: center;
|
|
49869
50546
|
margin-bottom: 8px;`,
|
|
49870
|
-
children: /* @__PURE__ */ (0,
|
|
50547
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49871
50548
|
"h3",
|
|
49872
50549
|
{
|
|
49873
50550
|
style: `font-size: 14px;
|
|
@@ -49882,14 +50559,14 @@ var RelicComponent = /* @__PURE__ */ __name((relic) => {
|
|
|
49882
50559
|
),
|
|
49883
50560
|
renderRewards(gold)
|
|
49884
50561
|
] }),
|
|
49885
|
-
silver.length > 0 && /* @__PURE__ */ (0,
|
|
49886
|
-
/* @__PURE__ */ (0,
|
|
50562
|
+
silver.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: `margin-bottom: 12px;`, children: [
|
|
50563
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49887
50564
|
"div",
|
|
49888
50565
|
{
|
|
49889
50566
|
style: `display: flex;
|
|
49890
50567
|
align-items: center;
|
|
49891
50568
|
margin-bottom: 8px;`,
|
|
49892
|
-
children: /* @__PURE__ */ (0,
|
|
50569
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49893
50570
|
"h3",
|
|
49894
50571
|
{
|
|
49895
50572
|
style: `font-size: 14px;
|
|
@@ -49904,14 +50581,14 @@ var RelicComponent = /* @__PURE__ */ __name((relic) => {
|
|
|
49904
50581
|
),
|
|
49905
50582
|
renderRewards(silver)
|
|
49906
50583
|
] }),
|
|
49907
|
-
bronze.length > 0 && /* @__PURE__ */ (0,
|
|
49908
|
-
/* @__PURE__ */ (0,
|
|
50584
|
+
bronze.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: `margin-bottom: 12px;`, children: [
|
|
50585
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49909
50586
|
"div",
|
|
49910
50587
|
{
|
|
49911
50588
|
style: `display: flex;
|
|
49912
50589
|
align-items: center;
|
|
49913
50590
|
margin-bottom: 8px;`,
|
|
49914
|
-
children: /* @__PURE__ */ (0,
|
|
50591
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49915
50592
|
"h3",
|
|
49916
50593
|
{
|
|
49917
50594
|
style: `font-size: 14px;
|
|
@@ -49926,7 +50603,7 @@ var RelicComponent = /* @__PURE__ */ __name((relic) => {
|
|
|
49926
50603
|
),
|
|
49927
50604
|
renderRewards(bronze)
|
|
49928
50605
|
] }),
|
|
49929
|
-
/* @__PURE__ */ (0,
|
|
50606
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49930
50607
|
"div",
|
|
49931
50608
|
{
|
|
49932
50609
|
style: `margin-top: 16px;
|
|
@@ -50020,18 +50697,18 @@ var RivenComponent = /* @__PURE__ */ __name((data) => {
|
|
|
50020
50697
|
const normalized = (percent + 1) / 2 * 100;
|
|
50021
50698
|
return `${Math.max(0, Math.min(100, normalized))}%`;
|
|
50022
50699
|
}, "getProgressWidth");
|
|
50023
|
-
return /* @__PURE__ */ (0,
|
|
50700
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: `display: flex; gap: 20px; width: 600px;`, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50024
50701
|
"div",
|
|
50025
50702
|
{
|
|
50026
50703
|
style: `width: 100%; border-radius: 8px; padding: 20px; box-shadow: 0 4px 6px rgba(0,0,0,0.3); border: 1px solid #444;`,
|
|
50027
50704
|
children: [
|
|
50028
|
-
/* @__PURE__ */ (0,
|
|
50705
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50029
50706
|
"div",
|
|
50030
50707
|
{
|
|
50031
50708
|
style: `display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; padding-bottom: 10px; border-bottom: 2px solid #444;`,
|
|
50032
50709
|
children: [
|
|
50033
|
-
/* @__PURE__ */ (0,
|
|
50034
|
-
/* @__PURE__ */ (0,
|
|
50710
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { style: `margin: 0; font-size: 20px;`, children: data.name }),
|
|
50711
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50035
50712
|
"div",
|
|
50036
50713
|
{
|
|
50037
50714
|
style: `background-color: #f0f0f0; padding: 4px 12px; border-radius: 12px; font-size: 14px; line-height: 1;`,
|
|
@@ -50043,8 +50720,8 @@ var RivenComponent = /* @__PURE__ */ __name((data) => {
|
|
|
50043
50720
|
]
|
|
50044
50721
|
}
|
|
50045
50722
|
),
|
|
50046
|
-
/* @__PURE__ */ (0,
|
|
50047
|
-
/* @__PURE__ */ (0,
|
|
50723
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: `margin-bottom: 25px;`, children: [
|
|
50724
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50048
50725
|
"h3",
|
|
50049
50726
|
{
|
|
50050
50727
|
style: `color: #4caf50; margin: 0 0 15px 0; font-size: 16px; display: flex; align-items: center;`,
|
|
@@ -50055,10 +50732,10 @@ var RivenComponent = /* @__PURE__ */ __name((data) => {
|
|
|
50055
50732
|
]
|
|
50056
50733
|
}
|
|
50057
50734
|
),
|
|
50058
|
-
/* @__PURE__ */ (0,
|
|
50735
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { children: data.buffs.map((buff) => {
|
|
50059
50736
|
const inRange = isInRange(buff.percent);
|
|
50060
50737
|
const percentColor = getPercentColor(buff.percent);
|
|
50061
|
-
return /* @__PURE__ */ (0,
|
|
50738
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50062
50739
|
"li",
|
|
50063
50740
|
{
|
|
50064
50741
|
style: `
|
|
@@ -50069,25 +50746,25 @@ var RivenComponent = /* @__PURE__ */ __name((data) => {
|
|
|
50069
50746
|
border-left: 4px solid ${percentColor};
|
|
50070
50747
|
position: relative;`,
|
|
50071
50748
|
children: [
|
|
50072
|
-
/* @__PURE__ */ (0,
|
|
50749
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50073
50750
|
"div",
|
|
50074
50751
|
{
|
|
50075
50752
|
style: `display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px;`,
|
|
50076
50753
|
children: [
|
|
50077
|
-
/* @__PURE__ */ (0,
|
|
50078
|
-
/* @__PURE__ */ (0,
|
|
50754
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `font-weight: bold;`, children: buff.name }),
|
|
50755
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `font-size: 18px; font-weight: bold;`, children: formatValue(buff.value, buff.unit) })
|
|
50079
50756
|
]
|
|
50080
50757
|
}
|
|
50081
50758
|
),
|
|
50082
|
-
/* @__PURE__ */ (0,
|
|
50759
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50083
50760
|
"div",
|
|
50084
50761
|
{
|
|
50085
50762
|
style: `height: 10px; background-color: #444; border-radius: 3px; margin-bottom: 8px;`,
|
|
50086
|
-
children: /* @__PURE__ */ (0,
|
|
50763
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50087
50764
|
"div",
|
|
50088
50765
|
{
|
|
50089
50766
|
style: `height: 10px; position: relative; overflow: hidden;`,
|
|
50090
|
-
children: /* @__PURE__ */ (0,
|
|
50767
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50091
50768
|
"p",
|
|
50092
50769
|
{
|
|
50093
50770
|
style: `position: absolute; left: 0; top: 0; height: 100%; width: ${getProgressWidth(
|
|
@@ -50099,864 +50776,494 @@ var RivenComponent = /* @__PURE__ */ __name((data) => {
|
|
|
50099
50776
|
)
|
|
50100
50777
|
}
|
|
50101
50778
|
),
|
|
50102
|
-
/* @__PURE__ */ (0,
|
|
50779
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50103
50780
|
"div",
|
|
50104
50781
|
{
|
|
50105
50782
|
style: `display: flex; justify-content: space-between; font-size: 12px; color: #aaa;`,
|
|
50106
50783
|
children: [
|
|
50107
|
-
/* @__PURE__ */ (0,
|
|
50784
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
|
|
50108
50785
|
"范围: ",
|
|
50109
50786
|
formatRange(buff.min, buff.max, buff.unit)
|
|
50110
50787
|
] }),
|
|
50111
|
-
/* @__PURE__ */ (0,
|
|
50788
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { style: `color: ${percentColor};`, children: [
|
|
50112
50789
|
buff.percent > 0 ? "+" : "",
|
|
50113
50790
|
(buff.percent * 100).toFixed(2) + "%"
|
|
50114
50791
|
] })
|
|
50115
50792
|
]
|
|
50116
50793
|
}
|
|
50117
50794
|
),
|
|
50118
|
-
!inRange ? /* @__PURE__ */ (0,
|
|
50795
|
+
!inRange ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50119
50796
|
"div",
|
|
50120
50797
|
{
|
|
50121
50798
|
style: `margin-top: 8px; padding: 6px; background-color: rgba(244, 67, 54, 0.2); border-radius: 4px; font-size: 12px; color: #f44336; display: flex; align-items: center;`,
|
|
50122
50799
|
children: [
|
|
50123
|
-
/* @__PURE__ */ (0,
|
|
50124
|
-
"数值不在正常范围内(可能未满级或倾向未更新)"
|
|
50125
|
-
]
|
|
50126
|
-
}
|
|
50127
|
-
) : ""
|
|
50128
|
-
]
|
|
50129
|
-
}
|
|
50130
|
-
);
|
|
50131
|
-
}) })
|
|
50132
|
-
] }),
|
|
50133
|
-
data.curses.length > 0 ? /* @__PURE__ */ (0,
|
|
50134
|
-
/* @__PURE__ */ (0,
|
|
50135
|
-
"h3",
|
|
50136
|
-
{
|
|
50137
|
-
style: `color: #f44336; margin: 0 0 15px 0; font-size: 16px; display: flex; align-items: center;`,
|
|
50138
|
-
children: [
|
|
50139
|
-
"负面词条 (",
|
|
50140
|
-
data.curses.length,
|
|
50141
|
-
")"
|
|
50142
|
-
]
|
|
50143
|
-
}
|
|
50144
|
-
),
|
|
50145
|
-
/* @__PURE__ */ (0,
|
|
50146
|
-
const inRange = isInRange(curse.percent);
|
|
50147
|
-
const percentColor = getPercentColor(curse.percent);
|
|
50148
|
-
return /* @__PURE__ */ (0,
|
|
50149
|
-
"li",
|
|
50150
|
-
{
|
|
50151
|
-
style: `background-color: #eeeeee; border-radius: 6px; padding: 12px; margin-bottom: 10px; border-left: 4px solid ${percentColor};`,
|
|
50152
|
-
children: [
|
|
50153
|
-
/* @__PURE__ */ (0,
|
|
50154
|
-
"div",
|
|
50155
|
-
{
|
|
50156
|
-
style: `display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px;`,
|
|
50157
|
-
children: [
|
|
50158
|
-
/* @__PURE__ */ (0,
|
|
50159
|
-
/* @__PURE__ */ (0,
|
|
50160
|
-
]
|
|
50161
|
-
}
|
|
50162
|
-
),
|
|
50163
|
-
/* @__PURE__ */ (0,
|
|
50164
|
-
"div",
|
|
50165
|
-
{
|
|
50166
|
-
style: `height: 10px; background-color: #444; border-radius: 3px; margin-bottom: 8px;`,
|
|
50167
|
-
children: /* @__PURE__ */ (0,
|
|
50168
|
-
"div",
|
|
50169
|
-
{
|
|
50170
|
-
style: `height: 10px; position: relative; overflow: hidden;`,
|
|
50171
|
-
children: /* @__PURE__ */ (0,
|
|
50172
|
-
"p",
|
|
50173
|
-
{
|
|
50174
|
-
style: `position: absolute; left: 0; top: 0; height: 100%; width: ${getProgressWidth(
|
|
50175
|
-
curse.percent * 10
|
|
50176
|
-
)}; background-color: ${percentColor}; border-radius: 3px;`
|
|
50177
|
-
}
|
|
50178
|
-
)
|
|
50179
|
-
}
|
|
50180
|
-
)
|
|
50181
|
-
}
|
|
50182
|
-
),
|
|
50183
|
-
/* @__PURE__ */ (0,
|
|
50184
|
-
"div",
|
|
50185
|
-
{
|
|
50186
|
-
style: `display: flex; justify-content: space-between; font-size: 12px; color: #aaa;`,
|
|
50187
|
-
children: [
|
|
50188
|
-
/* @__PURE__ */ (0,
|
|
50189
|
-
"范围: ",
|
|
50190
|
-
formatRange(curse.min, curse.max, curse.unit)
|
|
50191
|
-
] }),
|
|
50192
|
-
/* @__PURE__ */ (0,
|
|
50193
|
-
curse.percent > 0 ? "+" : "",
|
|
50194
|
-
(curse.percent * 100).toFixed(2) + "%"
|
|
50195
|
-
] })
|
|
50196
|
-
]
|
|
50197
|
-
}
|
|
50198
|
-
),
|
|
50199
|
-
!inRange ? /* @__PURE__ */ (0,
|
|
50200
|
-
"div",
|
|
50201
|
-
{
|
|
50202
|
-
style: `margin-top: 8px; padding: 6px; background-color: rgba(244, 67, 54, 0.2); border-radius: 4px; font-size: 12px; color: #f44336; display: flex; align-items: center;`,
|
|
50203
|
-
children: [
|
|
50204
|
-
/* @__PURE__ */ (0,
|
|
50205
|
-
"数值不在正常范围内(可能未满级或倾向未更新)"
|
|
50206
|
-
]
|
|
50207
|
-
}
|
|
50208
|
-
) : ""
|
|
50209
|
-
]
|
|
50210
|
-
}
|
|
50211
|
-
);
|
|
50212
|
-
}) })
|
|
50213
|
-
] }) : ""
|
|
50214
|
-
]
|
|
50215
|
-
}
|
|
50216
|
-
) });
|
|
50217
|
-
}, "RivenComponent");
|
|
50218
|
-
var VoidTraderComponent = /* @__PURE__ */ __name((data) => {
|
|
50219
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
50220
|
-
"div",
|
|
50221
|
-
{
|
|
50222
|
-
style: `width: 400px; padding: 10px; font-family: sans-serif; font-size: 14px;`,
|
|
50223
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("table", { style: `width: 100%; border-collapse: collapse;`, children: [
|
|
50224
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("tr", { children: [
|
|
50225
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
50226
|
-
"th",
|
|
50227
|
-
{
|
|
50228
|
-
style: `border-bottom: 1px solid #ccc; text-align: left; padding: 6px;`,
|
|
50229
|
-
children: "名称"
|
|
50230
|
-
}
|
|
50231
|
-
),
|
|
50232
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
50233
|
-
"th",
|
|
50234
|
-
{
|
|
50235
|
-
style: `border-bottom: 1px solid #ccc; text-align: left; padding: 6px;`,
|
|
50236
|
-
children: "价格"
|
|
50237
|
-
}
|
|
50238
|
-
)
|
|
50239
|
-
] }) }),
|
|
50240
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("tbody", { children: data.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("tr", { children: [
|
|
50241
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("td", { style: `padding: 6px; border-bottom: 1px solid #eee;`, children: item.name }),
|
|
50242
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
50243
|
-
"td",
|
|
50244
|
-
{
|
|
50245
|
-
style: `padding: 6px; border-bottom: 1px solid #eee; text-align: center;line-height: 1;`,
|
|
50246
|
-
children: [
|
|
50247
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: item.ducats }),
|
|
50248
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
50249
|
-
"svg",
|
|
50250
|
-
{
|
|
50251
|
-
viewBox: "0 0 18 18",
|
|
50252
|
-
style: "\n color: rgb(64 64 64 / 75%);\n height: 1em;\n width: 1em;\n vertical-align: -.125em;\n fill: currentcolor;",
|
|
50253
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("use", { href: `#icon-ducats` })
|
|
50254
|
-
}
|
|
50255
|
-
),
|
|
50256
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: "+" }),
|
|
50257
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: item.credits }),
|
|
50258
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: "现金" })
|
|
50259
|
-
]
|
|
50260
|
-
}
|
|
50261
|
-
)
|
|
50262
|
-
] })) })
|
|
50263
|
-
] })
|
|
50264
|
-
}
|
|
50265
|
-
);
|
|
50266
|
-
}, "VoidTraderComponent");
|
|
50267
|
-
|
|
50268
|
-
// src/api/wf-api.ts
|
|
50269
|
-
var apiBase = "https://api.warframe.com/cdn/";
|
|
50270
|
-
var getWorldState = /* @__PURE__ */ __name(async (json = "") => {
|
|
50271
|
-
if (!json) {
|
|
50272
|
-
json = await fetchAsyncText(apiBase + "worldState.php");
|
|
50273
|
-
}
|
|
50274
|
-
const WorldStateParser = await import("warframe-worldstate-parser");
|
|
50275
|
-
const ws = await WorldStateParser.WorldState.build(json);
|
|
50276
|
-
return ws;
|
|
50277
|
-
}, "getWorldState");
|
|
50278
|
-
|
|
50279
|
-
// src/services/ocr-service.ts
|
|
50280
|
-
var extractTextFromImage = /* @__PURE__ */ __name(async (image, secret) => {
|
|
50281
|
-
if (image instanceof Blob) {
|
|
50282
|
-
const buffer = await image.arrayBuffer();
|
|
50283
|
-
image = Buffer.from(buffer).toString("base64");
|
|
50284
|
-
}
|
|
50285
|
-
const tencentcloud = require("tencentcloud-sdk-nodejs-ocr");
|
|
50286
|
-
const ocrClient = tencentcloud.ocr.v20181119.Client;
|
|
50287
|
-
const clientConfig = {
|
|
50288
|
-
credential: {
|
|
50289
|
-
secretId: secret.id,
|
|
50290
|
-
secretKey: secret.key
|
|
50291
|
-
},
|
|
50292
|
-
region: "",
|
|
50293
|
-
profile: {
|
|
50294
|
-
httpProfile: {
|
|
50295
|
-
endpoint: "ocr.tencentcloudapi.com"
|
|
50296
|
-
}
|
|
50297
|
-
}
|
|
50298
|
-
};
|
|
50299
|
-
const client = new ocrClient(clientConfig);
|
|
50300
|
-
try {
|
|
50301
|
-
return await client.GeneralAccurateOCR({
|
|
50302
|
-
ImageBase64: image
|
|
50303
|
-
});
|
|
50304
|
-
} catch (err) {
|
|
50305
|
-
console.error("error", err);
|
|
50306
|
-
return void 0;
|
|
50307
|
-
}
|
|
50308
|
-
}, "extractTextFromImage");
|
|
50309
|
-
|
|
50310
|
-
// src/services/wf-service.ts
|
|
50311
|
-
var arbitrationSchedule = arbys_default.split("\n").map((line) => line.split(",")).filter((arr) => arr.length == 2).map((arr) => {
|
|
50312
|
-
return {
|
|
50313
|
-
time: parseInt(arr[0]),
|
|
50314
|
-
node: arr[1]
|
|
50315
|
-
};
|
|
50316
|
-
});
|
|
50317
|
-
var globalWorldState = createAsyncCache(async () => {
|
|
50318
|
-
const worldState = await getWorldState();
|
|
50319
|
-
const fissures = [];
|
|
50320
|
-
const rjFissures = [];
|
|
50321
|
-
const spFissures = [];
|
|
50322
|
-
for (const fissure of worldState.fissures) {
|
|
50323
|
-
const nodeKey = await getSolNodeKey(fissure.nodeKey);
|
|
50324
|
-
const obj = {
|
|
50325
|
-
category: fissure.isStorm ? "rj-fissures" : fissure.isHard ? "sp-fissures" : "fissures",
|
|
50326
|
-
hard: fissure.isHard,
|
|
50327
|
-
activation: fissure.activation.getTime(),
|
|
50328
|
-
expiry: fissure.expiry.getTime(),
|
|
50329
|
-
node: regionToShort(import_warframe_public_export_plus5.ExportRegions[nodeKey], import_warframe_public_export_plus5.dict_zh),
|
|
50330
|
-
tier: import_warframe_public_export_plus5.dict_zh[fissureTierName[fissure.tierNum]],
|
|
50331
|
-
tierNum: fissureTierNumToNumber(fissure.tierNum)
|
|
50332
|
-
};
|
|
50333
|
-
if (fissure.isStorm) {
|
|
50334
|
-
rjFissures.push(obj);
|
|
50335
|
-
} else if (fissure.isHard) {
|
|
50336
|
-
spFissures.push(obj);
|
|
50337
|
-
} else {
|
|
50338
|
-
fissures.push(obj);
|
|
50339
|
-
}
|
|
50340
|
-
}
|
|
50341
|
-
fissures.sort((a, b) => a.tierNum - b.tierNum);
|
|
50342
|
-
spFissures.sort((a, b) => a.tierNum - b.tierNum);
|
|
50343
|
-
rjFissures.sort((a, b) => a.tierNum - b.tierNum);
|
|
50344
|
-
return { raw: worldState, fissures, spFissures, rjFissures };
|
|
50345
|
-
}, 12e4);
|
|
50346
|
-
var loadRelics = /* @__PURE__ */ __name(() => {
|
|
50347
|
-
const result = {};
|
|
50348
|
-
for (const key in import_warframe_public_export_plus5.ExportRelics) {
|
|
50349
|
-
const exportRelic = import_warframe_public_export_plus5.ExportRelics[key];
|
|
50350
|
-
const exportRewards = import_warframe_public_export_plus5.ExportRewards[exportRelic.rewardManifest];
|
|
50351
|
-
const era = "/Lotus/Language/Relics/Era_" + exportRelic.era.toUpperCase();
|
|
50352
|
-
const relicKey = normalizeName(exportRelic.era + exportRelic.category);
|
|
50353
|
-
const rewards = (exportRewards[0] ?? []).map((r) => {
|
|
50354
|
-
const item = fixRelicRewardKey(r.type);
|
|
50355
|
-
return {
|
|
50356
|
-
name: item,
|
|
50357
|
-
rarity: r.rarity,
|
|
50358
|
-
quantity: r.itemCount
|
|
50359
|
-
};
|
|
50360
|
-
});
|
|
50361
|
-
const relic = {
|
|
50362
|
-
tier: exportRelic.era,
|
|
50363
|
-
tierKey: era,
|
|
50364
|
-
num: exportRelic.category,
|
|
50365
|
-
items: rewards
|
|
50366
|
-
};
|
|
50367
|
-
result[relicKey] = relic;
|
|
50368
|
-
}
|
|
50369
|
-
relics = result;
|
|
50370
|
-
}, "loadRelics");
|
|
50371
|
-
var relics = null;
|
|
50372
|
-
var tierListForMatch = [
|
|
50373
|
-
"古纪",
|
|
50374
|
-
"前纪",
|
|
50375
|
-
"中纪",
|
|
50376
|
-
"后纪",
|
|
50377
|
-
"安魂",
|
|
50378
|
-
"先锋",
|
|
50379
|
-
"Lith",
|
|
50380
|
-
"Meso",
|
|
50381
|
-
"Neo",
|
|
50382
|
-
"Axi",
|
|
50383
|
-
"Requiem",
|
|
50384
|
-
"Vanguard"
|
|
50385
|
-
].map((t) => normalizeName(t));
|
|
50386
|
-
var rivenAttrValueDict = (function() {
|
|
50387
|
-
const dict = {};
|
|
50388
|
-
for (const key in rivenAttrValues_default) {
|
|
50389
|
-
const attrs = rivenAttrValues_default[key];
|
|
50390
|
-
dict[key] = {};
|
|
50391
|
-
for (const attrKey in attrs) {
|
|
50392
|
-
const removeDamageSuffix = attrKey.endsWith("Damage") && attrKey !== "Damage" && attrKey !== "Finisher Damage" && !attrKey.startsWith("Critical");
|
|
50393
|
-
const wfmKey = removeDamageSuffix ? normalizeName(attrKey.replace("Damage", "")) : normalizeName(attrKey);
|
|
50394
|
-
dict[key][wfmKey] = attrs[attrKey];
|
|
50395
|
-
}
|
|
50396
|
-
}
|
|
50397
|
-
return dict;
|
|
50398
|
-
})();
|
|
50399
|
-
var weaponRivenDispositionDict = (function() {
|
|
50400
|
-
const mapped = rivencalc_default.weapons.reduce((prev, element) => {
|
|
50401
|
-
let mapped2 = void 0;
|
|
50402
|
-
for (const weaponKey in import_warframe_public_export_plus5.ExportWeapons) {
|
|
50403
|
-
const weapon = import_warframe_public_export_plus5.ExportWeapons[weaponKey];
|
|
50404
|
-
const splited = weapon.name.split("/");
|
|
50405
|
-
if (splited.length <= 0) {
|
|
50406
|
-
continue;
|
|
50407
|
-
}
|
|
50408
|
-
const keyName = splited[splited.length - 1];
|
|
50409
|
-
const normalizedCalcName = normalizeName(element.name);
|
|
50410
|
-
if (normalizeName(keyName) === normalizedCalcName) {
|
|
50411
|
-
mapped2 = weapon;
|
|
50412
|
-
break;
|
|
50413
|
-
}
|
|
50414
|
-
const weaponEN2 = import_warframe_public_export_plus5.dict_en[weapon.name];
|
|
50415
|
-
if (weaponEN2 && normalizeName(weaponEN2) === normalizedCalcName) {
|
|
50416
|
-
mapped2 = weapon;
|
|
50417
|
-
break;
|
|
50418
|
-
}
|
|
50419
|
-
}
|
|
50420
|
-
if (!mapped2) {
|
|
50421
|
-
return prev;
|
|
50422
|
-
}
|
|
50423
|
-
const weaponEN = import_warframe_public_export_plus5.dict_en[mapped2.name];
|
|
50424
|
-
const weaponZH = import_warframe_public_export_plus5.dict_zh[mapped2.name];
|
|
50425
|
-
const result = {
|
|
50426
|
-
name: {
|
|
50427
|
-
en: weaponEN,
|
|
50428
|
-
zh: weaponZH
|
|
50429
|
-
},
|
|
50430
|
-
calc: element,
|
|
50431
|
-
weapon: mapped2
|
|
50432
|
-
};
|
|
50433
|
-
prev.push(result);
|
|
50434
|
-
return prev;
|
|
50435
|
-
}, []);
|
|
50436
|
-
return listToDict(mapped, (e) => [
|
|
50437
|
-
normalizeName(e.name.zh),
|
|
50438
|
-
normalizeName(e.name.en)
|
|
50439
|
-
]);
|
|
50440
|
-
})();
|
|
50441
|
-
var rivenStatFixFactor = {
|
|
50442
|
-
"2_0": { buffFactor: 0.99, buffCount: 2, curseFactor: 0, curseCount: 0 },
|
|
50443
|
-
"2_1": {
|
|
50444
|
-
buffFactor: 1.2375,
|
|
50445
|
-
buffCount: 2,
|
|
50446
|
-
curseFactor: -0.495,
|
|
50447
|
-
curseCount: 1
|
|
50448
|
-
},
|
|
50449
|
-
"3_0": {
|
|
50450
|
-
buffFactor: 0.75,
|
|
50451
|
-
buffCount: 3,
|
|
50452
|
-
curseFactor: 0,
|
|
50453
|
-
curseCount: 0
|
|
50454
|
-
},
|
|
50455
|
-
"3_1": {
|
|
50456
|
-
buffFactor: 0.9375,
|
|
50457
|
-
buffCount: 3,
|
|
50458
|
-
curseFactor: -0.75,
|
|
50459
|
-
curseCount: 1
|
|
50460
|
-
}
|
|
50461
|
-
};
|
|
50462
|
-
var wfOnReady = /* @__PURE__ */ __name(async () => {
|
|
50463
|
-
loadRelics();
|
|
50464
|
-
}, "wfOnReady");
|
|
50465
|
-
var getRelic = /* @__PURE__ */ __name(async (input) => {
|
|
50466
|
-
if (!input) {
|
|
50467
|
-
return "请提供正确的遗物名称";
|
|
50468
|
-
}
|
|
50469
|
-
input = normalizeName(input);
|
|
50470
|
-
if (!input) {
|
|
50471
|
-
return "请提供正确的遗物名称";
|
|
50472
|
-
}
|
|
50473
|
-
if (!relics) {
|
|
50474
|
-
return "遗物数据未加载完成,请稍后再试";
|
|
50475
|
-
}
|
|
50476
|
-
const tier = tierListForMatch.find((t) => input.startsWith(t));
|
|
50477
|
-
if (!tier) {
|
|
50478
|
-
return "请提供正确的遗物名称";
|
|
50479
|
-
}
|
|
50480
|
-
let category = input.replace(new RegExp(`^${tier}`), "").replace(/遗物$|relic$/, "");
|
|
50481
|
-
const zhTierMap = {
|
|
50482
|
-
古纪: "Lith",
|
|
50483
|
-
前纪: "Meso",
|
|
50484
|
-
中纪: "Neo",
|
|
50485
|
-
后纪: "Axi",
|
|
50486
|
-
安魂: "Requiem",
|
|
50487
|
-
先锋: "Vanguard"
|
|
50488
|
-
};
|
|
50489
|
-
const enTier = zhTierMap[tier] ?? tier;
|
|
50490
|
-
const key = normalizeName(enTier + category);
|
|
50491
|
-
return relics[key] ?? "未找到对应遗物信息";
|
|
50492
|
-
}, "getRelic");
|
|
50493
|
-
var generateRelicOutput = /* @__PURE__ */ __name(async (puppe, relic) => {
|
|
50494
|
-
const element = RelicComponent(relic);
|
|
50495
|
-
const imgBase64 = await getHtmlImageBase64(puppe, element.toString());
|
|
50496
|
-
return OutputImage(imgBase64);
|
|
50497
|
-
}, "generateRelicOutput");
|
|
50498
|
-
var getArbitrations = /* @__PURE__ */ __name((day = 3) => {
|
|
50499
|
-
if (day > 14 || day <= 0) {
|
|
50500
|
-
return "天数需小于等于14且大于0";
|
|
50501
|
-
}
|
|
50502
|
-
const currentHourTimeStamp = Math.floor(
|
|
50503
|
-
(/* @__PURE__ */ new Date()).setMinutes(0, 0, 0) / 1e3
|
|
50504
|
-
);
|
|
50505
|
-
const currentHourIndex = arbitrationSchedule.findIndex(
|
|
50506
|
-
(a) => a.time === currentHourTimeStamp
|
|
50507
|
-
);
|
|
50508
|
-
const weekArbys = arbitrationSchedule.slice(
|
|
50509
|
-
currentHourIndex,
|
|
50510
|
-
currentHourIndex + 24 * day
|
|
50511
|
-
);
|
|
50512
|
-
return weekArbys.filter((a) => arbyRewards_default[a.node]).map((a) => {
|
|
50513
|
-
const obj = regionToShort(import_warframe_public_export_plus5.ExportRegions[a.node], import_warframe_public_export_plus5.dict_zh);
|
|
50514
|
-
return {
|
|
50515
|
-
...obj,
|
|
50516
|
-
time: new Date(a.time * 1e3).toLocaleString("zh-cn", {
|
|
50517
|
-
year: "numeric",
|
|
50518
|
-
month: "numeric",
|
|
50519
|
-
day: "numeric",
|
|
50520
|
-
hour: "numeric",
|
|
50521
|
-
// minute: 'numeric', // 保持注释或删除,以去除分钟
|
|
50522
|
-
// second: 'numeric', // 保持注释或删除,以去除秒
|
|
50523
|
-
hour12: false,
|
|
50524
|
-
// 统一使用 24 小时制
|
|
50525
|
-
// hourCycle: 'h23' // 另一种设置 24 小时制的方法
|
|
50526
|
-
timeZone: "Asia/Shanghai"
|
|
50527
|
-
}),
|
|
50528
|
-
rewards: arbyRewards_default[a.node]
|
|
50529
|
-
};
|
|
50530
|
-
});
|
|
50531
|
-
}, "getArbitrations");
|
|
50532
|
-
var generateArbitrationsOutput = /* @__PURE__ */ __name(async (puppe, arby) => {
|
|
50533
|
-
const element = ArbitrationTable(arby);
|
|
50534
|
-
const imgBase64 = await getHtmlImageBase64(puppe, element.toString());
|
|
50535
|
-
return OutputImage(imgBase64);
|
|
50536
|
-
}, "generateArbitrationsOutput");
|
|
50537
|
-
var getWeekly = /* @__PURE__ */ __name(async () => {
|
|
50538
|
-
const { raw: worldState } = await globalWorldState.get();
|
|
50539
|
-
if (!worldState) {
|
|
50540
|
-
return "内部错误,获取最新信息失败";
|
|
50541
|
-
}
|
|
50542
|
-
const archon = import_warframe_public_export_plus5.dict_zh["/Lotus/Language/Narmer/" + removeSpace(worldState.archonHunt.boss)];
|
|
50543
|
-
const stringToDebuff = /* @__PURE__ */ __name((key, name2, prefix) => {
|
|
50544
|
-
const keyToName = zh_default[`${prefix}${key}`];
|
|
50545
|
-
if (!keyToName) {
|
|
50546
|
-
for (const transKey in en_default) {
|
|
50547
|
-
if (en_default[transKey] === name2) {
|
|
50548
|
-
return {
|
|
50549
|
-
name: zh_default[transKey],
|
|
50550
|
-
desc: zh_default[transKey + "_Desc"]
|
|
50551
|
-
};
|
|
50552
|
-
}
|
|
50553
|
-
}
|
|
50554
|
-
}
|
|
50555
|
-
const riskDesc = zh_default[`${prefix}${key}_Desc`];
|
|
50556
|
-
return {
|
|
50557
|
-
name: keyToName,
|
|
50558
|
-
desc: riskDesc
|
|
50559
|
-
};
|
|
50560
|
-
}, "stringToDebuff");
|
|
50561
|
-
const deepArchim = worldState.archimedeas[0];
|
|
50562
|
-
const deepArchimMissions = await Promise.all(
|
|
50563
|
-
deepArchim.missions.map(async (m) => {
|
|
50564
|
-
const receivedType = await getMissionTypeKey(m.missionType);
|
|
50565
|
-
const type = import_warframe_public_export_plus5.dict_zh[import_warframe_public_export_plus5.ExportMissionTypes[receivedType]?.name] ?? m.missionType;
|
|
50566
|
-
const diviation = stringToDebuff(
|
|
50567
|
-
m.diviation.key,
|
|
50568
|
-
m.diviation.name,
|
|
50569
|
-
"/Lotus/Language/Conquest/MissionVariant_LabConquest_"
|
|
50570
|
-
);
|
|
50571
|
-
const risks = m.risks.map(
|
|
50572
|
-
(r) => stringToDebuff(r.key, r.name, "/Lotus/Language/Conquest/Condition_")
|
|
50573
|
-
);
|
|
50574
|
-
return {
|
|
50575
|
-
type,
|
|
50576
|
-
diviation,
|
|
50577
|
-
risks
|
|
50578
|
-
};
|
|
50579
|
-
})
|
|
50580
|
-
);
|
|
50581
|
-
const deepArchimPersonalModifier = deepArchim.personalModifiers.map(
|
|
50582
|
-
(p) => stringToDebuff(p.key, p.name, "/Lotus/Language/Conquest/PersonalMod_")
|
|
50583
|
-
);
|
|
50584
|
-
const deepArchimRes = {
|
|
50585
|
-
name: "深层科研",
|
|
50586
|
-
missions: deepArchimMissions,
|
|
50587
|
-
peronal: deepArchimPersonalModifier
|
|
50588
|
-
};
|
|
50589
|
-
const temporalArchim = worldState.archimedeas[1];
|
|
50590
|
-
const temporalArchimMissions = await Promise.all(
|
|
50591
|
-
temporalArchim.missions.map(async (m) => {
|
|
50592
|
-
const receivedType = await getMissionTypeKey(m.missionType);
|
|
50593
|
-
const type = import_warframe_public_export_plus5.dict_zh[import_warframe_public_export_plus5.ExportMissionTypes[receivedType]?.name] ?? receivedType;
|
|
50594
|
-
const diviation = stringToDebuff(
|
|
50595
|
-
m.diviation.key,
|
|
50596
|
-
m.diviation.name,
|
|
50597
|
-
"/Lotus/Language/Conquest/MissionVariant_HexConquest_"
|
|
50598
|
-
);
|
|
50599
|
-
const risks = m.risks.map(
|
|
50600
|
-
(r) => stringToDebuff(r.key, r.name, "/Lotus/Language/Conquest/Condition_")
|
|
50601
|
-
);
|
|
50602
|
-
return {
|
|
50603
|
-
type,
|
|
50604
|
-
diviation,
|
|
50605
|
-
risks
|
|
50606
|
-
};
|
|
50607
|
-
})
|
|
50608
|
-
);
|
|
50609
|
-
const temporalArchimPersonalModifier = temporalArchim.personalModifiers.map(
|
|
50610
|
-
(p) => stringToDebuff(p.key, p.name, "/Lotus/Language/Conquest/PersonalMod_")
|
|
50611
|
-
);
|
|
50612
|
-
const temporalArchimRes = {
|
|
50613
|
-
name: "时光科研",
|
|
50614
|
-
missions: temporalArchimMissions,
|
|
50615
|
-
peronal: temporalArchimPersonalModifier
|
|
50616
|
-
};
|
|
50617
|
-
return {
|
|
50618
|
-
archonHunt: archon,
|
|
50619
|
-
deepArchimedea: deepArchimRes,
|
|
50620
|
-
temporalArchimedea: temporalArchimRes
|
|
50621
|
-
};
|
|
50622
|
-
}, "getWeekly");
|
|
50623
|
-
var generateWeeklyOutput = /* @__PURE__ */ __name(async (puppe, archon, deepArchimedea, temporalArchimedea) => {
|
|
50624
|
-
const element = await WeeklyTable(archon, deepArchimedea, temporalArchimedea);
|
|
50625
|
-
return element;
|
|
50626
|
-
}, "generateWeeklyOutput");
|
|
50627
|
-
var getRegionTime = /* @__PURE__ */ __name(async () => {
|
|
50628
|
-
const { raw: worldState } = await globalWorldState.get();
|
|
50629
|
-
if (!worldState) {
|
|
50630
|
-
return "内部错误,获取最新信息失败";
|
|
50631
|
-
}
|
|
50632
|
-
const cetusDay = worldState.cetusCycle.isDay ? "白天" : "黑夜";
|
|
50633
|
-
const cetus = `地球/夜灵平野: ${cetusDay} ${worldState.cetusCycle.timeLeft}`;
|
|
50634
|
-
const vallisState = worldState.vallisCycle.isWarm ? "温暖" : "寒冷";
|
|
50635
|
-
const vallis = `奥布山谷: ${vallisState} ${worldState.vallisCycle.timeLeft}`;
|
|
50636
|
-
const cambionState = worldState.cambionCycle.state ? worldState.cambionCycle.state.charAt(0).toUpperCase() + worldState.cambionCycle.state.slice(1) : "未知";
|
|
50637
|
-
const cambion = `魔胎之境: ${cambionState} ${worldState.cambionCycle.timeLeft}`;
|
|
50638
|
-
const duviriStateTransDict = {
|
|
50639
|
-
sorrow: "悲伤",
|
|
50640
|
-
fear: "恐惧",
|
|
50641
|
-
joy: "喜悦",
|
|
50642
|
-
anger: "愤怒",
|
|
50643
|
-
envy: "嫉妒"
|
|
50644
|
-
};
|
|
50645
|
-
const duviriState = duviriStateTransDict[worldState.duviriCycle.state] ?? worldState.duviriCycle.state;
|
|
50646
|
-
const duviri = `双衍王境: ${duviriState} ${worldState.duviriCycle.endString}`;
|
|
50647
|
-
const zarimanFaction = worldState.zarimanCycle.isCorpus ? "Corpus" : "Grineer";
|
|
50648
|
-
const zariman = `扎里曼号: ${zarimanFaction} ${worldState.zarimanCycle.timeLeft}`;
|
|
50649
|
-
return `当前环境:
|
|
50650
|
-
${cetus}
|
|
50651
|
-
${vallis}
|
|
50652
|
-
${cambion}
|
|
50653
|
-
${duviri}
|
|
50654
|
-
${zariman}`;
|
|
50655
|
-
}, "getRegionTime");
|
|
50656
|
-
var getCircuitWeek = /* @__PURE__ */ __name(() => {
|
|
50657
|
-
const EPOCH = 1734307200 * 1e3;
|
|
50658
|
-
const week = Math.trunc((Date.now() - EPOCH) / 6048e5);
|
|
50659
|
-
const incarnons = incarnonRewards[week % incarnonRewards.length].map(
|
|
50660
|
-
(i) => import_warframe_public_export_plus5.dict_zh[i]
|
|
50661
|
-
);
|
|
50662
|
-
const warframes = warframeRewards[week % warframeRewards.length].map(
|
|
50663
|
-
(i) => import_warframe_public_export_plus5.dict_zh[i]
|
|
50664
|
-
);
|
|
50665
|
-
return {
|
|
50666
|
-
incarnons,
|
|
50667
|
-
warframes
|
|
50668
|
-
};
|
|
50669
|
-
}, "getCircuitWeek");
|
|
50670
|
-
var generateCircuitWeekOutput = /* @__PURE__ */ __name(async (puppe, data) => {
|
|
50671
|
-
const element = CircuitTable(data.incarnons, data.warframes);
|
|
50672
|
-
const imgBase64 = await getHtmlImageBase64(puppe, element.toString());
|
|
50673
|
-
return OutputImage(imgBase64);
|
|
50674
|
-
}, "generateCircuitWeekOutput");
|
|
50675
|
-
var getFissures = /* @__PURE__ */ __name(async () => {
|
|
50676
|
-
const { fissures } = await globalWorldState.get();
|
|
50677
|
-
return fissures ?? "内部错误,获取最新信息失败";
|
|
50678
|
-
}, "getFissures");
|
|
50679
|
-
var getSteelPathFissures = /* @__PURE__ */ __name(async () => {
|
|
50680
|
-
const { spFissures } = await globalWorldState.get();
|
|
50681
|
-
return spFissures ?? "内部错误,获取最新信息失败";
|
|
50682
|
-
}, "getSteelPathFissures");
|
|
50683
|
-
var getRailjackFissures = /* @__PURE__ */ __name(async () => {
|
|
50684
|
-
const { rjFissures } = await globalWorldState.get();
|
|
50685
|
-
return rjFissures ?? "内部错误,获取最新信息失败";
|
|
50686
|
-
}, "getRailjackFissures");
|
|
50687
|
-
var generateFissureOutput = /* @__PURE__ */ __name(async (puppe, fissures, type) => {
|
|
50688
|
-
const element = FissureTable(fissures, type);
|
|
50689
|
-
const imgBase64 = await getHtmlImageBase64(puppe, element.toString());
|
|
50690
|
-
return OutputImage(imgBase64);
|
|
50691
|
-
}, "generateFissureOutput");
|
|
50692
|
-
var getWeaponRivenDisposition = /* @__PURE__ */ __name((name2) => {
|
|
50693
|
-
const normalizedName = normalizeName(name2);
|
|
50694
|
-
const normalRes = weaponRivenDispositionDict[normalizedName];
|
|
50695
|
-
if (normalRes) {
|
|
50696
|
-
return normalRes;
|
|
50697
|
-
}
|
|
50698
|
-
const withPrimeSuffix = normalizedName + "prime";
|
|
50699
|
-
const withPrimeRes = weaponRivenDispositionDict[withPrimeSuffix];
|
|
50700
|
-
if (withPrimeRes) {
|
|
50701
|
-
return withPrimeRes;
|
|
50702
|
-
}
|
|
50703
|
-
return void 0;
|
|
50704
|
-
}, "getWeaponRivenDisposition");
|
|
50705
|
-
var getAnalyzedRiven = /* @__PURE__ */ __name(async (secret, dict) => {
|
|
50706
|
-
const img = await fetchAsyncImage(dict.src);
|
|
50707
|
-
if (!img) {
|
|
50708
|
-
return "获取图片失败";
|
|
50709
|
-
}
|
|
50710
|
-
const extractResult = await extractTextFromImage(img, secret);
|
|
50711
|
-
if (!extractResult) {
|
|
50712
|
-
return "解析图片失败";
|
|
50713
|
-
}
|
|
50714
|
-
const parseResult = parseOCRResult(extractResult);
|
|
50715
|
-
if (!parseResult || parseResult.attributes.length < 2 || parseResult.attributes.length > 4) {
|
|
50716
|
-
return "解析图片失败";
|
|
50717
|
-
}
|
|
50718
|
-
return analyzeRivenStat(parseResult);
|
|
50719
|
-
}, "getAnalyzedRiven");
|
|
50720
|
-
var generateAnalyzedRivenOutput = /* @__PURE__ */ __name(async (puppe, data) => {
|
|
50721
|
-
const element = RivenComponent(data);
|
|
50722
|
-
const imgBase64 = await getHtmlImageBase64(puppe, element.toString());
|
|
50723
|
-
return OutputImage(imgBase64);
|
|
50724
|
-
}, "generateAnalyzedRivenOutput");
|
|
50725
|
-
var parseOCRResult = /* @__PURE__ */ __name((ocrResult) => {
|
|
50726
|
-
const list = ocrResult.TextDetections;
|
|
50727
|
-
if (!list) {
|
|
50728
|
-
return;
|
|
50729
|
-
}
|
|
50730
|
-
function similarity(standard, input) {
|
|
50731
|
-
if (!standard || !input) {
|
|
50732
|
-
return 0;
|
|
50733
|
-
}
|
|
50734
|
-
standard = normalizeName(standard);
|
|
50735
|
-
input = normalizeName(input);
|
|
50736
|
-
if (input === "伤害") {
|
|
50737
|
-
return standard === "基础伤害" ? 1 : 0;
|
|
50738
|
-
}
|
|
50739
|
-
if (standard === "基础伤害" && input.match(/^伤害$|近战伤害/)) {
|
|
50740
|
-
return 1;
|
|
50741
|
-
}
|
|
50742
|
-
if (standard === "暴击率") {
|
|
50743
|
-
standard = "暴击几率";
|
|
50744
|
-
}
|
|
50745
|
-
if (standard.includes(input) || input.includes(standard) || standard.split("/").find((x) => !!x && input.includes(x))) {
|
|
50746
|
-
return 1;
|
|
50747
|
-
}
|
|
50748
|
-
const t = tokenSimilarity(standard, input);
|
|
50749
|
-
const s = normalSimilarity(standard, input);
|
|
50750
|
-
return Math.max(t, s);
|
|
50751
|
-
}
|
|
50752
|
-
__name(similarity, "similarity");
|
|
50753
|
-
const texts = list.map((item) => item.DetectedText);
|
|
50754
|
-
const attributes = [];
|
|
50755
|
-
const statLines = [];
|
|
50756
|
-
for (const t of texts) {
|
|
50757
|
-
if (!t || !t.match(/^[x+-]|^[0-9]/)) {
|
|
50758
|
-
continue;
|
|
50759
|
-
}
|
|
50760
|
-
const prefix = t.match(/^[x+-]/) ? t[0] : "";
|
|
50761
|
-
const attrNamePart = removeSpace(t ?? "").replace(/^[^一-龥]+/, "");
|
|
50762
|
-
const attr = globalRivenAttributeList.find((a) => {
|
|
50763
|
-
if (!a) return false;
|
|
50764
|
-
let zhName = a.i18n["zh-hans"]?.name;
|
|
50765
|
-
if (!zhName) return false;
|
|
50766
|
-
const sim = similarity(zhName, attrNamePart);
|
|
50767
|
-
if (sim < 0.8) return false;
|
|
50768
|
-
return true;
|
|
50769
|
-
});
|
|
50770
|
-
if (!attr) {
|
|
50771
|
-
continue;
|
|
50772
|
-
}
|
|
50773
|
-
statLines.push(t);
|
|
50774
|
-
const value = (/* @__PURE__ */ __name((function extractStatValue(text) {
|
|
50775
|
-
const t2 = text.replace(/\s+/g, "");
|
|
50776
|
-
const multMatch = t2.match(/x(\d+(\.\d+)?)/i);
|
|
50777
|
-
if (multMatch) {
|
|
50778
|
-
return {
|
|
50779
|
-
value: parseFloat(multMatch[1]),
|
|
50780
|
-
type: "multiply"
|
|
50781
|
-
};
|
|
50782
|
-
}
|
|
50783
|
-
const percentMatch = t2.match(/([+-]?\d+(\.\d+)?)%/);
|
|
50784
|
-
if (percentMatch) {
|
|
50785
|
-
return {
|
|
50786
|
-
value: parseFloat(percentMatch[1]),
|
|
50787
|
-
type: "percent"
|
|
50788
|
-
};
|
|
50789
|
-
}
|
|
50790
|
-
const numMatch = t2.match(/([+-]?\d+(\.\d+)?)/);
|
|
50791
|
-
if (numMatch) {
|
|
50792
|
-
return {
|
|
50793
|
-
value: parseFloat(numMatch[1]),
|
|
50794
|
-
type: "number"
|
|
50795
|
-
};
|
|
50796
|
-
}
|
|
50797
|
-
return void 0;
|
|
50798
|
-
}), "extractStatValue"))(t);
|
|
50799
|
-
if (!value) {
|
|
50800
|
-
return void 0;
|
|
50801
|
-
}
|
|
50802
|
-
attributes.push({ attr, value: value.value, prefix });
|
|
50803
|
-
}
|
|
50804
|
-
const weaponName = (/* @__PURE__ */ __name((function extractWeaponName(ocrData) {
|
|
50805
|
-
const rejectPatterns = [
|
|
50806
|
-
/%/,
|
|
50807
|
-
/x\d/i,
|
|
50808
|
-
/\d/,
|
|
50809
|
-
// numbers, %, multipliers
|
|
50810
|
-
/伤害/,
|
|
50811
|
-
/暴击/,
|
|
50812
|
-
/射速/,
|
|
50813
|
-
/攻击/,
|
|
50814
|
-
/后坐力/,
|
|
50815
|
-
/段位/,
|
|
50816
|
-
/加倍/,
|
|
50817
|
-
/效/,
|
|
50818
|
-
/武器/,
|
|
50819
|
-
/果/,
|
|
50820
|
-
/\)/,
|
|
50821
|
-
/\(/
|
|
50822
|
-
// junk OCR fragments
|
|
50823
|
-
];
|
|
50824
|
-
const candidates = ocrData.filter((str) => {
|
|
50825
|
-
const s = str.trim();
|
|
50826
|
-
if (/^\d+$/.test(s)) return false;
|
|
50827
|
-
if (/[+%]/.test(s)) return false;
|
|
50828
|
-
if (!/[A-Za-z\u4e00-\u9fa5]/.test(s)) return false;
|
|
50829
|
-
if (rejectPatterns.some((p) => p.test(s))) return false;
|
|
50830
|
-
return true;
|
|
50831
|
-
});
|
|
50832
|
-
const merged = candidates.join("");
|
|
50833
|
-
function removeRivenSuffix(name2) {
|
|
50834
|
-
let s = name2.replace(/\s+/g, "");
|
|
50835
|
-
const rivenPattern = /[A-Za-z]+-?[A-Za-z]+$/;
|
|
50836
|
-
return s.replace(rivenPattern, "");
|
|
50837
|
-
}
|
|
50838
|
-
__name(removeRivenSuffix, "removeRivenSuffix");
|
|
50839
|
-
return merged ? removeRivenSuffix(merged) : null;
|
|
50840
|
-
}), "extractWeaponName"))(texts.filter((t) => !statLines.some((l) => l === t)));
|
|
50841
|
-
if (!weaponName || !attributes.length) {
|
|
50842
|
-
return void 0;
|
|
50843
|
-
}
|
|
50844
|
-
return {
|
|
50845
|
-
name: weaponName,
|
|
50846
|
-
attributes
|
|
50847
|
-
};
|
|
50848
|
-
}, "parseOCRResult");
|
|
50849
|
-
var analyzeRivenStat = /* @__PURE__ */ __name((parseResult) => {
|
|
50850
|
-
const weaponRiven = getWeaponRivenDisposition(parseResult.name);
|
|
50851
|
-
if (!weaponRiven) {
|
|
50852
|
-
return "未找到武器: " + parseResult.name;
|
|
50853
|
-
}
|
|
50854
|
-
const disposition = weaponRiven.calc.disposition;
|
|
50855
|
-
const weaponType = weaponRiven.calc.riventype;
|
|
50856
|
-
const rivenStatCountType = (function() {
|
|
50857
|
-
if (parseResult.attributes.length === 4) {
|
|
50858
|
-
return "3_1";
|
|
50859
|
-
} else if (parseResult.attributes.length === 2) {
|
|
50860
|
-
return "2_0";
|
|
50800
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `margin-right: 6px;`, children: "⚠" }),
|
|
50801
|
+
"数值不在正常范围内(可能未满级或倾向未更新)"
|
|
50802
|
+
]
|
|
50803
|
+
}
|
|
50804
|
+
) : ""
|
|
50805
|
+
]
|
|
50806
|
+
}
|
|
50807
|
+
);
|
|
50808
|
+
}) })
|
|
50809
|
+
] }),
|
|
50810
|
+
data.curses.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
50811
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50812
|
+
"h3",
|
|
50813
|
+
{
|
|
50814
|
+
style: `color: #f44336; margin: 0 0 15px 0; font-size: 16px; display: flex; align-items: center;`,
|
|
50815
|
+
children: [
|
|
50816
|
+
"负面词条 (",
|
|
50817
|
+
data.curses.length,
|
|
50818
|
+
")"
|
|
50819
|
+
]
|
|
50820
|
+
}
|
|
50821
|
+
),
|
|
50822
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { children: data.curses.map((curse, curseIndex) => {
|
|
50823
|
+
const inRange = isInRange(curse.percent);
|
|
50824
|
+
const percentColor = getPercentColor(curse.percent);
|
|
50825
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50826
|
+
"li",
|
|
50827
|
+
{
|
|
50828
|
+
style: `background-color: #eeeeee; border-radius: 6px; padding: 12px; margin-bottom: 10px; border-left: 4px solid ${percentColor};`,
|
|
50829
|
+
children: [
|
|
50830
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50831
|
+
"div",
|
|
50832
|
+
{
|
|
50833
|
+
style: `display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px;`,
|
|
50834
|
+
children: [
|
|
50835
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `font-weight: bold;`, children: curse.name }),
|
|
50836
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `font-size: 18px; font-weight: bold;`, children: formatValue(curse.value, curse.unit) })
|
|
50837
|
+
]
|
|
50838
|
+
}
|
|
50839
|
+
),
|
|
50840
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50841
|
+
"div",
|
|
50842
|
+
{
|
|
50843
|
+
style: `height: 10px; background-color: #444; border-radius: 3px; margin-bottom: 8px;`,
|
|
50844
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50845
|
+
"div",
|
|
50846
|
+
{
|
|
50847
|
+
style: `height: 10px; position: relative; overflow: hidden;`,
|
|
50848
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50849
|
+
"p",
|
|
50850
|
+
{
|
|
50851
|
+
style: `position: absolute; left: 0; top: 0; height: 100%; width: ${getProgressWidth(
|
|
50852
|
+
curse.percent * 10
|
|
50853
|
+
)}; background-color: ${percentColor}; border-radius: 3px;`
|
|
50854
|
+
}
|
|
50855
|
+
)
|
|
50856
|
+
}
|
|
50857
|
+
)
|
|
50858
|
+
}
|
|
50859
|
+
),
|
|
50860
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50861
|
+
"div",
|
|
50862
|
+
{
|
|
50863
|
+
style: `display: flex; justify-content: space-between; font-size: 12px; color: #aaa;`,
|
|
50864
|
+
children: [
|
|
50865
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
|
|
50866
|
+
"范围: ",
|
|
50867
|
+
formatRange(curse.min, curse.max, curse.unit)
|
|
50868
|
+
] }),
|
|
50869
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { style: `color: ${percentColor};`, children: [
|
|
50870
|
+
curse.percent > 0 ? "+" : "",
|
|
50871
|
+
(curse.percent * 100).toFixed(2) + "%"
|
|
50872
|
+
] })
|
|
50873
|
+
]
|
|
50874
|
+
}
|
|
50875
|
+
),
|
|
50876
|
+
!inRange ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50877
|
+
"div",
|
|
50878
|
+
{
|
|
50879
|
+
style: `margin-top: 8px; padding: 6px; background-color: rgba(244, 67, 54, 0.2); border-radius: 4px; font-size: 12px; color: #f44336; display: flex; align-items: center;`,
|
|
50880
|
+
children: [
|
|
50881
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: `margin-right: 6px;`, children: "⚠" }),
|
|
50882
|
+
"数值不在正常范围内(可能未满级或倾向未更新)"
|
|
50883
|
+
]
|
|
50884
|
+
}
|
|
50885
|
+
) : ""
|
|
50886
|
+
]
|
|
50887
|
+
}
|
|
50888
|
+
);
|
|
50889
|
+
}) })
|
|
50890
|
+
] }) : ""
|
|
50891
|
+
]
|
|
50861
50892
|
}
|
|
50862
|
-
|
|
50863
|
-
|
|
50864
|
-
|
|
50865
|
-
|
|
50866
|
-
|
|
50867
|
-
|
|
50893
|
+
) });
|
|
50894
|
+
}, "RivenComponent");
|
|
50895
|
+
var RivenStatComponent = /* @__PURE__ */ __name((data) => {
|
|
50896
|
+
const getValue = /* @__PURE__ */ __name((value, unit) => {
|
|
50897
|
+
switch (unit) {
|
|
50898
|
+
case "multiply":
|
|
50899
|
+
return "x" + (1 + value).toFixed(2);
|
|
50900
|
+
case "seconds":
|
|
50901
|
+
return value.toFixed(2) + "s";
|
|
50902
|
+
case "percent":
|
|
50903
|
+
return value.toFixed(2) + "%";
|
|
50904
|
+
default:
|
|
50905
|
+
return value.toFixed(2);
|
|
50868
50906
|
}
|
|
50869
|
-
})
|
|
50870
|
-
|
|
50871
|
-
|
|
50872
|
-
|
|
50873
|
-
|
|
50874
|
-
|
|
50875
|
-
|
|
50876
|
-
|
|
50877
|
-
|
|
50878
|
-
|
|
50879
|
-
|
|
50880
|
-
|
|
50881
|
-
|
|
50882
|
-
|
|
50883
|
-
|
|
50884
|
-
|
|
50885
|
-
|
|
50886
|
-
|
|
50887
|
-
|
|
50888
|
-
|
|
50889
|
-
|
|
50890
|
-
|
|
50891
|
-
|
|
50892
|
-
|
|
50893
|
-
|
|
50894
|
-
|
|
50895
|
-
|
|
50896
|
-
|
|
50897
|
-
|
|
50898
|
-
|
|
50899
|
-
|
|
50900
|
-
|
|
50901
|
-
|
|
50902
|
-
|
|
50907
|
+
}, "getValue");
|
|
50908
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50909
|
+
"div",
|
|
50910
|
+
{
|
|
50911
|
+
style: `
|
|
50912
|
+
display: flex;
|
|
50913
|
+
flex-direction: column;
|
|
50914
|
+
gap: 16px;
|
|
50915
|
+
padding: 16px;
|
|
50916
|
+
font-family: system-ui, sans-serif;
|
|
50917
|
+
background-color: #1a1a2e;
|
|
50918
|
+
border-radius: 8px;
|
|
50919
|
+
max-width: 600px;
|
|
50920
|
+
`,
|
|
50921
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50922
|
+
"div",
|
|
50923
|
+
{
|
|
50924
|
+
style: `
|
|
50925
|
+
display: flex;
|
|
50926
|
+
gap: 16px;
|
|
50927
|
+
`,
|
|
50928
|
+
children: [
|
|
50929
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50930
|
+
"div",
|
|
50931
|
+
{
|
|
50932
|
+
style: `
|
|
50933
|
+
flex: 1;
|
|
50934
|
+
`,
|
|
50935
|
+
children: [
|
|
50936
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50937
|
+
"div",
|
|
50938
|
+
{
|
|
50939
|
+
style: `
|
|
50940
|
+
display: flex;
|
|
50941
|
+
justify-content: space-between;
|
|
50942
|
+
align-items: center;
|
|
50943
|
+
margin-bottom: 8px;
|
|
50944
|
+
padding: 0 4px;
|
|
50945
|
+
`,
|
|
50946
|
+
children: [
|
|
50947
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50948
|
+
"h3",
|
|
50949
|
+
{
|
|
50950
|
+
style: `
|
|
50951
|
+
margin: 0;
|
|
50952
|
+
color: #7dd56f;
|
|
50953
|
+
font-size: 16px;
|
|
50954
|
+
font-weight: 600;
|
|
50955
|
+
`,
|
|
50956
|
+
children: "正面属性"
|
|
50957
|
+
}
|
|
50958
|
+
),
|
|
50959
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50960
|
+
"div",
|
|
50961
|
+
{
|
|
50962
|
+
style: `
|
|
50963
|
+
display: flex;
|
|
50964
|
+
gap: 12px;
|
|
50965
|
+
`,
|
|
50966
|
+
children: [
|
|
50967
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50968
|
+
"span",
|
|
50969
|
+
{
|
|
50970
|
+
style: `
|
|
50971
|
+
color: #888;
|
|
50972
|
+
font-size: 12px;
|
|
50973
|
+
`,
|
|
50974
|
+
children: "最小"
|
|
50975
|
+
}
|
|
50976
|
+
),
|
|
50977
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50978
|
+
"span",
|
|
50979
|
+
{
|
|
50980
|
+
style: `
|
|
50981
|
+
color: #888;
|
|
50982
|
+
font-size: 12px;
|
|
50983
|
+
`,
|
|
50984
|
+
children: "最大"
|
|
50985
|
+
}
|
|
50986
|
+
)
|
|
50987
|
+
]
|
|
50988
|
+
}
|
|
50989
|
+
)
|
|
50990
|
+
]
|
|
50991
|
+
}
|
|
50992
|
+
),
|
|
50993
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50994
|
+
"div",
|
|
50995
|
+
{
|
|
50996
|
+
style: `
|
|
50997
|
+
display: flex;
|
|
50998
|
+
flex-direction: column;
|
|
50999
|
+
gap: 4px;
|
|
51000
|
+
`,
|
|
51001
|
+
children: Object.entries(data.positive).map(([_, value]) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
51002
|
+
"div",
|
|
51003
|
+
{
|
|
51004
|
+
style: `
|
|
51005
|
+
display: flex;
|
|
51006
|
+
justify-content: space-between;
|
|
51007
|
+
align-items: center;
|
|
51008
|
+
padding: 6px 8px;
|
|
51009
|
+
background-color: #16213e;
|
|
51010
|
+
border-radius: 4px;
|
|
51011
|
+
border-left: 3px solid #7dd56f;
|
|
51012
|
+
`,
|
|
51013
|
+
children: [
|
|
51014
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51015
|
+
"span",
|
|
51016
|
+
{
|
|
51017
|
+
style: `
|
|
51018
|
+
color: #e0e0e0;
|
|
51019
|
+
font-size: 13px;
|
|
51020
|
+
`,
|
|
51021
|
+
children: value.name
|
|
51022
|
+
}
|
|
51023
|
+
),
|
|
51024
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
51025
|
+
"div",
|
|
51026
|
+
{
|
|
51027
|
+
style: `
|
|
51028
|
+
display: flex;
|
|
51029
|
+
gap: 16px;
|
|
51030
|
+
`,
|
|
51031
|
+
children: [
|
|
51032
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51033
|
+
"span",
|
|
51034
|
+
{
|
|
51035
|
+
style: `
|
|
51036
|
+
color: #7dd56f;
|
|
51037
|
+
font-size: 13px;
|
|
51038
|
+
font-weight: 500;
|
|
51039
|
+
min-width: 60px;
|
|
51040
|
+
text-align: right;
|
|
51041
|
+
`,
|
|
51042
|
+
children: getValue(value.min, value.unit)
|
|
51043
|
+
}
|
|
51044
|
+
),
|
|
51045
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51046
|
+
"span",
|
|
51047
|
+
{
|
|
51048
|
+
style: `
|
|
51049
|
+
color: #7dd56f;
|
|
51050
|
+
font-size: 13px;
|
|
51051
|
+
font-weight: 500;
|
|
51052
|
+
min-width: 60px;
|
|
51053
|
+
text-align: right;
|
|
51054
|
+
`,
|
|
51055
|
+
children: getValue(value.max, value.unit)
|
|
51056
|
+
}
|
|
51057
|
+
)
|
|
51058
|
+
]
|
|
51059
|
+
}
|
|
51060
|
+
)
|
|
51061
|
+
]
|
|
51062
|
+
}
|
|
51063
|
+
))
|
|
51064
|
+
}
|
|
51065
|
+
)
|
|
51066
|
+
]
|
|
51067
|
+
}
|
|
51068
|
+
),
|
|
51069
|
+
data.negative ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
51070
|
+
"div",
|
|
51071
|
+
{
|
|
51072
|
+
style: `
|
|
51073
|
+
flex: 1;
|
|
51074
|
+
`,
|
|
51075
|
+
children: [
|
|
51076
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
51077
|
+
"div",
|
|
51078
|
+
{
|
|
51079
|
+
style: `
|
|
51080
|
+
display: flex;
|
|
51081
|
+
justify-content: space-between;
|
|
51082
|
+
align-items: center;
|
|
51083
|
+
margin-bottom: 8px;
|
|
51084
|
+
padding: 0 4px;
|
|
51085
|
+
`,
|
|
51086
|
+
children: [
|
|
51087
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51088
|
+
"h3",
|
|
51089
|
+
{
|
|
51090
|
+
style: `
|
|
51091
|
+
margin: 0;
|
|
51092
|
+
color: #e35f5f;
|
|
51093
|
+
font-size: 16px;
|
|
51094
|
+
font-weight: 600;
|
|
51095
|
+
`,
|
|
51096
|
+
children: "负面属性"
|
|
51097
|
+
}
|
|
51098
|
+
),
|
|
51099
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
51100
|
+
"div",
|
|
51101
|
+
{
|
|
51102
|
+
style: `
|
|
51103
|
+
display: flex;
|
|
51104
|
+
gap: 12px;
|
|
51105
|
+
`,
|
|
51106
|
+
children: [
|
|
51107
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51108
|
+
"span",
|
|
51109
|
+
{
|
|
51110
|
+
style: `
|
|
51111
|
+
color: #888;
|
|
51112
|
+
font-size: 12px;
|
|
51113
|
+
`,
|
|
51114
|
+
children: "最小"
|
|
51115
|
+
}
|
|
51116
|
+
),
|
|
51117
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51118
|
+
"span",
|
|
51119
|
+
{
|
|
51120
|
+
style: `
|
|
51121
|
+
color: #888;
|
|
51122
|
+
font-size: 12px;
|
|
51123
|
+
`,
|
|
51124
|
+
children: "最大"
|
|
51125
|
+
}
|
|
51126
|
+
)
|
|
51127
|
+
]
|
|
51128
|
+
}
|
|
51129
|
+
)
|
|
51130
|
+
]
|
|
51131
|
+
}
|
|
51132
|
+
),
|
|
51133
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51134
|
+
"div",
|
|
51135
|
+
{
|
|
51136
|
+
style: `
|
|
51137
|
+
display: flex;
|
|
51138
|
+
flex-direction: column;
|
|
51139
|
+
gap: 4px;
|
|
51140
|
+
`,
|
|
51141
|
+
children: Object.entries(data.negative).map(([key, value]) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
51142
|
+
"div",
|
|
51143
|
+
{
|
|
51144
|
+
style: `
|
|
51145
|
+
display: flex;
|
|
51146
|
+
justify-content: space-between;
|
|
51147
|
+
align-items: center;
|
|
51148
|
+
padding: 6px 8px;
|
|
51149
|
+
background-color: #16213e;
|
|
51150
|
+
border-radius: 4px;
|
|
51151
|
+
border-left: 3px solid #e35f5f;
|
|
51152
|
+
`,
|
|
51153
|
+
children: [
|
|
51154
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51155
|
+
"span",
|
|
51156
|
+
{
|
|
51157
|
+
style: `
|
|
51158
|
+
color: #e0e0e0;
|
|
51159
|
+
font-size: 13px;
|
|
51160
|
+
`,
|
|
51161
|
+
children: value.name
|
|
51162
|
+
}
|
|
51163
|
+
),
|
|
51164
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
51165
|
+
"div",
|
|
51166
|
+
{
|
|
51167
|
+
style: `
|
|
51168
|
+
display: flex;
|
|
51169
|
+
gap: 16px;
|
|
51170
|
+
`,
|
|
51171
|
+
children: [
|
|
51172
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51173
|
+
"span",
|
|
51174
|
+
{
|
|
51175
|
+
style: `
|
|
51176
|
+
color: #e35f5f;
|
|
51177
|
+
font-size: 13px;
|
|
51178
|
+
font-weight: 500;
|
|
51179
|
+
min-width: 60px;
|
|
51180
|
+
text-align: right;
|
|
51181
|
+
`,
|
|
51182
|
+
children: getValue(value.min, value.unit)
|
|
51183
|
+
}
|
|
51184
|
+
),
|
|
51185
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51186
|
+
"span",
|
|
51187
|
+
{
|
|
51188
|
+
style: `
|
|
51189
|
+
color: #e35f5f;
|
|
51190
|
+
font-size: 13px;
|
|
51191
|
+
font-weight: 500;
|
|
51192
|
+
min-width: 60px;
|
|
51193
|
+
text-align: right;
|
|
51194
|
+
`,
|
|
51195
|
+
children: getValue(value.max, value.unit)
|
|
51196
|
+
}
|
|
51197
|
+
)
|
|
51198
|
+
]
|
|
51199
|
+
}
|
|
51200
|
+
)
|
|
51201
|
+
]
|
|
51202
|
+
}
|
|
51203
|
+
))
|
|
51204
|
+
}
|
|
51205
|
+
)
|
|
51206
|
+
]
|
|
51207
|
+
}
|
|
51208
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {})
|
|
51209
|
+
]
|
|
51210
|
+
}
|
|
51211
|
+
)
|
|
50903
51212
|
}
|
|
50904
|
-
}
|
|
50905
|
-
return {
|
|
50906
|
-
name: weaponRiven.name.zh,
|
|
50907
|
-
disposition,
|
|
50908
|
-
buffs,
|
|
50909
|
-
curses
|
|
50910
|
-
};
|
|
50911
|
-
}, "analyzeRivenStat");
|
|
50912
|
-
var getVoidTrader = /* @__PURE__ */ __name(async () => {
|
|
50913
|
-
const { raw: worldState } = await globalWorldState.get();
|
|
50914
|
-
if (worldState.voidTraders.length === 0) {
|
|
50915
|
-
return "虚空商人仍在未知地带漂流...";
|
|
50916
|
-
}
|
|
50917
|
-
if (worldState.voidTraders[0].activation.getTime() > Date.now()) {
|
|
50918
|
-
const diff2 = worldState.voidTraders[0].activation.getTime() - Date.now();
|
|
50919
|
-
return "距离虚空商人到达还有: " + msToHumanReadable(diff2);
|
|
50920
|
-
}
|
|
50921
|
-
const diff = worldState.voidTraders[0].expiry.getTime() - Date.now();
|
|
50922
|
-
const trader = worldState.voidTraders[0];
|
|
50923
|
-
const items = trader.inventory.map(getVoidTraderItem);
|
|
50924
|
-
return { expiry: msToHumanReadable(diff), items };
|
|
50925
|
-
}, "getVoidTrader");
|
|
50926
|
-
var generateVoidTraderOutput = /* @__PURE__ */ __name(async (puppe, data) => {
|
|
50927
|
-
const element = VoidTraderComponent(data);
|
|
50928
|
-
const imgBase64 = await getHtmlImageBase64(puppe, element.toString());
|
|
50929
|
-
return OutputImage(imgBase64);
|
|
50930
|
-
}, "generateVoidTraderOutput");
|
|
50931
|
-
|
|
50932
|
-
// src/commands/wfm/wm.ts
|
|
50933
|
-
var wmCommand = /* @__PURE__ */ __name(async (action, input) => {
|
|
50934
|
-
const result = await getItemOrders(input);
|
|
50935
|
-
if (!result) {
|
|
50936
|
-
return `Item not found: ${input}`;
|
|
50937
|
-
}
|
|
50938
|
-
return await generateItemOrderOutput(
|
|
50939
|
-
action.session.app.puppeteer,
|
|
50940
|
-
result.item,
|
|
50941
|
-
result.orders
|
|
50942
51213
|
);
|
|
50943
|
-
}, "
|
|
50944
|
-
|
|
50945
|
-
|
|
50946
|
-
|
|
50947
|
-
|
|
50948
|
-
|
|
50949
|
-
|
|
50950
|
-
|
|
50951
|
-
|
|
50952
|
-
|
|
50953
|
-
|
|
50954
|
-
|
|
51214
|
+
}, "RivenStatComponent");
|
|
51215
|
+
var VoidTraderComponent = /* @__PURE__ */ __name((data) => {
|
|
51216
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51217
|
+
"div",
|
|
51218
|
+
{
|
|
51219
|
+
style: `width: 400px; padding: 10px; font-family: sans-serif; font-size: 14px;`,
|
|
51220
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("table", { style: `width: 100%; border-collapse: collapse;`, children: [
|
|
51221
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { children: [
|
|
51222
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51223
|
+
"th",
|
|
51224
|
+
{
|
|
51225
|
+
style: `border-bottom: 1px solid #ccc; text-align: left; padding: 6px;`,
|
|
51226
|
+
children: "名称"
|
|
51227
|
+
}
|
|
51228
|
+
),
|
|
51229
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51230
|
+
"th",
|
|
51231
|
+
{
|
|
51232
|
+
style: `border-bottom: 1px solid #ccc; text-align: left; padding: 6px;`,
|
|
51233
|
+
children: "价格"
|
|
51234
|
+
}
|
|
51235
|
+
)
|
|
51236
|
+
] }) }),
|
|
51237
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("tbody", { children: data.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { children: [
|
|
51238
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { style: `padding: 6px; border-bottom: 1px solid #eee;`, children: item.name }),
|
|
51239
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
51240
|
+
"td",
|
|
51241
|
+
{
|
|
51242
|
+
style: `padding: 6px; border-bottom: 1px solid #eee; text-align: center;line-height: 1;`,
|
|
51243
|
+
children: [
|
|
51244
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: item.ducats }),
|
|
51245
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51246
|
+
"svg",
|
|
51247
|
+
{
|
|
51248
|
+
viewBox: "0 0 18 18",
|
|
51249
|
+
style: "\n color: rgb(64 64 64 / 75%);\n height: 1em;\n width: 1em;\n vertical-align: -.125em;\n fill: currentcolor;",
|
|
51250
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("use", { href: `#icon-ducats` })
|
|
51251
|
+
}
|
|
51252
|
+
),
|
|
51253
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "+" }),
|
|
51254
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: item.credits }),
|
|
51255
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "现金" })
|
|
51256
|
+
]
|
|
51257
|
+
}
|
|
51258
|
+
)
|
|
51259
|
+
] })) })
|
|
51260
|
+
] })
|
|
51261
|
+
}
|
|
50955
51262
|
);
|
|
50956
|
-
}, "
|
|
51263
|
+
}, "VoidTraderComponent");
|
|
50957
51264
|
|
|
50958
|
-
// src/commands/wf
|
|
50959
|
-
var arbitrationCommand = /* @__PURE__ */ __name((action, input) => {
|
|
51265
|
+
// src/commands/wf.ts
|
|
51266
|
+
var arbitrationCommand = /* @__PURE__ */ __name(async (action, input) => {
|
|
50960
51267
|
const result = getArbitrations(input);
|
|
50961
51268
|
if (!result) {
|
|
50962
51269
|
return "获取失败, 请稍后再试";
|
|
@@ -50964,10 +51271,28 @@ var arbitrationCommand = /* @__PURE__ */ __name((action, input) => {
|
|
|
50964
51271
|
if (typeof result === "string") {
|
|
50965
51272
|
return result;
|
|
50966
51273
|
}
|
|
50967
|
-
return
|
|
51274
|
+
return await generateImageOutput(
|
|
51275
|
+
action.session.app.puppeteer,
|
|
51276
|
+
ArbitrationComponent(result)
|
|
51277
|
+
);
|
|
50968
51278
|
}, "arbitrationCommand");
|
|
50969
|
-
|
|
50970
|
-
|
|
51279
|
+
var circuitCommand = /* @__PURE__ */ __name(async (action) => {
|
|
51280
|
+
const result = getCircuitWeek();
|
|
51281
|
+
return await generateImageOutput(
|
|
51282
|
+
action.session.app.puppeteer,
|
|
51283
|
+
CircuitComponent(result.incarnons, result.warframes)
|
|
51284
|
+
);
|
|
51285
|
+
}, "circuitCommand");
|
|
51286
|
+
var voidtraderCommand = /* @__PURE__ */ __name(async (action) => {
|
|
51287
|
+
const result = await getVoidTrader();
|
|
51288
|
+
if (typeof result === "string") {
|
|
51289
|
+
return result;
|
|
51290
|
+
}
|
|
51291
|
+
return await generateImageOutput(
|
|
51292
|
+
action.session.app.puppeteer,
|
|
51293
|
+
VoidTraderComponent(result)
|
|
51294
|
+
);
|
|
51295
|
+
}, "voidtraderCommand");
|
|
50971
51296
|
var fissureCommand = /* @__PURE__ */ __name(async (action) => {
|
|
50972
51297
|
const result = await getFissures();
|
|
50973
51298
|
if (!result) {
|
|
@@ -50976,10 +51301,9 @@ var fissureCommand = /* @__PURE__ */ __name(async (action) => {
|
|
|
50976
51301
|
if (typeof result === "string") {
|
|
50977
51302
|
return result;
|
|
50978
51303
|
}
|
|
50979
|
-
return await
|
|
51304
|
+
return await generateImageOutput(
|
|
50980
51305
|
action.session.app.puppeteer,
|
|
50981
|
-
result,
|
|
50982
|
-
"fissure"
|
|
51306
|
+
FissureComponent(result, "fissure")
|
|
50983
51307
|
);
|
|
50984
51308
|
}, "fissureCommand");
|
|
50985
51309
|
var steelPathFissureCommand = /* @__PURE__ */ __name(async (action) => {
|
|
@@ -50990,10 +51314,9 @@ var steelPathFissureCommand = /* @__PURE__ */ __name(async (action) => {
|
|
|
50990
51314
|
if (typeof result === "string") {
|
|
50991
51315
|
return result;
|
|
50992
51316
|
}
|
|
50993
|
-
return await
|
|
51317
|
+
return await generateImageOutput(
|
|
50994
51318
|
action.session.app.puppeteer,
|
|
50995
|
-
result,
|
|
50996
|
-
"sp-fissure"
|
|
51319
|
+
FissureComponent(result, "sp-fissure")
|
|
50997
51320
|
);
|
|
50998
51321
|
}, "steelPathFissureCommand");
|
|
50999
51322
|
var railjackFissureCommand = /* @__PURE__ */ __name(async (action) => {
|
|
@@ -51004,73 +51327,351 @@ var railjackFissureCommand = /* @__PURE__ */ __name(async (action) => {
|
|
|
51004
51327
|
if (typeof result === "string") {
|
|
51005
51328
|
return result;
|
|
51006
51329
|
}
|
|
51007
|
-
return await
|
|
51330
|
+
return await generateImageOutput(
|
|
51008
51331
|
action.session.app.puppeteer,
|
|
51009
|
-
result,
|
|
51010
|
-
"rj-fissure"
|
|
51332
|
+
FissureComponent(result, "rj-fissure")
|
|
51011
51333
|
);
|
|
51012
51334
|
}, "railjackFissureCommand");
|
|
51013
|
-
|
|
51014
|
-
// src/commands/wf/circuit.ts
|
|
51015
|
-
var circuitCommand = /* @__PURE__ */ __name((action) => {
|
|
51016
|
-
const result = getCircuitWeek();
|
|
51017
|
-
return generateCircuitWeekOutput(action.session.app.puppeteer, result);
|
|
51018
|
-
}, "circuitCommand");
|
|
51019
|
-
|
|
51020
|
-
// src/commands/wf/environment.ts
|
|
51021
|
-
var environmentCommand = /* @__PURE__ */ __name(async () => {
|
|
51022
|
-
return await getRegionTime();
|
|
51023
|
-
}, "environmentCommand");
|
|
51024
|
-
|
|
51025
|
-
// src/commands/wf/weekly.ts
|
|
51026
|
-
var weeklyCommand = /* @__PURE__ */ __name(async (action) => {
|
|
51027
|
-
const result = await getWeekly();
|
|
51028
|
-
if (!result || typeof result === "string") {
|
|
51029
|
-
return "None.";
|
|
51030
|
-
}
|
|
51031
|
-
return await generateWeeklyOutput(
|
|
51032
|
-
action.session.app.puppeteer,
|
|
51033
|
-
result.archonHunt,
|
|
51034
|
-
result.deepArchimedea,
|
|
51035
|
-
result.temporalArchimedea
|
|
51036
|
-
);
|
|
51037
|
-
}, "weeklyCommand");
|
|
51038
|
-
|
|
51039
|
-
// src/commands/wf/relic.ts
|
|
51040
51335
|
var relicCommand = /* @__PURE__ */ __name(async (action, input) => {
|
|
51041
51336
|
const result = await getRelic(input);
|
|
51042
51337
|
if (typeof result === "string") {
|
|
51043
51338
|
return result;
|
|
51044
51339
|
}
|
|
51045
51340
|
const relic = await applyRelicData(result);
|
|
51046
|
-
return await
|
|
51341
|
+
return await generateImageOutput(
|
|
51342
|
+
action.session.app.puppeteer,
|
|
51343
|
+
RelicComponent(relic)
|
|
51344
|
+
);
|
|
51047
51345
|
}, "relicCommand");
|
|
51048
|
-
|
|
51049
|
-
// src/commands/wf/riven.ts
|
|
51050
51346
|
var rivenCommand = /* @__PURE__ */ __name(async (action, input, secret) => {
|
|
51051
|
-
|
|
51347
|
+
if (!input?.src) {
|
|
51348
|
+
return "未检测到图片";
|
|
51349
|
+
}
|
|
51350
|
+
const result = await getAnalyzedRiven(secret, input.src);
|
|
51052
51351
|
if (typeof result === "string") {
|
|
51053
51352
|
return result;
|
|
51054
51353
|
}
|
|
51055
|
-
return await
|
|
51354
|
+
return await generateImageOutput(
|
|
51056
51355
|
action.session.app.puppeteer,
|
|
51057
|
-
result
|
|
51356
|
+
RivenComponent(result)
|
|
51058
51357
|
);
|
|
51059
51358
|
}, "rivenCommand");
|
|
51060
|
-
|
|
51061
|
-
|
|
51062
|
-
|
|
51063
|
-
|
|
51359
|
+
var rivenStatCommand = /* @__PURE__ */ __name(async (action, weaponType, statType, disposition) => {
|
|
51360
|
+
if (!weaponType || !statType || !disposition) {
|
|
51361
|
+
return "请输入正确参数";
|
|
51362
|
+
}
|
|
51363
|
+
const result = await getStaticRivenStats(weaponType, statType, disposition);
|
|
51064
51364
|
if (typeof result === "string") {
|
|
51065
51365
|
return result;
|
|
51066
51366
|
}
|
|
51067
|
-
return await
|
|
51068
|
-
|
|
51367
|
+
return await generateImageOutput(
|
|
51368
|
+
action.session.app.puppeteer,
|
|
51369
|
+
RivenStatComponent(result)
|
|
51370
|
+
);
|
|
51371
|
+
}, "rivenStatCommand");
|
|
51372
|
+
var weeklyCommand = /* @__PURE__ */ __name(async (action) => {
|
|
51373
|
+
const result = await getWeekly();
|
|
51374
|
+
if (!result) {
|
|
51375
|
+
return "内部错误";
|
|
51376
|
+
}
|
|
51377
|
+
if (typeof result === "string") {
|
|
51378
|
+
return result;
|
|
51379
|
+
}
|
|
51380
|
+
return await generateImageOutput(
|
|
51381
|
+
action.session.app.puppeteer,
|
|
51382
|
+
WeeklyComponent(
|
|
51383
|
+
result.archonHunt,
|
|
51384
|
+
result.deepArchimedea,
|
|
51385
|
+
result.temporalArchimedea
|
|
51386
|
+
)
|
|
51387
|
+
);
|
|
51388
|
+
}, "weeklyCommand");
|
|
51389
|
+
var environmentCommand = /* @__PURE__ */ __name(async () => {
|
|
51390
|
+
return await getEnvironment();
|
|
51391
|
+
}, "environmentCommand");
|
|
51392
|
+
|
|
51393
|
+
// src/components/wfm.tsx
|
|
51394
|
+
var import_jsx_runtime2 = require("@satorijs/element/jsx-runtime");
|
|
51395
|
+
var ItemOrderComponent = /* @__PURE__ */ __name((item, orders) => {
|
|
51396
|
+
const itemNameCN = item.i18n["zh-hans"]?.name;
|
|
51397
|
+
const itemNameEN = item.i18n["en"]?.name;
|
|
51398
|
+
let result = `物品: ${itemNameCN} / ${itemNameEN} (ID: ${item.slug})
|
|
51399
|
+
`;
|
|
51400
|
+
for (const order of orders) {
|
|
51401
|
+
result += `玩家: ${order.user.ingameName} 状态: ${order.user.status} 价格: ${order.platinum}
|
|
51402
|
+
`;
|
|
51403
|
+
}
|
|
51404
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: "display:flex; flex-direction: column;", children: [
|
|
51405
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("style", { children: `
|
|
51406
|
+
th {
|
|
51407
|
+
align-items: center;
|
|
51408
|
+
font-size: 1.8rem;
|
|
51409
|
+
}
|
|
51410
|
+
|
|
51411
|
+
td {
|
|
51412
|
+
text-align: center;
|
|
51413
|
+
font-size: 1.5rem;
|
|
51414
|
+
}
|
|
51415
|
+
|
|
51416
|
+
tr {
|
|
51417
|
+
height: 3rem;
|
|
51418
|
+
}
|
|
51419
|
+
` }),
|
|
51420
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("h1", { style: "text-align: center;", children: [
|
|
51421
|
+
itemNameCN,
|
|
51422
|
+
" / ",
|
|
51423
|
+
itemNameEN,
|
|
51424
|
+
" (ID: ",
|
|
51425
|
+
item.slug,
|
|
51426
|
+
")"
|
|
51427
|
+
] }),
|
|
51428
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("table", { style: "width:100%;", children: [
|
|
51429
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("tr", { children: [
|
|
51430
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("th", { style: "width:40%;", children: "玩家名" }),
|
|
51431
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("th", { style: "width:30%;", children: "状态" }),
|
|
51432
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("th", { style: "width:10%;", children: "价格" }),
|
|
51433
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("th", { style: "width:10%;", children: "数量" }),
|
|
51434
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("th", { style: "width:10%;", children: "好评" })
|
|
51435
|
+
] }),
|
|
51436
|
+
orders.map((order) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("tr", { children: [
|
|
51437
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("td", { children: order.user.ingameName }),
|
|
51438
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("td", { children: order.user.status }),
|
|
51439
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("td", { children: order.platinum }),
|
|
51440
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("td", { children: order.quantity }),
|
|
51441
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("td", { children: order.user.reputation })
|
|
51442
|
+
] }))
|
|
51443
|
+
] }),
|
|
51444
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: "text-align: center; margin-top: 30px; font-size: 25px;", children: (() => {
|
|
51445
|
+
const firstOrder = orders[0];
|
|
51446
|
+
const comment = `/w ${firstOrder.user.ingameName} Hi! I want to buy: "${itemNameEN}${!item.maxRank || item.maxRank === 0 ? "" : ` (rank ${firstOrder.rank})`}" for ${firstOrder.platinum} platinum. (warframe.market)`;
|
|
51447
|
+
return comment;
|
|
51448
|
+
})() })
|
|
51449
|
+
] });
|
|
51450
|
+
}, "ItemOrderComponent");
|
|
51451
|
+
var RivenOrderComponent = /* @__PURE__ */ __name((item, orders) => {
|
|
51452
|
+
const itemNameCN = item.i18n ? item.i18n["zh-hans"]?.name : void 0;
|
|
51453
|
+
const itemNameEN = item.i18n ? item.i18n["en"]?.name : void 0;
|
|
51454
|
+
const itemThumb = item.i18n ? item.i18n["en"]?.thumb : void 0;
|
|
51455
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: "display:flex; flex-direction: column; font-size: 12px;", children: [
|
|
51456
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("h1", { style: "text-align: center;", children: [
|
|
51457
|
+
itemNameCN,
|
|
51458
|
+
" / ",
|
|
51459
|
+
itemNameEN,
|
|
51460
|
+
" (ID: ",
|
|
51461
|
+
item.slug,
|
|
51462
|
+
")"
|
|
51463
|
+
] }),
|
|
51464
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("ul", { style: "width:100%;", children: orders.map((order) => {
|
|
51465
|
+
return RivenOrderItemComponent(
|
|
51466
|
+
order,
|
|
51467
|
+
itemNameCN,
|
|
51468
|
+
itemNameEN,
|
|
51469
|
+
itemThumb
|
|
51470
|
+
);
|
|
51471
|
+
}) })
|
|
51472
|
+
] });
|
|
51473
|
+
}, "RivenOrderComponent");
|
|
51474
|
+
var RivenOrderItemComponent = /* @__PURE__ */ __name((order, cnName, enName, thumb) => {
|
|
51475
|
+
const itemNameCN = cnName ?? enName;
|
|
51476
|
+
const itemIconLink = thumb ? "https://warframe.market/static/assets/" + thumb : void 0;
|
|
51477
|
+
const ownerAvatarLink = order.owner.avatar ? "https://warframe.market/static/assets/" + order.owner.avatar : void 0;
|
|
51478
|
+
const reputationColor = order.owner.reputation >= 5 ? "#00a96c" : "#739098";
|
|
51479
|
+
const reputationIconLink = order.owner.reputation >= 5 ? "#icon-smile" : "#icon-meh";
|
|
51480
|
+
const statusData = {
|
|
51481
|
+
ingame: ["ONLINE IN GAME", "#634b93"],
|
|
51482
|
+
online: ["ONLINE", "darkgreen"],
|
|
51483
|
+
offline: ["OFFLINE", "darkred"],
|
|
51484
|
+
_: ["UNKNOWN", "grey"]
|
|
51485
|
+
};
|
|
51486
|
+
const status = order.owner.status in statusData ? order.owner.status : "_";
|
|
51487
|
+
const statusText = statusData[status][0];
|
|
51488
|
+
const statusColor = statusData[status][1];
|
|
51489
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: "border: 1px solid gray; margin: 20px; padding: 10px 15px 10px 11px; font-family: 'Lato', sans-serif, Helvetica, Arial; display: flex; flex-direction: column;", children: [
|
|
51490
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: "display: flex; align-items: center; padding-bottom: 10px; min-height: 45px;", children: [
|
|
51491
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
51492
|
+
"img",
|
|
51493
|
+
{
|
|
51494
|
+
src: itemIconLink,
|
|
51495
|
+
style: "height: 30px; width: 30px; object-fit: contain; border-radius: 50%; box-shadow: 0 0 10px 1px rgba(0, 0, 0, .15); vertical-align: middle;"
|
|
51496
|
+
}
|
|
51497
|
+
),
|
|
51498
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
51499
|
+
"span",
|
|
51500
|
+
{
|
|
51501
|
+
id: "title",
|
|
51502
|
+
style: "margin-left: 15px; font-size: 16px; line-height: 16px; font-weight: 700; text-overflow: ellipsis; text-decoration: underline; cursor: pointer;",
|
|
51503
|
+
children: [
|
|
51504
|
+
itemNameCN,
|
|
51505
|
+
" ",
|
|
51506
|
+
order.item.name
|
|
51507
|
+
]
|
|
51508
|
+
}
|
|
51509
|
+
)
|
|
51510
|
+
] }),
|
|
51511
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
51512
|
+
"div",
|
|
51513
|
+
{
|
|
51514
|
+
id: "body",
|
|
51515
|
+
style: "display: flex; flex-wrap: wrap; justify-content: space-between;",
|
|
51516
|
+
children: [
|
|
51517
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { id: "body-left", children: [
|
|
51518
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("ul", { style: "display: flex; padding-top: 5px;", children: order.item.attributes.filter((attr) => attr.positive).map(RivenAttributeComponent) }),
|
|
51519
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("ul", { style: "display: flex; width: 100%; padding-top: 5px;", children: order.item.attributes.filter((attr) => !attr.positive).map(RivenAttributeComponent) }),
|
|
51520
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("ul", { style: "display: flex; padding: 5px 0; font-size: 12px;", children: [
|
|
51521
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("li", { style: "margin-right: 10px;", children: [
|
|
51522
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: "段位 " }),
|
|
51523
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("b", { children: order.item.mastery_level })
|
|
51524
|
+
] }),
|
|
51525
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("li", { style: "margin-right: 10px;", children: [
|
|
51526
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: "等级: " }),
|
|
51527
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("b", { children: order.item.mod_rank })
|
|
51528
|
+
] }),
|
|
51529
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("li", { style: "margin-right: 10px;", children: [
|
|
51530
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: "循环: " }),
|
|
51531
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("b", { children: order.item.re_rolls })
|
|
51532
|
+
] }),
|
|
51533
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("li", { style: "margin-right: 10px;", children: [
|
|
51534
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: "极性: " }),
|
|
51535
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("b", { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
51536
|
+
"svg",
|
|
51537
|
+
{
|
|
51538
|
+
viewBox: "0 0 18 18",
|
|
51539
|
+
style: "\n color: rgb(64 64 64 / 75%);\n height: 1em;\n width: 1em;\n vertical-align: -.125em;\n fill: currentcolor;",
|
|
51540
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("use", { href: `#icon-${order.item.polarity}` })
|
|
51541
|
+
}
|
|
51542
|
+
) })
|
|
51543
|
+
] })
|
|
51544
|
+
] })
|
|
51545
|
+
] }),
|
|
51546
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
51547
|
+
"div",
|
|
51548
|
+
{
|
|
51549
|
+
id: "body-right",
|
|
51550
|
+
style: "display: flex; flex-direction: column; justify-content: center; padding-left: 10px;",
|
|
51551
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: "display: flex; justify-content: flex-end; font-size: 16px;", children: [
|
|
51552
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: "售价: " }),
|
|
51553
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: "padding-left: 5px; line-height: 1.5;", children: [
|
|
51554
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("b", { children: order.starting_price }),
|
|
51555
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
51556
|
+
"svg",
|
|
51557
|
+
{
|
|
51558
|
+
viewBox: "0 0 215.535 215.535",
|
|
51559
|
+
style: "\n margin: 0 0 0 3px;\n color: rgb(64 64 64 / 75%);\n height: 1em;\n width: 1em;\n vertical-align: -.125em;\n fill: currentcolor;",
|
|
51560
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("use", { href: "#icon-platinum" })
|
|
51561
|
+
}
|
|
51562
|
+
)
|
|
51563
|
+
] })
|
|
51564
|
+
] })
|
|
51565
|
+
}
|
|
51566
|
+
)
|
|
51567
|
+
]
|
|
51568
|
+
}
|
|
51569
|
+
),
|
|
51570
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
51571
|
+
"div",
|
|
51572
|
+
{
|
|
51573
|
+
id: "footer",
|
|
51574
|
+
style: "display: flex; margin-top: 10px; line-height: 1.5;",
|
|
51575
|
+
children: [
|
|
51576
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: "display: flex;", children: [
|
|
51577
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
51578
|
+
"img",
|
|
51579
|
+
{
|
|
51580
|
+
src: ownerAvatarLink,
|
|
51581
|
+
style: "height: 20px; width: 20px; object-fit: contain; border-radius: 50%; box-shadow: 0 0 10px 1px rgba(0, 0, 0, .15); vertical-align: middle;"
|
|
51582
|
+
}
|
|
51583
|
+
),
|
|
51584
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: "margin-left: 5px;", children: order.owner.ingame_name })
|
|
51585
|
+
] }),
|
|
51586
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
51587
|
+
"div",
|
|
51588
|
+
{
|
|
51589
|
+
style: `margin-left: 10px; color:${statusColor ?? "gray"}; font-size: 12px;`,
|
|
51590
|
+
children: statusText
|
|
51591
|
+
}
|
|
51592
|
+
),
|
|
51593
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: `margin-left: 10px; color:${reputationColor};`, children: [
|
|
51594
|
+
order.owner.reputation,
|
|
51595
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
51596
|
+
"svg",
|
|
51597
|
+
{
|
|
51598
|
+
viewBox: "0 0 496 512",
|
|
51599
|
+
style: "margin-left: 5px; margin-top: -2px; overflow:hidden; height: 1em; width: 1em; vertical-align: -.125em; fill: currentcolor;",
|
|
51600
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("use", { href: reputationIconLink })
|
|
51601
|
+
}
|
|
51602
|
+
)
|
|
51603
|
+
] })
|
|
51604
|
+
]
|
|
51605
|
+
}
|
|
51606
|
+
)
|
|
51607
|
+
] });
|
|
51608
|
+
}, "RivenOrderItemComponent");
|
|
51609
|
+
var RivenAttributeComponent = /* @__PURE__ */ __name((attr, index) => {
|
|
51610
|
+
const attrInfo = attr.attribute;
|
|
51611
|
+
const attrName = attrInfo.i18n["zh-hans"].name;
|
|
51612
|
+
const attrValuePrefix = attrInfo.unit === "multiply" ? "x" : "";
|
|
51613
|
+
const unitSuffixMap = {
|
|
51614
|
+
percent: "%",
|
|
51615
|
+
second: "s",
|
|
51616
|
+
multiply: ""
|
|
51617
|
+
};
|
|
51618
|
+
const attrValueSuffix = unitSuffixMap[attrInfo.unit] || "";
|
|
51619
|
+
const attrValue = attrValuePrefix + attr.value + attrValueSuffix;
|
|
51620
|
+
const positiveColors = [
|
|
51621
|
+
"--color_rgb_attribute_background_first",
|
|
51622
|
+
"--color_rgb_attribute_background_second",
|
|
51623
|
+
"--color_rgb_attribute_background_third"
|
|
51624
|
+
];
|
|
51625
|
+
const color = attr.positive ? positiveColors[index] : "--color_rgb_attribute_background_negative";
|
|
51626
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
51627
|
+
"li",
|
|
51628
|
+
{
|
|
51629
|
+
style: `
|
|
51630
|
+
border: 1px solid rgb(var(${color})/50%);
|
|
51631
|
+
background-color: rgb(var(${color})/10%);
|
|
51632
|
+
color: rgb(var(${color}));
|
|
51633
|
+
padding: 2px 10px;
|
|
51634
|
+
border-radius: 4px;
|
|
51635
|
+
margin-right: 5px;
|
|
51636
|
+
font-size: 14px;
|
|
51637
|
+
line-height: 1.5;`,
|
|
51638
|
+
children: [
|
|
51639
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("b", { children: [
|
|
51640
|
+
attr.positive && !attrValuePrefix && attr.value > 0 ? "+" : "",
|
|
51641
|
+
attrValue,
|
|
51642
|
+
" "
|
|
51643
|
+
] }),
|
|
51644
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: attrName })
|
|
51645
|
+
]
|
|
51646
|
+
}
|
|
51647
|
+
);
|
|
51648
|
+
}, "RivenAttributeComponent");
|
|
51649
|
+
|
|
51650
|
+
// src/commands/wfm.ts
|
|
51651
|
+
var wmCommand = /* @__PURE__ */ __name(async (action, input) => {
|
|
51652
|
+
const result = await getItemOrders(input);
|
|
51653
|
+
if (!result) {
|
|
51654
|
+
return `Item not found: ${input}`;
|
|
51655
|
+
}
|
|
51656
|
+
return await generateImageOutput(
|
|
51657
|
+
action.session.app.puppeteer,
|
|
51658
|
+
ItemOrderComponent(result.item, result.orders)
|
|
51659
|
+
);
|
|
51660
|
+
}, "wmCommand");
|
|
51661
|
+
var wmrCommand = /* @__PURE__ */ __name(async (action, input) => {
|
|
51662
|
+
const result = await getRivenOrders(input);
|
|
51663
|
+
if (!result) {
|
|
51664
|
+
return `Item not found: ${input}`;
|
|
51665
|
+
}
|
|
51666
|
+
return await generateImageOutput(
|
|
51667
|
+
action.session.app.puppeteer,
|
|
51668
|
+
RivenOrderComponent(result.item, result.orders)
|
|
51669
|
+
);
|
|
51670
|
+
}, "wmrCommand");
|
|
51069
51671
|
|
|
51070
51672
|
// src/hooks/on-ready.ts
|
|
51071
51673
|
var onReadyHandler = /* @__PURE__ */ __name(async () => {
|
|
51072
51674
|
await wmOnReady();
|
|
51073
|
-
await wfOnReady();
|
|
51074
51675
|
}, "onReadyHandler");
|
|
51075
51676
|
|
|
51076
51677
|
// src/index.ts
|
|
@@ -51090,33 +51691,27 @@ __name(apply, "apply");
|
|
|
51090
51691
|
var setupHooks = /* @__PURE__ */ __name((ctx) => {
|
|
51091
51692
|
ctx.on("message", (session) => {
|
|
51092
51693
|
if (ctx.config.developerMode) {
|
|
51093
|
-
ctx.logger.info(
|
|
51094
|
-
Koishi recieved message: ${session.content}
|
|
51095
|
-
|
|
51096
|
-
|
|
51097
|
-
|
|
51098
|
-
});
|
|
51099
|
-
ctx.on("ready", onReadyHandler);
|
|
51100
|
-
}, "setupHooks");
|
|
51101
|
-
var setupCommands = /* @__PURE__ */ __name((ctx) => {
|
|
51102
|
-
ctx.command("wm <itemId:text>", "请用wmi替代").action((a, b) => {
|
|
51103
|
-
if (ctx.config.developerMode) {
|
|
51104
|
-
ctx.logger.info(`WFM Plugin received command wm: '${b}'`);
|
|
51105
|
-
}
|
|
51106
|
-
return wmCommand(a, b);
|
|
51107
|
-
});
|
|
51108
|
-
ctx.command("wmr <itemId:text>", "查询wm的紫卡价格").action((a, b) => {
|
|
51109
|
-
if (ctx.config.developerMode) {
|
|
51110
|
-
ctx.logger.info(`WFM Plugin received command wmr: '${b}'`);
|
|
51694
|
+
ctx.logger.info(
|
|
51695
|
+
`Koishi recieved message: ${session.content}
|
|
51696
|
+
Platform: ${session.platform}
|
|
51697
|
+
User: ${session.author.name}`
|
|
51698
|
+
);
|
|
51111
51699
|
}
|
|
51112
|
-
return wmrCommand(a, b);
|
|
51113
51700
|
});
|
|
51114
|
-
ctx.
|
|
51701
|
+
ctx.on("command/before-execute", (action) => {
|
|
51115
51702
|
if (ctx.config.developerMode) {
|
|
51116
|
-
ctx.logger.info(
|
|
51703
|
+
ctx.logger.info(
|
|
51704
|
+
`WFM Plugin received command ${action.command?.name}
|
|
51705
|
+
arguments: ${JSON.stringify(action.args)}`
|
|
51706
|
+
);
|
|
51117
51707
|
}
|
|
51118
|
-
return wmCommand(a, b);
|
|
51119
51708
|
});
|
|
51709
|
+
ctx.on("ready", onReadyHandler);
|
|
51710
|
+
}, "setupHooks");
|
|
51711
|
+
var setupCommands = /* @__PURE__ */ __name((ctx) => {
|
|
51712
|
+
ctx.command("wm <itemId:text>", "请使用wmi替代").action(wmCommand);
|
|
51713
|
+
ctx.command("wmr <itemId:text>", "查询wm的紫卡价格").action(wmrCommand);
|
|
51714
|
+
ctx.command("wmi <msg:text>", "查询wm的物品价格").action(wmCommand);
|
|
51120
51715
|
ctx.command("arbitration [day:number]", "近期高价值仲裁任务").alias("arbi").alias("仲裁").alias("仲裁表").action(arbitrationCommand);
|
|
51121
51716
|
ctx.command("fissure", "当前虚空裂隙").alias("裂缝").alias("裂隙").action(fissureCommand);
|
|
51122
51717
|
ctx.command("spfissure", "当前钢铁之路虚空裂隙").alias("钢铁裂缝").alias("钢铁裂隙").action(steelPathFissureCommand);
|
|
@@ -51125,12 +51720,16 @@ var setupCommands = /* @__PURE__ */ __name((ctx) => {
|
|
|
51125
51720
|
ctx.command("environment", "当前各区域状态").alias("env").alias("平原").alias("地球").alias("金星").alias("夜灵").alias("夜灵平野").alias("奥布山谷").action(environmentCommand);
|
|
51126
51721
|
ctx.command("weekly", "周常任务").alias("周常").alias("科研").alias("时光科研").alias("深层科研").alias("执行官").action(weeklyCommand);
|
|
51127
51722
|
ctx.command("circuit", "本周回廊战甲及灵化之源").alias("灵化之源").alias("灵化").action(circuitCommand);
|
|
51128
|
-
ctx.command("lichc", "c系玄骸武器", { hidden: true }).action(inDevelopment);
|
|
51129
|
-
ctx.command("lichi", "i系玄骸武器", { hidden: true }).action(inDevelopment);
|
|
51130
51723
|
ctx.command("riven <img:image>", "分析紫卡截图").action((a, b) => {
|
|
51131
51724
|
return rivenCommand(a, b, ctx.config.ocrAPISecret);
|
|
51132
51725
|
});
|
|
51726
|
+
ctx.command(
|
|
51727
|
+
"rivenstat <weaponType:string> <statType:string> <disposition:number>",
|
|
51728
|
+
"获取紫卡数值范围"
|
|
51729
|
+
).usage("武器类型: 步枪, 手枪, 霰弹枪, 近战, Archwing枪械\n词条类型: 2, 3, 21, 31").example("rivenstat 步枪 31 0.7").alias("紫卡数值").action(rivenStatCommand);
|
|
51133
51730
|
ctx.command("voidtrader", "虚空商人").alias("虚空商人").alias("奸商").action(voidtraderCommand);
|
|
51731
|
+
ctx.command("lichc", "c系玄骸武器", { hidden: true }).action(inDevelopment);
|
|
51732
|
+
ctx.command("lichi", "i系玄骸武器", { hidden: true }).action(inDevelopment);
|
|
51134
51733
|
}, "setupCommands");
|
|
51135
51734
|
var inDevelopment = /* @__PURE__ */ __name(() => {
|
|
51136
51735
|
return "功能暂未开放";
|