genshin-world 4.1.2 → 4.2.0
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/package.json +8 -8
- package/dist/ReactionType-BBSdxyO3.js +0 -47
- package/dist/addKitEffect-DBqTfm_3.js +0 -17
- package/dist/ainoKit-Dy3vTp3B.js +0 -28
- package/dist/albedoKit-CU5N1Hnm.js +0 -43
- package/dist/alhaithamKit-Bhs-coX9.js +0 -212
- package/dist/aloyKit-C7x_Jf16.js +0 -32
- package/dist/amberKit-BO7ZAQgU.js +0 -38
- package/dist/arlecchinoKit-DJawwVVl.js +0 -4
- package/dist/ayakaKit-Bu_QuYsR.js +0 -26
- package/dist/ayatoKit-BXZNajk7.js +0 -108
- package/dist/baizhuKit-8_4IzZ3A.js +0 -33
- package/dist/barbaraKit-B5DpLyHJ.js +0 -58
- package/dist/beidouKit-sQUahtIk.js +0 -59
- package/dist/bennettKit-Cr-zZ_25.js +0 -66
- package/dist/candaceKit-BUs_wwFU.js +0 -84
- package/dist/characterPack-YAEqbhAX.d.ts +0 -116
- package/dist/characterPack-zycIUHje.js +0 -641
- package/dist/characterPack.d.ts +0 -2
- package/dist/characterPack.js +0 -1
- package/dist/charlotteKit-BOZiCPEb.js +0 -90
- package/dist/chascaKit-C1Csj0Yf.js +0 -4
- package/dist/chevreuseKit-DDHga8Tj.js +0 -20
- package/dist/chioriKit-CxRUSHNw.js +0 -28
- package/dist/chongyunKit-jrWQKRkG.js +0 -104
- package/dist/citlaliKit-sv7XrzVx.js +0 -4
- package/dist/clorindeKit-DxtRn_To.js +0 -4
- package/dist/colleiKit-CO_n9qra.js +0 -28
- package/dist/columbinaKit-DrW0EvqN.js +0 -31
- package/dist/constants--ARZpp1u.js +0 -49
- package/dist/constants-BqrUOf2M.js +0 -48
- package/dist/constants-CSFiwyHy.js +0 -46
- package/dist/createWindriseGroundPaint-BmZkGq-r.js +0 -295
- package/dist/cynoKit-DpfT5dmS.js +0 -179
- package/dist/dahliaKit-B8fOPvvi.js +0 -16
- package/dist/dehyaKit-42tyEI0Z.js +0 -4
- package/dist/dilucKit-EwLUSPgs.js +0 -63
- package/dist/dionaKit-89B1hwYL.js +0 -48
- package/dist/doriKit-G9XTwwCP.js +0 -24
- package/dist/durinKit-BIYdUkbh.js +0 -49
- package/dist/emilieKit-0b2vhNtl.js +0 -21
- package/dist/escoffierKit-Da5UAvAF.js +0 -48
- package/dist/eulaKit-DAENHIEx.js +0 -129
- package/dist/faruzanKit-BcW6D-N3.js +0 -71
- package/dist/fischlKit-Bm8vNmuV.js +0 -98
- package/dist/flinsKit-GUnFJdUg.js +0 -9
- package/dist/freminetKit-CpwsVmTT.js +0 -4
- package/dist/furinaKit-BREisAdJ.js +0 -279
- package/dist/gamingKit-D9ekWGMJ.js +0 -4
- package/dist/ganyuKit-DLJa1t-Z.js +0 -74
- package/dist/gorouKit-DkpaGNA8.js +0 -94
- package/dist/heizouKit-B6kRXVCP.js +0 -35
- package/dist/huTaoKit-drjrzLjf.js +0 -58
- package/dist/iansanKit-RNjD9nSq.js +0 -4
- package/dist/ifaKit-CXWxCOPI.js +0 -4
- package/dist/illugaKit-BFtXIf3P.js +0 -4
- package/dist/index-DQB91Tfq.d.ts +0 -19820
- package/dist/index.d.ts +0 -4
- package/dist/index.js +0 -29218
- package/dist/ineffaKit-3J0FJo2E.js +0 -51
- package/dist/ittoKit-CfwXkR0g.js +0 -112
- package/dist/jahodaKit-C1sdSDfr.js +0 -97
- package/dist/jeanKit-Do8vx5Kp.js +0 -56
- package/dist/kachinaKit-DWLNDpgO.js +0 -4
- package/dist/kaeyaKit-DU8Df4RE.js +0 -14
- package/dist/kavehKit-BWoAaKs4.js +0 -9
- package/dist/kazuhaKit-C5gn8iGg.js +0 -55
- package/dist/keqingKit-uGsb_p7t.js +0 -12
- package/dist/kinichKit-Dp3lNUJt.js +0 -22
- package/dist/kiraraKit-CCAGXouk.js +0 -43
- package/dist/kleeKit-BzcJLC2i.js +0 -48
- package/dist/kokomiKit-DBdTlTDr.js +0 -42
- package/dist/kujouSaraKit-DDE-24jd.js +0 -56
- package/dist/kukiKit-DcARldP9.js +0 -59
- package/dist/lanYanKit-B3lwZ7OW.js +0 -18
- package/dist/laumaKit-DkG-i0rL.js +0 -59
- package/dist/laylaKit-DYtz0tSZ.js +0 -41
- package/dist/linneaKit-DlVhnbGM.js +0 -4
- package/dist/lisaKit-CWUiiam1.js +0 -22
- package/dist/lohenKit-D-uagI_g.js +0 -4
- package/dist/lynetteKit-BnNW81Pm.js +0 -20
- package/dist/lyneyKit-D6yTnfFv.js +0 -19
- package/dist/mavuikaKit-CUC1kHRJ.js +0 -4
- package/dist/mikaKit-C9xDhjJg.js +0 -17
- package/dist/mizukiKit-DY-gHM8N.js +0 -4
- package/dist/monaKit-B748iTEy.js +0 -26
- package/dist/mualaniKit-B-Km_dcQ.js +0 -4
- package/dist/nahidaKit-BGRc-swN.js +0 -4
- package/dist/naviaKit-CHh2VdX3.js +0 -64
- package/dist/neferKit-BTALTTiV.js +0 -4
- package/dist/neuvilletteKit-DAfX_2tC.js +0 -4
- package/dist/nicoleKit-BVjL7LI0.js +0 -4
- package/dist/nilouKit-BgM4u-hg.js +0 -52
- package/dist/ningguangKit-N88BhNb_.js +0 -105
- package/dist/noelleKit-DDewnuJ9.js +0 -48
- package/dist/ororonKit-DiAd2dlh.js +0 -86
- package/dist/pruneKit-CHkC_OSB.js +0 -4
- package/dist/qiqiKit-DCtsriE7.js +0 -88
- package/dist/raidenKit-BBWMmPFn.js +0 -144
- package/dist/razorKit-CBgdHYic.js +0 -90
- package/dist/readCharacterAvatar-C7FufK7J.js +0 -292
- package/dist/rosariaKit-D_RDXpLp.js +0 -29
- package/dist/save-CEbj1mOx.js +0 -854
- package/dist/save.d.ts +0 -2
- package/dist/save.js +0 -1
- package/dist/sayuKit-Hnv4iA3_.js +0 -35
- package/dist/sceneExport-BZaF05K-.d.ts +0 -70
- package/dist/sceneExport-DiiIi0PM.js +0 -27
- package/dist/sceneExport.d.ts +0 -2
- package/dist/sceneExport.js +0 -1
- package/dist/sethosKit-8EK04AA4.js +0 -4
- package/dist/shenheKit-DqrG2I4S.js +0 -50
- package/dist/sigewinneKit-CYJyadTr.js +0 -10
- package/dist/skirkKit-BDjoFGAq.js +0 -10
- package/dist/style.css +0 -3612
- package/dist/sucroseKit-DF0jcI2y.js +0 -101
- package/dist/tartagliaKit-Bbtww18S.js +0 -136
- package/dist/terrainTileWorker.d.ts +0 -1
- package/dist/terrainTileWorker.js +0 -81
- package/dist/thomaKit-Zm5AJ9Fm.js +0 -64
- package/dist/tighnariKit-CSa_Yqpp.js +0 -4
- package/dist/varesaKit-CMXLbBv9.js +0 -4
- package/dist/varkaKit-C8_HlTVH.js +0 -4
- package/dist/ventiKit-BcQkbI-z.js +0 -52
- package/dist/wandererKit-CQM691sn.js +0 -9
- package/dist/wriothesleyKit-CBTnYlOy.js +0 -4
- package/dist/xianglingKit-BPQN7cxU.js +0 -108
- package/dist/xianyunKit-CVhuYBde.js +0 -4
- package/dist/xiaoKit-BDI_SODG.js +0 -90
- package/dist/xilonenKit-YAVOPRwm.js +0 -4
- package/dist/xingqiuKit-Cv8JYeYO.js +0 -106
- package/dist/xinyanKit-CffF-Er0.js +0 -120
- package/dist/yaeMikoKit-xAKYm2K6.js +0 -44
- package/dist/yanfeiKit-C6elnkmn.js +0 -86
- package/dist/yaoyaoKit-CaPIIp-i.js +0 -4
- package/dist/yelanKit-Da0oQ6yu.js +0 -33
- package/dist/yoimiyaKit-DTENWB4y.js +0 -49
- package/dist/yunjinKit-PP4yeyn1.js +0 -22
- package/dist/zhongliKit-uMdKUTP-.js +0 -100
- package/dist/zibaiKit-Dq6mFWSx.js +0 -4
|
@@ -1,641 +0,0 @@
|
|
|
1
|
-
import { l as DATA_FETCH_TIMEOUT_MS } from "./constants-CSFiwyHy.js";
|
|
2
|
-
import { InvalidOperationError, Operation, createEvictingPromiseCache, getResult, takeOne } from "@esposter/shared";
|
|
3
|
-
import { GameLanguage, GameTextKey } from "genshin-text";
|
|
4
|
-
import "vue";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
//#region src/services/character/getCharacterNameKey.ts
|
|
7
|
-
const getCharacterNameKey = (name) => name.normalize("NFKC").toLowerCase().replaceAll(" ", "");
|
|
8
|
-
//#endregion
|
|
9
|
-
//#region src/services/character/chooseCharacterPackModel.ts
|
|
10
|
-
const chooseCharacterPackModel = async (folder, filePaths, readModelName, readCharacterNames) => {
|
|
11
|
-
const modelPaths = filePaths.filter((filePath) => filePath.toLowerCase().endsWith(".pmx"));
|
|
12
|
-
if (modelPaths.length === 0) throw new InvalidOperationError(Operation.Read, folder, "holds no .pmx model");
|
|
13
|
-
if (modelPaths.length === 1) return takeOne(modelPaths);
|
|
14
|
-
const [characterNames, modelNames] = await Promise.all([readCharacterNames(), Promise.all(modelPaths.map((modelPath) => readModelName(modelPath)))]);
|
|
15
|
-
const characterNameKeys = new Set(characterNames.map((characterName) => getCharacterNameKey(characterName)));
|
|
16
|
-
const namedModelPaths = modelPaths.filter((_modelPath, index) => characterNameKeys.has(getCharacterNameKey(takeOne(modelNames, index))));
|
|
17
|
-
if (namedModelPaths.length !== 1) throw new InvalidOperationError(Operation.Read, folder, `holds several .pmx models, ${namedModelPaths.length} named as its character: ${modelPaths.join(", ")}`);
|
|
18
|
-
return takeOne(namedModelPaths);
|
|
19
|
-
};
|
|
20
|
-
//#endregion
|
|
21
|
-
//#region src/models/artifact/ArtifactSlot.ts
|
|
22
|
-
let ArtifactSlot = /* @__PURE__ */ function(ArtifactSlot) {
|
|
23
|
-
ArtifactSlot["CircletOfLogos"] = "EQUIP_DRESS";
|
|
24
|
-
ArtifactSlot["FlowerOfLife"] = "EQUIP_BRACER";
|
|
25
|
-
ArtifactSlot["GobletOfEonothem"] = "EQUIP_RING";
|
|
26
|
-
ArtifactSlot["PlumeOfDeath"] = "EQUIP_NECKLACE";
|
|
27
|
-
ArtifactSlot["SandsOfEon"] = "EQUIP_SHOES";
|
|
28
|
-
return ArtifactSlot;
|
|
29
|
-
}({});
|
|
30
|
-
//#endregion
|
|
31
|
-
//#region src/models/character/Attribute.ts
|
|
32
|
-
let Attribute = /* @__PURE__ */ function(Attribute) {
|
|
33
|
-
Attribute["AnemoDamageBonus"] = "FIGHT_PROP_WIND_ADD_HURT";
|
|
34
|
-
Attribute["AnemoResistance"] = "FIGHT_PROP_WIND_SUB_HURT";
|
|
35
|
-
Attribute["Attack"] = "FIGHT_PROP_ATTACK";
|
|
36
|
-
Attribute["AttackPercent"] = "FIGHT_PROP_ATTACK_PERCENT";
|
|
37
|
-
Attribute["BaseAttack"] = "FIGHT_PROP_BASE_ATTACK";
|
|
38
|
-
Attribute["BaseDefense"] = "FIGHT_PROP_BASE_DEFENSE";
|
|
39
|
-
Attribute["BaseHealth"] = "FIGHT_PROP_BASE_HP";
|
|
40
|
-
Attribute["CriticalDamage"] = "FIGHT_PROP_CRITICAL_HURT";
|
|
41
|
-
Attribute["CriticalRate"] = "FIGHT_PROP_CRITICAL";
|
|
42
|
-
Attribute["CryoDamageBonus"] = "FIGHT_PROP_ICE_ADD_HURT";
|
|
43
|
-
Attribute["CryoResistance"] = "FIGHT_PROP_ICE_SUB_HURT";
|
|
44
|
-
Attribute["Defense"] = "FIGHT_PROP_DEFENSE";
|
|
45
|
-
Attribute["DefensePercent"] = "FIGHT_PROP_DEFENSE_PERCENT";
|
|
46
|
-
Attribute["DendroDamageBonus"] = "FIGHT_PROP_GRASS_ADD_HURT";
|
|
47
|
-
Attribute["DendroResistance"] = "FIGHT_PROP_GRASS_SUB_HURT";
|
|
48
|
-
Attribute["ElectroDamageBonus"] = "FIGHT_PROP_ELEC_ADD_HURT";
|
|
49
|
-
Attribute["ElectroResistance"] = "FIGHT_PROP_ELEC_SUB_HURT";
|
|
50
|
-
Attribute["ElementalMastery"] = "FIGHT_PROP_ELEMENT_MASTERY";
|
|
51
|
-
Attribute["EnergyRecharge"] = "FIGHT_PROP_CHARGE_EFFICIENCY";
|
|
52
|
-
Attribute["GeoDamageBonus"] = "FIGHT_PROP_ROCK_ADD_HURT";
|
|
53
|
-
Attribute["GeoResistance"] = "FIGHT_PROP_ROCK_SUB_HURT";
|
|
54
|
-
Attribute["HealingBonus"] = "FIGHT_PROP_HEAL_ADD";
|
|
55
|
-
Attribute["Health"] = "FIGHT_PROP_HP";
|
|
56
|
-
Attribute["HealthPercent"] = "FIGHT_PROP_HP_PERCENT";
|
|
57
|
-
Attribute["HydroDamageBonus"] = "FIGHT_PROP_WATER_ADD_HURT";
|
|
58
|
-
Attribute["HydroResistance"] = "FIGHT_PROP_WATER_SUB_HURT";
|
|
59
|
-
Attribute["IncomingHealingBonus"] = "FIGHT_PROP_HEALED_ADD";
|
|
60
|
-
Attribute["PhysicalDamageBonus"] = "FIGHT_PROP_PHYSICAL_ADD_HURT";
|
|
61
|
-
Attribute["PhysicalResistance"] = "FIGHT_PROP_PHYSICAL_SUB_HURT";
|
|
62
|
-
Attribute["PyroDamageBonus"] = "FIGHT_PROP_FIRE_ADD_HURT";
|
|
63
|
-
Attribute["PyroResistance"] = "FIGHT_PROP_FIRE_SUB_HURT";
|
|
64
|
-
Attribute["ShieldStrength"] = "FIGHT_PROP_SHIELD_COST_MINUS_RATIO";
|
|
65
|
-
return Attribute;
|
|
66
|
-
}({});
|
|
67
|
-
const Attributes = Object.values(Attribute);
|
|
68
|
-
//#endregion
|
|
69
|
-
//#region src/models/character/CombatTalent.ts
|
|
70
|
-
let CombatTalent = /* @__PURE__ */ function(CombatTalent) {
|
|
71
|
-
CombatTalent["ElementalBurst"] = "ElementalBurst";
|
|
72
|
-
CombatTalent["ElementalSkill"] = "ElementalSkill";
|
|
73
|
-
CombatTalent["NormalAttack"] = "NormalAttack";
|
|
74
|
-
return CombatTalent;
|
|
75
|
-
}({});
|
|
76
|
-
//#endregion
|
|
77
|
-
//#region src/services/character/constants.ts
|
|
78
|
-
const ARTIFACT_SLOT_ORDER = [
|
|
79
|
-
"EQUIP_BRACER",
|
|
80
|
-
"EQUIP_NECKLACE",
|
|
81
|
-
"EQUIP_SHOES",
|
|
82
|
-
"EQUIP_RING",
|
|
83
|
-
"EQUIP_DRESS"
|
|
84
|
-
];
|
|
85
|
-
const COMBAT_TALENT_ORDER = [
|
|
86
|
-
"NormalAttack",
|
|
87
|
-
"ElementalSkill",
|
|
88
|
-
"ElementalBurst"
|
|
89
|
-
];
|
|
90
|
-
const TALENT_START_LEVEL = 1;
|
|
91
|
-
const CHARACTER_PACK_INDEX_PATH = "index.json";
|
|
92
|
-
const CHARACTER_PACK_STORE_NAME = "genshin-character-packs";
|
|
93
|
-
const CHARACTER_PACK_STORE_FILES_NAME = "files";
|
|
94
|
-
const CHARACTER_PACK_STORE_VERSION = 1;
|
|
95
|
-
const MACOS_RESOURCE_FORK_FOLDER = "__MACOSX/";
|
|
96
|
-
const CHARACTER_MODEL_PATH = "model.pmx";
|
|
97
|
-
const CHARACTER_TERMS_PATH = "terms.txt";
|
|
98
|
-
const CHARACTER_TERMS_FILE_NAMES = [
|
|
99
|
-
"利用規約",
|
|
100
|
-
"readme",
|
|
101
|
-
"使用说明",
|
|
102
|
-
"规约",
|
|
103
|
-
"规则",
|
|
104
|
-
"terms"
|
|
105
|
-
];
|
|
106
|
-
const CHARACTER_TERMS_NOT_JAPANESE_REGEX = /[\uE000-\uF8FF\uFF61-\uFF9F]/u;
|
|
107
|
-
const CHARACTER_PACK_MODEL_NAME_LANGUAGES = [
|
|
108
|
-
GameLanguage.ChineseSimplified,
|
|
109
|
-
GameLanguage.English,
|
|
110
|
-
GameLanguage.Japanese
|
|
111
|
-
];
|
|
112
|
-
const CHARACTER_PACK_FETCH_TIMEOUT_MS = 6e4;
|
|
113
|
-
const TRAVELER_CHARACTER_ID = 10000007;
|
|
114
|
-
const ADVANCED_ATTRIBUTE_GAME_TEXT_KEYS = [
|
|
115
|
-
["FIGHT_PROP_CRITICAL", GameTextKey.AttributeCriticalRate],
|
|
116
|
-
["FIGHT_PROP_CRITICAL_HURT", GameTextKey.AttributeCriticalDamage],
|
|
117
|
-
["FIGHT_PROP_HEAL_ADD", GameTextKey.AttributeHealingBonus],
|
|
118
|
-
["FIGHT_PROP_CHARGE_EFFICIENCY", GameTextKey.AttributeEnergyRecharge]
|
|
119
|
-
];
|
|
120
|
-
const ELEMENTAL_ATTRIBUTE_GAME_TEXT_KEYS = [
|
|
121
|
-
["FIGHT_PROP_FIRE_ADD_HURT", GameTextKey.AttributePyroDamageBonus],
|
|
122
|
-
["FIGHT_PROP_WATER_ADD_HURT", GameTextKey.AttributeHydroDamageBonus],
|
|
123
|
-
["FIGHT_PROP_GRASS_ADD_HURT", GameTextKey.AttributeDendroDamageBonus],
|
|
124
|
-
["FIGHT_PROP_ELEC_ADD_HURT", GameTextKey.AttributeElectroDamageBonus],
|
|
125
|
-
["FIGHT_PROP_WIND_ADD_HURT", GameTextKey.AttributeAnemoDamageBonus],
|
|
126
|
-
["FIGHT_PROP_ICE_ADD_HURT", GameTextKey.AttributeCryoDamageBonus],
|
|
127
|
-
["FIGHT_PROP_ROCK_ADD_HURT", GameTextKey.AttributeGeoDamageBonus],
|
|
128
|
-
["FIGHT_PROP_PHYSICAL_ADD_HURT", GameTextKey.AttributePhysicalDamageBonus]
|
|
129
|
-
];
|
|
130
|
-
const WHOLE_ATTRIBUTES = [
|
|
131
|
-
"FIGHT_PROP_BASE_ATTACK",
|
|
132
|
-
"FIGHT_PROP_BASE_DEFENSE",
|
|
133
|
-
"FIGHT_PROP_BASE_HP",
|
|
134
|
-
"FIGHT_PROP_ATTACK",
|
|
135
|
-
"FIGHT_PROP_DEFENSE",
|
|
136
|
-
"FIGHT_PROP_HP",
|
|
137
|
-
"FIGHT_PROP_ELEMENT_MASTERY"
|
|
138
|
-
];
|
|
139
|
-
//#endregion
|
|
140
|
-
//#region src/services/character/chooseCharacterTermsFile.ts
|
|
141
|
-
const chooseCharacterTermsFile = (folder, filePaths) => {
|
|
142
|
-
const [termsFile] = filePaths.flatMap((filePath) => {
|
|
143
|
-
const parts = filePath.split("/");
|
|
144
|
-
const name = (parts.at(-1) ?? "").normalize("NFC").toLowerCase();
|
|
145
|
-
if (!name.endsWith(".txt")) return [];
|
|
146
|
-
const nameIndex = CHARACTER_TERMS_FILE_NAMES.findIndex((termsFileName) => name.includes(termsFileName));
|
|
147
|
-
return nameIndex === -1 ? [] : [{
|
|
148
|
-
depth: parts.length,
|
|
149
|
-
filePath,
|
|
150
|
-
nameIndex
|
|
151
|
-
}];
|
|
152
|
-
}).toSorted((firstTermsFile, secondTermsFile) => firstTermsFile.nameIndex - secondTermsFile.nameIndex || firstTermsFile.depth - secondTermsFile.depth || (firstTermsFile.filePath < secondTermsFile.filePath ? -1 : 1));
|
|
153
|
-
if (termsFile === void 0) throw new InvalidOperationError(Operation.Read, folder, `holds no terms file, a .txt named ${CHARACTER_TERMS_FILE_NAMES.join(", ")}`);
|
|
154
|
-
return termsFile.filePath;
|
|
155
|
-
};
|
|
156
|
-
//#endregion
|
|
157
|
-
//#region src/models/character/CharacterTermsEncoding.ts
|
|
158
|
-
let CharacterTermsEncoding = /* @__PURE__ */ function(CharacterTermsEncoding) {
|
|
159
|
-
CharacterTermsEncoding["Gbk"] = "gbk";
|
|
160
|
-
CharacterTermsEncoding["ShiftJis"] = "shift_jis";
|
|
161
|
-
CharacterTermsEncoding["Utf8"] = "utf8";
|
|
162
|
-
CharacterTermsEncoding["Utf16BigEndian"] = "utf-16be";
|
|
163
|
-
CharacterTermsEncoding["Utf16LittleEndian"] = "utf-16le";
|
|
164
|
-
return CharacterTermsEncoding;
|
|
165
|
-
}({});
|
|
166
|
-
//#endregion
|
|
167
|
-
//#region src/services/character/decodeCharacterTerms.ts
|
|
168
|
-
const getEncodings = (bytes) => {
|
|
169
|
-
if (bytes[0] === 255 && bytes[1] === 254) return ["utf-16le"];
|
|
170
|
-
if (bytes[0] === 254 && bytes[1] === 255) return ["utf-16be"];
|
|
171
|
-
return [
|
|
172
|
-
"utf8",
|
|
173
|
-
"shift_jis",
|
|
174
|
-
"gbk"
|
|
175
|
-
];
|
|
176
|
-
};
|
|
177
|
-
const decodeCharacterTerms = (bytes) => {
|
|
178
|
-
const encodings = getEncodings(bytes);
|
|
179
|
-
for (const encoding of encodings) {
|
|
180
|
-
const text = getResult(() => new TextDecoder(encoding, { fatal: true }).decode(bytes)).unwrapOr(void 0);
|
|
181
|
-
if (text !== void 0 && !(encoding === "shift_jis" && CHARACTER_TERMS_NOT_JAPANESE_REGEX.test(text))) return {
|
|
182
|
-
encoding,
|
|
183
|
-
text
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
throw new InvalidOperationError(Operation.Read, "terms", `decode in none of ${encodings.join(", ")}`);
|
|
187
|
-
};
|
|
188
|
-
//#endregion
|
|
189
|
-
//#region src/models/character/AttributeLine.ts
|
|
190
|
-
const attributeLineSchema = z.object({
|
|
191
|
-
attribute: z.enum(Attribute),
|
|
192
|
-
value: z.number()
|
|
193
|
-
});
|
|
194
|
-
//#endregion
|
|
195
|
-
//#region src/models/character/AscensionPhase.ts
|
|
196
|
-
const ascensionPhaseSchema = z.object({
|
|
197
|
-
attributeLines: z.array(attributeLineSchema),
|
|
198
|
-
maxLevel: z.int().positive()
|
|
199
|
-
});
|
|
200
|
-
//#endregion
|
|
201
|
-
//#region src/models/character/BodyType.ts
|
|
202
|
-
let BodyType = /* @__PURE__ */ function(BodyType) {
|
|
203
|
-
BodyType["MediumFemale"] = "BODY_GIRL";
|
|
204
|
-
BodyType["MediumMale"] = "BODY_BOY";
|
|
205
|
-
BodyType["ShortFemale"] = "BODY_LOLI";
|
|
206
|
-
BodyType["TallFemale"] = "BODY_LADY";
|
|
207
|
-
BodyType["TallMale"] = "BODY_MALE";
|
|
208
|
-
return BodyType;
|
|
209
|
-
}({});
|
|
210
|
-
//#endregion
|
|
211
|
-
//#region src/models/character/GrowAttribute.ts
|
|
212
|
-
const growAttributeSchema = z.object({
|
|
213
|
-
attribute: z.enum(Attribute),
|
|
214
|
-
base: z.number(),
|
|
215
|
-
curve: z.string().min(1)
|
|
216
|
-
});
|
|
217
|
-
//#endregion
|
|
218
|
-
//#region src/models/Element.ts
|
|
219
|
-
let Element = /* @__PURE__ */ function(Element) {
|
|
220
|
-
Element["Anemo"] = "Wind";
|
|
221
|
-
Element["Cryo"] = "Ice";
|
|
222
|
-
Element["Dendro"] = "Grass";
|
|
223
|
-
Element["Electro"] = "Electric";
|
|
224
|
-
Element["Geo"] = "Rock";
|
|
225
|
-
Element["Hydro"] = "Water";
|
|
226
|
-
Element["Pyro"] = "Fire";
|
|
227
|
-
return Element;
|
|
228
|
-
}({});
|
|
229
|
-
const Elements = [
|
|
230
|
-
"Fire",
|
|
231
|
-
"Water",
|
|
232
|
-
"Wind",
|
|
233
|
-
"Electric",
|
|
234
|
-
"Grass",
|
|
235
|
-
"Ice",
|
|
236
|
-
"Rock"
|
|
237
|
-
];
|
|
238
|
-
//#endregion
|
|
239
|
-
//#region src/models/weapon/WeaponType.ts
|
|
240
|
-
let WeaponType = /* @__PURE__ */ function(WeaponType) {
|
|
241
|
-
WeaponType["Bow"] = "WEAPON_BOW";
|
|
242
|
-
WeaponType["Catalyst"] = "WEAPON_CATALYST";
|
|
243
|
-
WeaponType["Claymore"] = "WEAPON_CLAYMORE";
|
|
244
|
-
WeaponType["Polearm"] = "WEAPON_POLE";
|
|
245
|
-
WeaponType["Sword"] = "WEAPON_SWORD_ONE_HAND";
|
|
246
|
-
return WeaponType;
|
|
247
|
-
}({});
|
|
248
|
-
//#endregion
|
|
249
|
-
//#region src/models/character/CharacterData.ts
|
|
250
|
-
const characterDataSchema = z.object({
|
|
251
|
-
ascensionPhases: z.array(ascensionPhaseSchema).min(1),
|
|
252
|
-
attributeLines: z.array(attributeLineSchema),
|
|
253
|
-
bodyType: z.enum(BodyType),
|
|
254
|
-
element: z.enum(Element).optional(),
|
|
255
|
-
growAttributes: z.array(growAttributeSchema),
|
|
256
|
-
id: z.int().positive(),
|
|
257
|
-
initialWeaponId: z.int().positive(),
|
|
258
|
-
nameTextId: z.string().min(1),
|
|
259
|
-
rarity: z.int().min(1).max(5),
|
|
260
|
-
regionId: z.string().min(1).optional(),
|
|
261
|
-
weaponType: z.enum(WeaponType)
|
|
262
|
-
});
|
|
263
|
-
//#endregion
|
|
264
|
-
//#region src/models/data/TextChunk.ts
|
|
265
|
-
const textChunkSchema = z.record(z.string(), z.string());
|
|
266
|
-
//#endregion
|
|
267
|
-
//#region src/services/data/gameDataLock.ts
|
|
268
|
-
const gameDataLock = {
|
|
269
|
-
indexes: {
|
|
270
|
-
"bookBody/ChineseSimplified": "4a4d631ff8fbe3cff0269021ab8883b3f830797786fe1a45fad6a1f17a650bc1",
|
|
271
|
-
"bookBody/ChineseTraditional": "9b3d4f1c30c1b7f68872d0dda48e9a21c4caf21e08acbd8deec2f857fd817d11",
|
|
272
|
-
"bookBody/English": "a534890a2513569f4ba1b82c4e0f75ba970fe11d3fb9171e4c4e16912342303f",
|
|
273
|
-
"bookBody/French": "2fa6d6860a41aa602cfc2dcc96837dcc4a9b49abe2e91a7ce112d19e0de24633",
|
|
274
|
-
"bookBody/German": "292f8b8994725f793cab4e6e08828f61ae74ad7edd0ce223b815a238b8b59d57",
|
|
275
|
-
"bookBody/Indonesian": "ce09728c31c70efcdea65b07276d6baedc69104839c85939c10e9b9dbdcdc9fa",
|
|
276
|
-
"bookBody/Italian": "a0a7b1380c208d45cc38ca4b9e464bf0dc6b320b4ec5d72e58f5b90869de270b",
|
|
277
|
-
"bookBody/Japanese": "e123de3c1daa2e4895f4fc67cb6c8b41d65264ac7585704117b8f3ee3717e526",
|
|
278
|
-
"bookBody/Korean": "333f9803c4b5813b45c5b33286ac68f3ce9d1bed937fb02ed9647ccfc255812f",
|
|
279
|
-
"bookBody/Portuguese": "fe75a9c06150c014ffc42f37286c0b7ea7a8485cc16cdc22dfab83824f8e7878",
|
|
280
|
-
"bookBody/Russian": "9a84be055bb169e754fd6d2cb57471514b7c26ae18af51f74e4121745e4dc818",
|
|
281
|
-
"bookBody/Spanish": "8c3ef65d7d9c5e2b26e47e1b4af6d51cf1c13e6de6358e63725b3cd9f35466ce",
|
|
282
|
-
"bookBody/Thai": "fc620f03c7f29f7dcd6237092eb86c0f3c0014e2835ac9b11f1f1ad72092fcaf",
|
|
283
|
-
"bookBody/Turkish": "f97c739b348fa55d56cab4118719159fe20593379cc1e8b2137bc3abef136991",
|
|
284
|
-
"bookBody/Vietnamese": "7811a568c2251dc8729e6412efc24e92aa0ddd8a63729c178f07989eb7b7bcd0",
|
|
285
|
-
"kitSources": "f761e9ee6faa1a5175d7a78b96bf210a04fdba1087e794bbd71546aa5e56c128",
|
|
286
|
-
"kits": "a51de56d6d7d790cb4a97dab8aefc68657ed871f88f76dcf5472d5b64c25335e",
|
|
287
|
-
"profile/ChineseSimplified": "9ef69a3542ecff7f49d7ae17f5b57989bb38ca234f4f92ab3d75311d81bddf9e",
|
|
288
|
-
"profile/ChineseTraditional": "4b97f98bb87b889c95d951396d031888e86f5c9da51224373ad4ac95fccb9a9e",
|
|
289
|
-
"profile/English": "a00677503ddf6b8a8007e0899731a2b1764daa269c3f51afbb592fb7f1609fa4",
|
|
290
|
-
"profile/French": "fdd9645596332f3c054f8bb84f087edcd30a18764eae2f3beeb6df1184c8b496",
|
|
291
|
-
"profile/German": "7bf2ae6726924dbbe898b9c64a6af2ab9b23a0748499241462f520238d52306e",
|
|
292
|
-
"profile/Indonesian": "5759ddbfcc8085cee4b27fcd8049781403166d29de159703044c8e9efa78766e",
|
|
293
|
-
"profile/Italian": "89fa55a1dbdc641c44f3a4f5eb17445f7645cf6e1f4f06a9454378522da86bac",
|
|
294
|
-
"profile/Japanese": "f9eb79c70de34c2e3223fc89725866268d879d525394b30595d7df3a893fd08d",
|
|
295
|
-
"profile/Korean": "fc39d8bd033d773277ab084701e973907555dc63e2d5aa373cc458eda65b46d7",
|
|
296
|
-
"profile/Portuguese": "944b964406b6ff1b40e8110d382d35a9e8d2b8eff32f8bb93c113669ca73ab8c",
|
|
297
|
-
"profile/Russian": "3ccc973e86b02054de2a505cca6fd7b0cd2482e7ad9a22cc46b1363e8720c703",
|
|
298
|
-
"profile/Spanish": "26fbe8c33a3517eafe74fe058ba0f6bd349d0369a0a42343b42ad71e3bb9ec14",
|
|
299
|
-
"profile/Thai": "3302260454f2abbc6be8799a922a3820be697215283b74cf8846825b549f0c10",
|
|
300
|
-
"profile/Turkish": "3a89929d3593e023a69d649ea34579a5dc4e1388954d2103142c414256718a91",
|
|
301
|
-
"profile/Vietnamese": "6b1887c09b5658cbd65875bb7b8b7200d6facf17bd06055279e16b297c5ddbf1",
|
|
302
|
-
"skillGlyphs": "9632d7cfff053ab34122d767ac3fc3292f975d80c0d559c47f3ec88d0b632eac",
|
|
303
|
-
"talentLabels": "d4963cac5ad36e9fd3ce573d6943cc6a5050ddb19bdbc7431ecd6f41a1c3b6ea",
|
|
304
|
-
"talentMultipliers": "6fcf7b646c8bf474fe54c8aaf7d5a240943b11bb69cdc1e197033d6d41dfd043"
|
|
305
|
-
},
|
|
306
|
-
objects: {
|
|
307
|
-
"achievementText/ChineseSimplified": "8e9c8b105c4f33495b8aa0e74fb9f608f3d150baf84143b45044a519840e5544",
|
|
308
|
-
"achievementText/ChineseTraditional": "91399d3fd8e5fb4088e1954578b879b7ac7a6d28e4bfa63acbadeff19283e714",
|
|
309
|
-
"achievementText/English": "b63c4e2f318c85e84cfdd8a7890dfa945878c21dc8c1408b76f770f5bd3ce33b",
|
|
310
|
-
"achievementText/French": "f3a95288919400a05ba57dc10e34255ac2d22ac3709fc4057500566541d42432",
|
|
311
|
-
"achievementText/German": "7f79e9b6b562d65cc14b2cd166e90fd9785be4abc0e32b799aa6f3e7553f332f",
|
|
312
|
-
"achievementText/Indonesian": "4f058636976cf50b12867faacab48b46a97b3254e2074cadbfd179809d9eb496",
|
|
313
|
-
"achievementText/Italian": "fb74d006a23b43335839a3856194e8cacd7d6165a2874b0cfdfe6945e3e54c98",
|
|
314
|
-
"achievementText/Japanese": "2f8187d05d5d03b2b3db728c6b3ed7d2938605f9bcd648635597df87f41f0c57",
|
|
315
|
-
"achievementText/Korean": "249a6f008121f0ce3b124b5dd531a72b75a15da0b9329e08e2b739805f169479",
|
|
316
|
-
"achievementText/Portuguese": "c37619b2eef42b5e74b9162de0318187b32b94a9f192af5eb1facfaddbfa68c8",
|
|
317
|
-
"achievementText/Russian": "f3ad07bf523f497c42b710034be0d8d411b0d0161804024c15b1935683f6e724",
|
|
318
|
-
"achievementText/Spanish": "17493da65395173c995393db539867224da919fd3f536c45619ba87229af4f54",
|
|
319
|
-
"achievementText/Thai": "8fb693648d1c2d6483c7c3001676e40d12e4906ef46e058c2bc96624192bfe67",
|
|
320
|
-
"achievementText/Turkish": "21361723739bef1c09578056e3088248ad75edf7a3c6dbc63353a3a905033612",
|
|
321
|
-
"achievementText/Vietnamese": "497125f6b06f1e60085e368cfe9d7981a302d95d6b1bc588fc0b34d2cde276f3",
|
|
322
|
-
"achievements/achievements": "7c7f40e4b506ec1e9cfc0f342fc0b7567f15e7bfcde0ab9f4e0463064111ab92",
|
|
323
|
-
"achievements/categories": "7b6613dc8d42dd3ac0e450c689359e4f1468e94a04b09f4e0c6cdf43b8044d13",
|
|
324
|
-
"adventureRank/levels": "f9a8c36124965dc44cb38a6cec97f52c9ac25b000e9f28089487868f5bc8a31c",
|
|
325
|
-
"adventureRank/locks": "d795fde35ab386c57264507adff9bd406d5f722ba8d62d7e166b4859691797bd",
|
|
326
|
-
"adventureRank/worldLevels": "7fe55241a3074470bfe9303d17584eb861dee5aa1d550e1c78a452994bab198e",
|
|
327
|
-
"archive/books": "529e510a246f5ae7965fc5a0db19e4a7658dfedc5e26660cc2f19b469d2c5335",
|
|
328
|
-
"archive/equipment": "08829bfb349b10e9f3d2e55d13acbe49a64b8cf9db9fe144a31f1a26b4711122",
|
|
329
|
-
"archive/geography": "b8210d6c55695478d9149817e1bb0bd033430b5b54894d2280f5b506f02c72e0",
|
|
330
|
-
"archive/livingBeings": "eb647931b54e2ef921dbc4819f37330545d96ca28c1f6a48c83c77233030f744",
|
|
331
|
-
"archive/materials": "b115c5243487fcf6bbe112e20f5ce61b4b249770424c2f1b729549a5d2b6ee97",
|
|
332
|
-
"archive/travelLog": "838306d844315547c5abdd1fc8e622a1c4e7656ba1b9782a539ff7181a1c49c9",
|
|
333
|
-
"archive/tutorials": "b19a764a2b9f3f5d7c955edb6cdad76d95bcd7c89cee0939905ae011613378ae",
|
|
334
|
-
"archiveText/ChineseSimplified": "2695e5e3880941906271b6ba0725299be78050d1eb8b02997f69aaf8d12d9931",
|
|
335
|
-
"archiveText/ChineseTraditional": "f96ccbce9503895c3faa095ff62bd48867da6c79305a9f1fd8406a356ddf764e",
|
|
336
|
-
"archiveText/English": "2a6f0751e7914d6f0a3f49fadedc5cca70284805c967ba2564a4285b06ac92d6",
|
|
337
|
-
"archiveText/French": "f97ce09249fda468feb5252622e6dde5d34e39b2178609fce94648eb5b767b8d",
|
|
338
|
-
"archiveText/German": "b8c1cbbe3a23d5a08bbb048ab9c69d3db1af65ddab211009bf9fd1d5a115b595",
|
|
339
|
-
"archiveText/Indonesian": "2c6d722c698c9b031a009775876b0b83b654c23b64b4e8e0e81581cf441e0c2e",
|
|
340
|
-
"archiveText/Italian": "a6418ead2f147d2e013283394e4e701998c11b32ff96f1b97215b00cae7a6634",
|
|
341
|
-
"archiveText/Japanese": "1289c490520cbb360c854ca0ec448d60e2d08f6c7c5680055fdf2c5c177f3669",
|
|
342
|
-
"archiveText/Korean": "1ceef244416cbd54a15fb109265337f96469c0c00dfb276fea6db065fd72935b",
|
|
343
|
-
"archiveText/Portuguese": "e1c46fcda681c72dcb783d11f65a7c0f3621a668c80dacdc170eae37de244565",
|
|
344
|
-
"archiveText/Russian": "56afdd96a72204b670448beb9b4a698454df6f3a04987e3d1086cc5abd1f96e5",
|
|
345
|
-
"archiveText/Spanish": "1b8aa0937f72c16e02a9db13e86859c60742a3b4b2fd5a61712d2eb41a67ed4c",
|
|
346
|
-
"archiveText/Thai": "1f4c1de09ea35791ddf76c7a275723717e97b057ba56b7978d4a01d94fd8fe89",
|
|
347
|
-
"archiveText/Turkish": "1b2e4bfe9d817469d818d5c70487c302eb0fb1e1ee64867129a180265564c257",
|
|
348
|
-
"archiveText/Vietnamese": "f7cef631d98933b2c67236ce1b51e4da1bc803a07128ffec0a95f2ce9abca6c4",
|
|
349
|
-
"catalogue/catalogue": "7bce4dfdb9f9105474f87ed8d5e756a5fa55e4746b3012699aca249e75fd515d",
|
|
350
|
-
"chests/fontaine": "f22edb339a96d3199a03a96be3d346b74758f0bd54376862f17646ec1482bce1",
|
|
351
|
-
"chests/inazuma": "a059cd7c4da1ddc77227fca2347e66a81304b4796aebdcc1c9ff1ed79dc9d19c",
|
|
352
|
-
"chests/liyue": "8e688ef2b5cc65736ada99b95eed02178a06ec015a1772c1fb5f4a2b1a0af411",
|
|
353
|
-
"chests/mondstadt": "3cf6cd3082aac5063f76149a82efe28e58444e855d387ade0ff4b73152412474",
|
|
354
|
-
"chests/natlan": "068a2b24a7ca9f511f6081415bbe3a648b375726d9ac42918b34ff4af72913d0",
|
|
355
|
-
"chests/nod-krai": "07a88455cb2fa7b890a1766ba2416fa37965353b4d5e281c1dcff32ef3be325b",
|
|
356
|
-
"chests/snezhnaya": "7159627eb01e39aecda86cbb22188bd15da041267b56f4c2e427efc41d04c0a3",
|
|
357
|
-
"chests/sumeru": "0b6f9462c3a4ebcc0a96b719f25bebbdf41d52ef82fb42494716b8cf5e43b67a",
|
|
358
|
-
"commissions/mondstadt": "9a2d2db80cc49e9af39679a920ca1d3a7724ca305ea52127efb5d691e7c96279",
|
|
359
|
-
"cooking/processing": "ee57ac226e5dc4ce64dfb79cf4afdd8ab753ec771f6b76b11a9184169d24e48d",
|
|
360
|
-
"cooking/recipes": "272406135e89f80f2717303441c31fe236e777557355ee93ce765e7074616351",
|
|
361
|
-
"crafting/recipes": "7d2547a58895cc049cf2651217c4909e050ad62e62ade4200900887ee8d58b7e",
|
|
362
|
-
"enemies/kinds": "ca458f41df34b092b9c6da305d9f89cb3b8bde134d59c3efdcee81c91dbde8cb",
|
|
363
|
-
"enemies/levelCurves": "86051813dd8b579aebea20bdfe184f68d22a8cee5249512d910a95d5b66268c8",
|
|
364
|
-
"expeditions/limits": "7ad8f3e4d7b18301179793d164cdfc0ddf795bb95e0f2d78ea18468a67dbd94b",
|
|
365
|
-
"expeditions/mondstadt": "063fc92281db7244280795a3dbe2a52fa5ea3a797e04713c2810be8b778d02ab",
|
|
366
|
-
"exploration/mondstadt": "072e9e55c008a1777955447ea7529b67ec65a46ecc6978d94f1004044b2fca76",
|
|
367
|
-
"fishing/fish": "86d01ff30a9c7f6b3d668bc37db836adfe897b2616167875000da602aaa2e5f7",
|
|
368
|
-
"fishing/points": "625c11eba2b6c36c5298d06adeabecc022bf8eb122345f8360f0b5c8997c1fad",
|
|
369
|
-
"fishing/pools": "101e1002230234d457913c0371c099be11adf9f9e08d58c5eb88ffdbd5be80ce",
|
|
370
|
-
"fishing/rods": "00d03fe91d0fd1c9b58615f1263575860215fe2ce1f66f2c2461687221b79cb5",
|
|
371
|
-
"forging/recipes": "a966346792fd06e53feb6e82bbe683e36a204a48e05f4ffb2fea7ce313eb4cd5",
|
|
372
|
-
"friendship/friendship": "36fa6c56aa02478e691f4f089a46e13608fd6a475ef3d52d7a69aad0171530bc",
|
|
373
|
-
"frostbearingTreePlaces/mondstadt": "06b5f101bcff311a74a7a6e2cbe66fec2bb10ca62aeff54698028ab012e11779",
|
|
374
|
-
"gadgets/gadgets": "6b9c64644372b09dc1d9a1ba1e38bed6977eb6f819f9f9981c9d98548309650a",
|
|
375
|
-
"gathering/fontaine": "3dbd14abdfea600e0d07053d9136484b364896441d20be1f7ae27209151c9d38",
|
|
376
|
-
"gathering/inazuma": "2d3445226d6ea92ba762fa43dde89c3327f7a728bfc9c33f273e97ea8adbe7f0",
|
|
377
|
-
"gathering/items": "3daec2be8486847e476bb547b68149fab7f69232ffe8b9079be749c75ee61b00",
|
|
378
|
-
"gathering/liyue": "91ed99aa148a8a4f7a25c3bd2b3d4052395ce73723752dcf321b7b57a389b760",
|
|
379
|
-
"gathering/mondstadt": "df6166d23f8a5cc20032073cf0ad52942f8e892c8b69da8581ce6ea7090c530f",
|
|
380
|
-
"gathering/natlan": "578f6c711dddeac475912f77908f62ce7ac4a54e6462e6625c634fe978bdc9cf",
|
|
381
|
-
"gathering/nod-krai": "d1d2735f119fae870d98db716e98f0a5fb1238cb45bbcfd6520345ff73557cae",
|
|
382
|
-
"gathering/snezhnaya": "910c99a0af27f08f845511d1646ef63f226880c07167565c0f7d2517292f93d5",
|
|
383
|
-
"gathering/sumeru": "b6e1c773b8effdf46f9ebf4ad04c803f26e0f3c7ad9f838ed7cd8c9328f20c09",
|
|
384
|
-
"gcg/deck1": "b27261a046167ef66f4135f8fadc991d536ecf11dcd449ce87feb26eba0ec188",
|
|
385
|
-
"gcg/deck11002": "d4c01c9a5146aedc995938460d8b0315d07512097b825c9c14627a6f90de065c",
|
|
386
|
-
"gcg/deck11005": "bd6a3f04c7274bb33cfdd2a28ef0f3cb47c09815c5ab9c4c3da8f659e15fa940",
|
|
387
|
-
"gcg/deck2": "4bbd66298fa311382bd7a1ad1ce5533dbd6d7d31bef92ec074e91e97476b53ba",
|
|
388
|
-
"gcg/deck3": "31a59b9a646cb847b9f01f581d19d8fa7849721b544a82d221e49f186476fc54",
|
|
389
|
-
"gcg/deck30111": "315aa6a4c8f64ddc304180de94bfbdeb079d054434692c9bd3e11c00629546b4",
|
|
390
|
-
"gcg/deck30112": "f3f9032b19d1e74a28e8fbf3862e8f3694334159b2b845663fdfe246cea0370b",
|
|
391
|
-
"gcg/deck4": "a97427bbb55f0e599cf3416fd2c249e32354dea482dcdb75464a8150ce6cd2f7",
|
|
392
|
-
"gcg/deck7": "399d4bd918e517a39f8bbffddb8c9089fa48bd641422575fb69f011127b2d955",
|
|
393
|
-
"gcg/games": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a",
|
|
394
|
-
"gcg/standardRule": "000255b49dd59883e3e00b6526e81b95ac74cb8d0a1965e46a6f223a0a2a6634",
|
|
395
|
-
"gcgText/ChineseSimplified": "70d613fa2a50c290c9596c4846fa005dfa7697a420dbaf160ddea85b9f13691f",
|
|
396
|
-
"gcgText/ChineseTraditional": "753b7cfeb53122f1198ff63a605174f913618adf2e24ed41603efb2cf7a33139",
|
|
397
|
-
"gcgText/English": "133d9eec483e3d7ed8f203ab9377eb4a50f2c53a1f511e5ab293237934ce7cc9",
|
|
398
|
-
"gcgText/French": "ea008aeaf48b16501fd863e7a930d25b49eab69ca4d38964c89474c955c5a9f1",
|
|
399
|
-
"gcgText/German": "19d09cf948963b5ccdf04e952e937856243f07b0b80fea845a55302513409761",
|
|
400
|
-
"gcgText/Indonesian": "02c7985c9d96240bb4de27f460be8ea90f352ec4fc8dbcca6ffe339041d29008",
|
|
401
|
-
"gcgText/Italian": "07ebd7e0037f9fd5c1d25bb21762542d183069112d4cccf53eaa6c9d4907eaa9",
|
|
402
|
-
"gcgText/Japanese": "ab9a3bb0a2e36bccd9e09c890c4290e0a07e52225ab6f90de85c4f241c9956b7",
|
|
403
|
-
"gcgText/Korean": "c96cf3a6397faf4ef479392681e971bb9b4c8b7a86119d1809f06b824cc17310",
|
|
404
|
-
"gcgText/Portuguese": "3bcb3d71af67a817661f5f11eeb7e3e17846a1e4e0d1621c64e6365146727ccc",
|
|
405
|
-
"gcgText/Russian": "43df00723345a569d44805e96bfca744a388aee5feb37ae999a605585533a334",
|
|
406
|
-
"gcgText/Spanish": "e1b958aab1c49ec0fb05c17545a6ccc59e9590abfbf3c15a51cfa20b7422066c",
|
|
407
|
-
"gcgText/Thai": "5c828305041dea6003fcdada95f635feee54b3816abd064ae05f41b44ae62c19",
|
|
408
|
-
"gcgText/Turkish": "be13bc62d9c397058c1509f612a525a4bbf4bb931fbc821014c4a5480d6bcb15",
|
|
409
|
-
"gcgText/Vietnamese": "e6d5202bc0c069836451dc8873ecef55d65dc274b1b84c93b9a88136c124e4ee",
|
|
410
|
-
"ground/fontaine": "0589e098b8b75ccd96fb17f6af9689d89a7dbab5753f3cf0cea3db2d90838a61",
|
|
411
|
-
"ground/inazuma": "35121ac9051de32442f58b2c62e732d45236df6cdab9961831a4db80c30fbe72",
|
|
412
|
-
"ground/liyue": "93c700eaf69423a8db42eb5164e12f0138d483c20ebae98025c17ab0e201a95e",
|
|
413
|
-
"ground/mondstadt": "d46c78463b2e6f23e1a3a9ed838470984a492cc632fb7ad600d01a188294cb1a",
|
|
414
|
-
"ground/natlan": "13774d92632d4e9bd5316d236aeb2ee060ab4425f5b7148c32240ec5f87f0d41",
|
|
415
|
-
"ground/nod-krai": "d0d1cdbf36406372996f99b54750c0028ad25f45bf1cc45a303ea8347d8edae0",
|
|
416
|
-
"ground/snezhnaya": "d87923cba3cbeeb391b092d8ed7e826455d8a1871415267e24e8c2940d1429dd",
|
|
417
|
-
"ground/sumeru": "cea11e841e40c2bb7334790ea2675661f6e072cea1f99dd132a24ab5ed4a56c7",
|
|
418
|
-
"ground/windrise": "aa6f10e68b31aaf72c4f6b94fd72caa064e272cc02cd9463ca77f3040e5ceee6",
|
|
419
|
-
"home/blueprints": "14eec1a23adba1a3397456d83471a2d76d8638b414f8a917fd1c2388a54ac74e",
|
|
420
|
-
"home/levels": "ef2801f4ad2be2af8d9eaade9f8a4c9c0f0dcd7e456b3e34cf982269f9314410",
|
|
421
|
-
"hud/interfaceRects": "c5b05d58ec2de204b4a2cc488cb0cbabb2aedad4581601a183456df4e6cdd87e",
|
|
422
|
-
"imaginarium/difficulties": "0e78b6de89bf07e73e684e3572bec8887e881d8c68b1d09df4fbea7c3a41127f",
|
|
423
|
-
"imaginarium/seasons": "ab728a23a886f96814db4955bda8ce5249ae40e33b1221ee505a5a75076db20b",
|
|
424
|
-
"items/materials": "3ec613b2559e2b503f5e5cf91db55ed47d0a2abd02024a3bb7438d7801276048",
|
|
425
|
-
"items/reliquarySets": "d13bda3b504302261a7d3c184304391c64ab8845e2414fe6dc30f834511a8c15",
|
|
426
|
-
"login/ageRating": "877295e10d96634920d9d1583a10141ea730c01f5b1bee4389d712ac28551e3a",
|
|
427
|
-
"login/cloudLayerTextures": "e060aae16bc782fa7a681f087c989f50687ab34d1fa20c58a3b968551d60466e",
|
|
428
|
-
"login/clouds": "dfad60ed52fb22816bcd2de04a589fc3b8ddd9c71e7964498bce013f1a2e5985",
|
|
429
|
-
"login/door": "d8d9e7f1aea8c38cceeeda78f1938cd16cc88741763bb56810da6381964be9ee",
|
|
430
|
-
"login/hulls": "c72a961fd9374f6b5f0a27b55c15b6dacc73824f043b85e9227d5308d888dfb3",
|
|
431
|
-
"login/interfaceClips": "0ca349073f22513062f7789560d7dbeed02581b2ac7a5f2236896f4babc0a9f4",
|
|
432
|
-
"login/interfaceRects": "493e210c8929aaf1dfe176c3cb3964c3fc338fcdfc7ade83050ab43a40b7f7e5",
|
|
433
|
-
"login/music": "060df2b95844a09d4ab3f283f95cecd91e177da1b64594311a5d998f69af187c",
|
|
434
|
-
"login/paving": "a92ca505bf76aca8793b1df2e553f09b29be291878b92a25e5aaa923591d5753",
|
|
435
|
-
"login/scroll": "46f5590bf46645619b6a2b2573403b5a0a1ab1b2cf71929456a604a2121db9a2",
|
|
436
|
-
"login/sky": "df3801d5cdce5b88d57a8d263bca13b47d376992b6010a7aface999fec34faa1",
|
|
437
|
-
"login/sounds": "5523c4b4cee27020c460a2a08a930025fe6b69c05e10ffada78f373da3b8df97",
|
|
438
|
-
"login/stone": "d912643bb799d5fcb9cce87486aca513d495a14cf3b1a53f3f272c968acc4076",
|
|
439
|
-
"login/stoneLight": "6a52402c91cd589c4df18389bffda0cc49e5afb65eaf4f36798cdbacb4924b57",
|
|
440
|
-
"login/towers": "4d7c89359c5e979c1030a3d4df1e61110c221ae8df2d43977e45d5379bbb1cbb",
|
|
441
|
-
"login/walkway": "7ffee328bf0ef48dfcc62475d5573f0479a2c7fcb789cd9cf8340cf3dde2cc4c",
|
|
442
|
-
"nameText/ChineseSimplified": "206d914dde1b649c080f1596f13565b68723779255c9dc33622a50e450e21e18",
|
|
443
|
-
"nameText/ChineseTraditional": "c96fcedfcadf069ddf9c840485beeddcdeb4cce8f6a594ab1592f395cd7db150",
|
|
444
|
-
"nameText/English": "3767947163b9be6604efb8814c9c42f66af16d8f5adb34c987090d7d185a0b12",
|
|
445
|
-
"nameText/French": "0ae3f4eac4fe934cf5905fc1e72bb359c541b47f6deb98c206c08e2cc9d665d5",
|
|
446
|
-
"nameText/German": "5fda4d1a76507aa34c3dd19fffd066276834289763ddde1d4b4c57f2efd8820b",
|
|
447
|
-
"nameText/Indonesian": "0f427989cd95ecf218dc7769d7a346032c46b527c882ec642adc5e54268322d6",
|
|
448
|
-
"nameText/Italian": "f4720a66566b9e09ed5e24a0744b3faee6b79a01d942417935975d87aa627d71",
|
|
449
|
-
"nameText/Japanese": "0c431cd7320771ad3cf7d3a2c981eec615cbaa16c13f370573a7d5f90f6719a3",
|
|
450
|
-
"nameText/Korean": "7c9d33d0b25523a7852ac5d042ccb7bcbe2a3d5f1c3ca6d4609832d1ff08e371",
|
|
451
|
-
"nameText/Portuguese": "77450a8c0f10f1bf86e0c9e0dd21b68511c337b3ae769ab9cd1969f264ca56f2",
|
|
452
|
-
"nameText/Russian": "dccc4e59c42fc221996940390ad7a024856ef80ee41cdf56f75a77d69f317897",
|
|
453
|
-
"nameText/Spanish": "00828922c5d0fe0d63bfe3a3d75e67bb686a3ba1215972873bc4450debf85c4d",
|
|
454
|
-
"nameText/Thai": "cf35e662b7d9b3d4f93b6042c81180d00a8d876f6f08da58a0aa967a9ce51c6a",
|
|
455
|
-
"nameText/Turkish": "81e270e84cdabbeb7f9dae2264ea4ea8a76e136f163895eaa74146294bc844d7",
|
|
456
|
-
"nameText/Vietnamese": "cc65fbd184b9c61c9e147242815f66afac0d317ef8a50cfe567368be53ab0d1e",
|
|
457
|
-
"oculi/fontaine": "66d3eec9935cd4a213596f32507c8ef1a802ed13de7f7261746f4288173661fa",
|
|
458
|
-
"oculi/inazuma": "a2adae5f9297520f2da3be8b57f07fe945ee724cd7da05de8ef6657b43c4cf39",
|
|
459
|
-
"oculi/liyue": "6df0af9cdbfd2253504fb0cd350cdb61e1465918298ee346fe2a7df99c7e5d5f",
|
|
460
|
-
"oculi/mondstadt": "94aebab976d60450e69d44ebf179f26176f6dfe69c1be8434bd1eb79b6484742",
|
|
461
|
-
"oculi/natlan": "7ac66600c873bfde8fc66f62ade1115eae406390007acecccd7dcb8996c32068",
|
|
462
|
-
"oculi/nod-krai": "ed8e967d379f0561bc63ce3f85763dd435918649575127e981d8ea8b17ed52cc",
|
|
463
|
-
"oculi/snezhnaya": "c9ffcc01ba38475df05a05362fdf98e6692340a5c8b4eda4c98f465a0022edfc",
|
|
464
|
-
"oculi/sumeru": "a09870b872aa67507869c88bb71a19a99b83232eeeb610cc91e5244a01807820",
|
|
465
|
-
"offerings/frostbearingTree": "b0a9a203001bad9178356cbfa4a137bfaf70cb88fa79b442bca9f9c42305685f",
|
|
466
|
-
"puzzles/fontaine": "ba1325a038478b80afce0ee55178db5bd5f95d45b20df46874e713f50d08dca0",
|
|
467
|
-
"puzzles/inazuma": "8c4c08407c6a41d394f06b777686f190f45c0159737cb95033ce613625dd8cb7",
|
|
468
|
-
"puzzles/liyue": "752f5662b50e3785aae22b03bb3989df42bdf99b30edcea97b8c8406ecf4f810",
|
|
469
|
-
"puzzles/mondstadt": "f7812acc6bd4dada2f6f97dd00d1b047b12aa0f4d86d653c6efc590ecd315b4b",
|
|
470
|
-
"puzzles/natlan": "202ed01b368afe968fbf025dccfa183cbcfb69d6de3788ca34c72d32bbde8ce2",
|
|
471
|
-
"puzzles/nod-krai": "048e3554215274cc9804db241db1f92c56c4b43685dd053c7615b2609267b9ad",
|
|
472
|
-
"puzzles/snezhnaya": "a39236b232948cc08c9af6cc66d85f7ea7c40d1d2904603c3e1e805f524d6637",
|
|
473
|
-
"puzzles/sumeru": "62fffc13e9531d6a99bb4554ea46046297b64a5587fb1699b3d394112604ba4c",
|
|
474
|
-
"questText/ChineseSimplified": "1b1a2376030905196f7a17792bf3d2a7b77a9e6839d0a59d83598a9970f4380f",
|
|
475
|
-
"questText/ChineseTraditional": "992d851fbc907d81d175a0940d4c28acc4571eacd14bcb78941a09aa76bc770d",
|
|
476
|
-
"questText/English": "c9394bb4155007ee7ca62e7ef73aaa4b6c5e084a779b50a4977cee76190b57ca",
|
|
477
|
-
"questText/French": "2450b4001b2c2733f703c8010c92ce9423bbe9f9efc0a702cec218c407fc709c",
|
|
478
|
-
"questText/German": "94cdfdd5ba01d3bf01843cd972a5288da323423f47d3fa90b6cc4eb03ed23c0d",
|
|
479
|
-
"questText/Indonesian": "d28c0aaed7881ea315cb84ab75733b24787919e2a1866a227b115ebc9b58ed02",
|
|
480
|
-
"questText/Italian": "51fc84034a1d49da32ec1dd28f32c0ffe362a5636538c68cf64998626d1e4da2",
|
|
481
|
-
"questText/Japanese": "61a6619ce455e3212dae4252cf3215ffd4e15cd0878e48494d94e66905867261",
|
|
482
|
-
"questText/Korean": "56abd3591392c661ad3ebbdd20d4b113ff4dc28e783ddfb9a0884adb9829d3b6",
|
|
483
|
-
"questText/Portuguese": "ab909db40d5a181a60509c2ab7b03ccd4982cfdc5f61f0676c6656b70758245b",
|
|
484
|
-
"questText/Russian": "12aef2c5793808d61a2a7e9a2c30a4d067500739681dfb446a5c8e000248dcb2",
|
|
485
|
-
"questText/Spanish": "27d6fd05d6468fc92ece6aeb4bc594ebe5279bba8b05c9cacbe88632db316e9a",
|
|
486
|
-
"questText/Thai": "d1aca32fe2f08db6506cec63b02a19f2f67570e1c2a1cda8a05f7d512863e6a5",
|
|
487
|
-
"questText/Turkish": "2b1c1010e762d629d58d57454b06c14247bdbc414069dab8863ca8e5f0c1a072",
|
|
488
|
-
"questText/Vietnamese": "17ad71de5a7f8007d7a2bed4769594a6a157b918aba3198c09e5f298c648d860",
|
|
489
|
-
"quests/351": "cf34bcabbc4a01f5c2972d09272fd2c86f569d8ed0996c1958bf164ff87d5486",
|
|
490
|
-
"quests/352": "36596ceab3f7bf50df0fcfcfd9e2e8d9bc86b5fd14eb5f3829e5604ab2e198a2",
|
|
491
|
-
"quests/72154": "843ceee7afbffc24bda4ff6f0dac948e40a6c8f325c8fd03325c346daad3aa16",
|
|
492
|
-
"regions/fontaine/palette": "06b96950c3111634b54c7552a0c8b2fd65a8e05dcdff6808bb2905b36356a7cf",
|
|
493
|
-
"regions/inazuma/palette": "dac3221c8e07b31b400af4897c019f66956b690994700fcf45cc1d3d4cbda57c",
|
|
494
|
-
"regions/liyue/palette": "d50a258777fd304d25f3d8943d7791685253e0e081cb49d5ffe420a7b9b3a0ea",
|
|
495
|
-
"regions/mondstadt/palette": "783234507e9250d8c12dc5b8580c7945764729c9ff39fc321ce63f2454d607c9",
|
|
496
|
-
"regions/natlan/palette": "d1ee2aaa7b36ae21dfdd4c9ec0e7b4153c37853887ba08501384deb187369ebd",
|
|
497
|
-
"regions/nod-krai/palette": "8d543f35b0b9bda676604d000cc3ab90f20106ef237986a10212331a46ce2022",
|
|
498
|
-
"regions/sumeru/palette": "d06fcadcf5b1ef351f789b8c1cd333eadb5015cc37fd0c800544f53b1ddbc2f8",
|
|
499
|
-
"reputation/mondstadt": "374ea4f6e80cf6785a609b6491ac6086d6ef65eeff24786b71facd4ea3c09201",
|
|
500
|
-
"sceneGroups/scene3": "a2511e4cbf420a99ba5f8a9b8fd4e5af59f8a8d8abcb37db0e910cccbf365c20",
|
|
501
|
-
"sceneNpcBorn/scene3": "561633b72271c622fee8bb6f2a37de3418a8b140c606e0a1b14a46c606bbcc59",
|
|
502
|
-
"shops/mondstadtGeneralGoods": "6525e094b34e2de80aef53ed2be399225864fcc15eb36d29a4839b76efcfe2f5",
|
|
503
|
-
"shops/paimonsBargains": "14a1169b758639d87e120f0e07496520dc57633d9f1a1e6f53e013eee4ec6e6d",
|
|
504
|
-
"spiralAbyss/floors": "39807c974fe846ff76e2c9cc3490a4d7104cab22d02304793c447065566fb996",
|
|
505
|
-
"spiralAbyss/periods": "2a726b638c312afd30260e1559d1223db98bbf76f6350cddd853a0058763866f",
|
|
506
|
-
"spiralAbyss/rewards": "0444f59252a5b56621686a0969cbfe4ac105ba551275da15ef51e360185965fd",
|
|
507
|
-
"splash/titleLogo/ChineseSimplified": "75c36da077d899a9650ebc768fdd54b13d0574ca6146b5d47769c8849aa156f3",
|
|
508
|
-
"splash/titleLogo/ChineseTraditional": "83c0c7d1bb72bf5435185c314431e9acb007e04dc8116b1a2ab10fc8eab6510b",
|
|
509
|
-
"splash/titleLogo/English": "5196c5b8680f25921c3a23367501449fdbcfd81f05563d055a1aa56dd6535d59",
|
|
510
|
-
"splash/titleLogo/Japanese": "f7eeba3a4e2c6333aaae40383a89372b72245e1be0ba6776b1243bfd2f0a9c65",
|
|
511
|
-
"splash/titleLogo/Korean": "969eae242e84e8486054a4881a685749e20849d1329c31f62cc70bd1788bf234",
|
|
512
|
-
"standingTalkText/ChineseSimplified": "1b0b155b034d65224b2830160079f9285aaae571a38dd6eb3f1988398f7eb98a",
|
|
513
|
-
"standingTalkText/ChineseTraditional": "582f26b177d69d1cf5fccc8db1b7ff6a2a358bb9f3616a85c27873fd8609bc89",
|
|
514
|
-
"standingTalkText/English": "7df0e1909b6d25697d121a20b25ec5a838e9f90ee91f9f3abf714d50bde84f4b",
|
|
515
|
-
"standingTalkText/French": "51cdd6c76562704b596f6bfabffa0077cc46f9b79d835c326c0c2ad5930f25d5",
|
|
516
|
-
"standingTalkText/German": "dd0a37c8ecc18d557bcf02d3137f95bbe946429721ba4723e4bfbdd17b1b2169",
|
|
517
|
-
"standingTalkText/Indonesian": "5b035d1ee9aaa06ef198025a18046f7efe4ee4aeae27ae9700cbfcf24b16ec95",
|
|
518
|
-
"standingTalkText/Italian": "a13580c82c5b5a511e61859152290547b9ebcc75a4b276bd9999143f65fbf4b9",
|
|
519
|
-
"standingTalkText/Japanese": "4d0ce41a86789052fe60caf30ba276f633c1cb15b62d6ed94b5e09428863831d",
|
|
520
|
-
"standingTalkText/Korean": "d3d4dc678c17a7658adb3a0a7e15ac56d172e680312beb67630aab3afd4d5e55",
|
|
521
|
-
"standingTalkText/Portuguese": "6a633003d242fbedba8a74648ecf121cb6b9a47a73fdf17ec30fa487a681e652",
|
|
522
|
-
"standingTalkText/Russian": "9ae93c38d9e4771144187231154095063063a3fc8d4c32047441d3af14b80513",
|
|
523
|
-
"standingTalkText/Spanish": "06cf1eafe17ea39f5324901bb647d081bfa686c3f362bdf4f3a3c73a3d43cea1",
|
|
524
|
-
"standingTalkText/Thai": "632c502a56b9ffc62657c25c086aca2ea89224dd41d6a2d10a4b79178f3df185",
|
|
525
|
-
"standingTalkText/Turkish": "d13a0e4a4f0b149e81a1ff6272ece7e546a2a3d84d9b85d796bbdee406b0d4cb",
|
|
526
|
-
"standingTalkText/Vietnamese": "c625c6ec9819e062de58d917ae9a130d55beffea48f674da59abb849391c6a29",
|
|
527
|
-
"standingTalks/residents": "95f5938921a3291cdb35c280946ce6e4fd2261a0b4dbca53d3a548f776f675c4",
|
|
528
|
-
"stats/artifactExpMaterials": "502dffdf8454d5b2ed81822b10aad4e2fd1c65055a3bf04e4b4f555b717ec54f",
|
|
529
|
-
"stats/artifactMainAffixCurves": "1d6960ed077043c1fb4df6160c31c11bd217bf7a8eb757a02ddd09905a3301d7",
|
|
530
|
-
"stats/artifactMainAffixPools": "c0dd2109e274968efa535a3bbe71b38e0110cde8248ec8296723882f6f546e8d",
|
|
531
|
-
"stats/artifactRarities": "e9decdd67f6b5e4b564f8ca71ebbbb5330f137b3d1390f697db518b11109f474",
|
|
532
|
-
"stats/artifactSets": "440b5ba0e204f565d9bebf8e16ab993e83ad4f50523f25e49e098ba81699e7e3",
|
|
533
|
-
"stats/characterConstellationKits": "42a7009c6da185e4d0304dbf26b1cea451a51938b78c4e3f254fdf2ecab983f1",
|
|
534
|
-
"stats/characterGrowCurves": "5d5cde0b0c2f473f7375248e49c330b75653633aed5e72665b5bc454503ddfb4",
|
|
535
|
-
"stats/characterSkillKits": "236b499c1df0ec5d8f73ba3bd3ff73620597f21d1630b7fee1f2ff2736adb266",
|
|
536
|
-
"stats/characterTalentKits": "b80a7fa207edaa053eab284ed82789de44c98fbceb7bd7ef6a7787c22692714e",
|
|
537
|
-
"stats/characters": "451c4740d49c1be48b566c83e82e0e074af9c3d99fc9e51a31753766e0f00246",
|
|
538
|
-
"stats/talentUpgrades": "464d5cde384971f3df5ebde0d585cfc3daa01858964d92a0cc69024be155a8a7",
|
|
539
|
-
"stats/weaponGrowCurves": "f4327c1e523f869582066c02b4224d8e8ffe61b371acb5a039aeadfa3a487bcb",
|
|
540
|
-
"stats/weaponLevelRequiredExps": "5eba0c9efb4af69a4defcb2ca4d54b8c6c90a8d0e0a9b3fd78971d5471d20cf2",
|
|
541
|
-
"stats/weapons": "176c1ebffaee08c9d5f59009f90d8070f79ff2c8d9d4b56e2508ff2607f80393",
|
|
542
|
-
"statueLevels/mondstadt": "7278dd3b97c7759b7306265d919a4de83ff851a835f0e68a2a3a73b39832d9eb",
|
|
543
|
-
"transPoints/scene3": "d06ceab423d9696fde9641bd151a52c57530678213e1cb4b59f3ef58b546e284",
|
|
544
|
-
"wildlife/fontaine": "379a322c223c2ae109848c042ed6c4b2bd50549cbe36c2dc58ff5960d22f7e85",
|
|
545
|
-
"wildlife/inazuma": "4c94f5c5825545ddde5bff3f942f0949bef3292637ee1fd77aab0f6cbfe73616",
|
|
546
|
-
"wildlife/liyue": "e33214459f6c90500f95c4f9bfdab302732571b17fcfa08c0d2e5792597594f4",
|
|
547
|
-
"wildlife/mondstadt": "b64a51c236715ef971d2a23a8e56c8370ea08d4b67cef6b5abe03081ac378027",
|
|
548
|
-
"wildlife/natlan": "62b242252e952bc75e5015f7e70f24112f467eeb65f48bda46f2f798169b3d7f",
|
|
549
|
-
"wildlife/nod-krai": "50e1124ae38ee3ab1d2c04c6942f1446962c07ffc9e20df312f6153636207125",
|
|
550
|
-
"wildlife/snezhnaya": "816a7100cf6393e308e00226eb04f3b34f6af5ee756b1b8241eecf56b9294301",
|
|
551
|
-
"wildlife/sumeru": "3f50e2a193a19d2b97985e67d4da907017c4468492345936ff142e8c6927675c",
|
|
552
|
-
"windrise/ground-layers": "fdea76ec911e840878bff3970065a868f545aff7098012c052251a68358449d3",
|
|
553
|
-
"windrise/oak": "b38005e02451a3befd683fe4866b211a2fa5d40d98e7b286b1f0792f28136dff",
|
|
554
|
-
"windrise/paving": "8d2d04e7783cb05f8642fcf8730963f3d252532a79a816216e0f380c233467fb",
|
|
555
|
-
"windrise/plants": "946a6e8ffbec3108e329f8b117102f33e66e3f47a69bd34808e8f4b6003d11f6",
|
|
556
|
-
"windrise/statue": "2c346fc0de7b55f99d25437947864f0db3921662d4952277b9513593b8fd599b",
|
|
557
|
-
"windrise/surfaces": "3c3b88800bfee0a250fa09106005e0367e0904777730db964127f5bf987e82ef",
|
|
558
|
-
"windrise/water": "2e046f06a32db5b818986f6c5df74497d08b105d70cc05e256cc07531e0b6768"
|
|
559
|
-
}
|
|
560
|
-
};
|
|
561
|
-
//#endregion
|
|
562
|
-
//#region src/services/shared/fetchJson.ts
|
|
563
|
-
const fetchJson = async (url) => {
|
|
564
|
-
const response = await fetch(url, { signal: AbortSignal.timeout(DATA_FETCH_TIMEOUT_MS) });
|
|
565
|
-
if (!response.ok) throw new InvalidOperationError(Operation.Read, url, `HTTP ${response.status} ${response.statusText}`);
|
|
566
|
-
return await response.json();
|
|
567
|
-
};
|
|
568
|
-
//#endregion
|
|
569
|
-
//#region src/services/data/readGameDataObject.ts
|
|
570
|
-
const readCachedGameDataObject = createEvictingPromiseCache((url) => url, fetchJson);
|
|
571
|
-
const readGameDataObject = (gameDataBaseUrl, hash) => readCachedGameDataObject(`${gameDataBaseUrl}/${hash}.json`);
|
|
572
|
-
//#endregion
|
|
573
|
-
//#region src/services/data/readGameData.ts
|
|
574
|
-
const readGameData = async (gameDataBaseUrl, key, schema) => {
|
|
575
|
-
const hash = gameDataLock.objects[key];
|
|
576
|
-
if (hash === void 0) throw new InvalidOperationError(Operation.Read, key, "is not in the game data lock");
|
|
577
|
-
return schema.parse(await readGameDataObject(gameDataBaseUrl, hash));
|
|
578
|
-
};
|
|
579
|
-
//#endregion
|
|
580
|
-
//#region src/services/character/NameTextLoaderMap.ts
|
|
581
|
-
const NameTextLoaderMap = {
|
|
582
|
-
[GameLanguage.ChineseSimplified]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/ChineseSimplified", textChunkSchema),
|
|
583
|
-
[GameLanguage.ChineseTraditional]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/ChineseTraditional", textChunkSchema),
|
|
584
|
-
[GameLanguage.English]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/English", textChunkSchema),
|
|
585
|
-
[GameLanguage.French]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/French", textChunkSchema),
|
|
586
|
-
[GameLanguage.German]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/German", textChunkSchema),
|
|
587
|
-
[GameLanguage.Indonesian]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/Indonesian", textChunkSchema),
|
|
588
|
-
[GameLanguage.Italian]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/Italian", textChunkSchema),
|
|
589
|
-
[GameLanguage.Japanese]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/Japanese", textChunkSchema),
|
|
590
|
-
[GameLanguage.Korean]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/Korean", textChunkSchema),
|
|
591
|
-
[GameLanguage.Portuguese]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/Portuguese", textChunkSchema),
|
|
592
|
-
[GameLanguage.Russian]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/Russian", textChunkSchema),
|
|
593
|
-
[GameLanguage.Spanish]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/Spanish", textChunkSchema),
|
|
594
|
-
[GameLanguage.Thai]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/Thai", textChunkSchema),
|
|
595
|
-
[GameLanguage.Turkish]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/Turkish", textChunkSchema),
|
|
596
|
-
[GameLanguage.Vietnamese]: (gameDataBaseUrl) => readGameData(gameDataBaseUrl, "nameText/Vietnamese", textChunkSchema)
|
|
597
|
-
};
|
|
598
|
-
//#endregion
|
|
599
|
-
//#region src/services/character/readCharacterIdNamesMap.ts
|
|
600
|
-
const readCharacterIdNamesMap = async (gameDataBaseUrl) => {
|
|
601
|
-
const [characters, ...nameTexts] = await Promise.all([readGameData(gameDataBaseUrl, "stats/characters", z.array(characterDataSchema)), ...CHARACTER_PACK_MODEL_NAME_LANGUAGES.map((language) => NameTextLoaderMap[language](gameDataBaseUrl))]);
|
|
602
|
-
return new Map(characters.map(({ id, nameTextId }) => [id, nameTexts.flatMap((nameText) => nameText[nameTextId] ?? [])]));
|
|
603
|
-
};
|
|
604
|
-
//#endregion
|
|
605
|
-
//#region src/services/character/readCharacterNames.ts
|
|
606
|
-
const readCharacterNames = async (gameDataBaseUrl, characterId) => {
|
|
607
|
-
const characterNames = (await readCharacterIdNamesMap(gameDataBaseUrl)).get(characterId);
|
|
608
|
-
if (characterNames === void 0) throw new InvalidOperationError(Operation.Read, String(characterId), "is no character of the game's tables");
|
|
609
|
-
return characterNames;
|
|
610
|
-
};
|
|
611
|
-
//#endregion
|
|
612
|
-
//#region src/services/character/getCharacterPackFilePath.ts
|
|
613
|
-
const getCharacterPackFilePath = (path) => {
|
|
614
|
-
const parts = [];
|
|
615
|
-
for (const part of path.split(/[/\\]/u)) if (part === "" || part === ".") continue;
|
|
616
|
-
else if (part === ".." && parts.length > 0 && parts.at(-1) !== "..") parts.pop();
|
|
617
|
-
else parts.push(part);
|
|
618
|
-
return parts.join("/");
|
|
619
|
-
};
|
|
620
|
-
//#endregion
|
|
621
|
-
//#region src/services/character/resolveCharacterPackTextures.ts
|
|
622
|
-
const getMatchKey = (path) => path.normalize("NFC").toLowerCase();
|
|
623
|
-
const resolveCharacterPackTextures = (texturePaths, filePaths, modelPath) => {
|
|
624
|
-
const modelFolder = modelPath.slice(0, modelPath.lastIndexOf("/") + 1);
|
|
625
|
-
const filePathMap = new Map(filePaths.filter((filePath) => filePath.startsWith(modelFolder)).map((filePath) => [getMatchKey(filePath.slice(modelFolder.length)), filePath]));
|
|
626
|
-
const pathFilePathMap = /* @__PURE__ */ new Map();
|
|
627
|
-
for (const texturePath of texturePaths) {
|
|
628
|
-
const path = getCharacterPackFilePath(texturePath);
|
|
629
|
-
const filePath = path.split("/").includes("..") ? void 0 : filePathMap.get(getMatchKey(path));
|
|
630
|
-
if (filePath !== void 0) pathFilePathMap.set(path, filePath);
|
|
631
|
-
}
|
|
632
|
-
return { files: Array.from(pathFilePathMap, ([path, filePath]) => ({
|
|
633
|
-
filePath,
|
|
634
|
-
path
|
|
635
|
-
})) };
|
|
636
|
-
};
|
|
637
|
-
//#endregion
|
|
638
|
-
//#region src/services/data/constants.ts
|
|
639
|
-
const GAME_DATA_BLOB_PATH = "genshin/data";
|
|
640
|
-
//#endregion
|
|
641
|
-
export { CHARACTER_PACK_STORE_NAME as A, WHOLE_ATTRIBUTES as B, ADVANCED_ATTRIBUTE_GAME_TEXT_KEYS as C, CHARACTER_PACK_INDEX_PATH as D, CHARACTER_PACK_FETCH_TIMEOUT_MS as E, COMBAT_TALENT_ORDER as F, chooseCharacterPackModel as G, Attribute as H, ELEMENTAL_ATTRIBUTE_GAME_TEXT_KEYS as I, getCharacterNameKey as K, MACOS_RESOURCE_FORK_FOLDER as L, CHARACTER_TERMS_FILE_NAMES as M, CHARACTER_TERMS_NOT_JAPANESE_REGEX as N, CHARACTER_PACK_MODEL_NAME_LANGUAGES as O, CHARACTER_TERMS_PATH as P, TALENT_START_LEVEL as R, chooseCharacterTermsFile as S, CHARACTER_MODEL_PATH as T, Attributes as U, CombatTalent as V, ArtifactSlot as W, BodyType as _, readCharacterIdNamesMap as a, decodeCharacterTerms as b, readGameDataObject as c, textChunkSchema as d, characterDataSchema as f, growAttributeSchema as g, Elements as h, readCharacterNames as i, CHARACTER_PACK_STORE_VERSION as j, CHARACTER_PACK_STORE_FILES_NAME as k, fetchJson as l, Element as m, resolveCharacterPackTextures as n, NameTextLoaderMap as o, WeaponType as p, getCharacterPackFilePath as r, readGameData as s, GAME_DATA_BLOB_PATH as t, gameDataLock as u, ascensionPhaseSchema as v, ARTIFACT_SLOT_ORDER as w, CharacterTermsEncoding as x, attributeLineSchema as y, TRAVELER_CHARACTER_ID as z };
|