genshin-world 4.3.1 → 4.4.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.
Files changed (171) hide show
  1. package/README.md +33 -17
  2. package/package.json +15 -19
  3. package/dist/ElementDamageBonusAttributeMap-r29fkvtM.js +0 -13
  4. package/dist/EnemyState-DV57Bh7L.js +0 -14
  5. package/dist/GameDataset-B6H7oezV.js +0 -279
  6. package/dist/KitEventKind-CGMNB7W9.js +0 -34
  7. package/dist/ReactionType-hpFnoVev.js +0 -41
  8. package/dist/TransformativeReactionType-CleFzf8J.js +0 -15
  9. package/dist/addKitEffect-B922PsCn.js +0 -20
  10. package/dist/addKitStatus-B0kqLgt1.js +0 -9
  11. package/dist/ainoKit-9nNWJtt8.js +0 -111
  12. package/dist/albedoKit-CqDSRYSS.js +0 -133
  13. package/dist/alhaithamKit-CPqHnLHg.js +0 -226
  14. package/dist/aloyKit-mX4ue1UK.js +0 -67
  15. package/dist/alyoshaKit-BT4RmJiZ.js +0 -4
  16. package/dist/amberKit-DiseylUk.js +0 -86
  17. package/dist/arlecchinoKit-Ktk2qBrZ.js +0 -17
  18. package/dist/ayakaKit-B8lRaVEX.js +0 -85
  19. package/dist/ayatoKit-C1d3zZO0.js +0 -137
  20. package/dist/baizhuKit-BahbIHOM.js +0 -82
  21. package/dist/barbaraKit-DyVdn4JU.js +0 -123
  22. package/dist/beidouKit-DtdW2iYD.js +0 -90
  23. package/dist/bennettKit-DMybe5yt.js +0 -76
  24. package/dist/candaceKit-D2JxxJ-U.js +0 -93
  25. package/dist/castKitField-_74Co83C.js +0 -23
  26. package/dist/characterPack-COXASMYv.d.ts +0 -143
  27. package/dist/characterPack-DibegH5Y.js +0 -723
  28. package/dist/characterPack.d.ts +0 -2
  29. package/dist/characterPack.js +0 -3
  30. package/dist/charlotteKit-BHanMBgA.js +0 -104
  31. package/dist/chascaKit-CF8KPyfH.js +0 -53
  32. package/dist/checkIsKitShieldLive-Ch8BgpHZ.js +0 -4
  33. package/dist/chevreuseKit-CH5xu1yJ.js +0 -48
  34. package/dist/chioriKit-CyJV9RuV.js +0 -31
  35. package/dist/chongyunKit-Bfp6g05V.js +0 -100
  36. package/dist/citlaliKit-BFxlFfsf.js +0 -63
  37. package/dist/clorindeKit-CVP7rxb2.js +0 -62
  38. package/dist/collectKitEnergyDrops-Bt4C9o5I.js +0 -66
  39. package/dist/colleiKit-CCIYW8bc.js +0 -52
  40. package/dist/columbinaKit-CJ0as-TP.js +0 -281
  41. package/dist/computeFacingAngle-BaRnmfMH.js +0 -8
  42. package/dist/constants--ARZpp1u.js +0 -49
  43. package/dist/constants-C5MNdAtu.js +0 -74
  44. package/dist/constants-CFW7hhnp.js +0 -187
  45. package/dist/constants-CSFiwyHy.js +0 -46
  46. package/dist/constants-DCZ-jxqC.js +0 -4
  47. package/dist/consumeKitResource-CbrNQtZP.js +0 -18
  48. package/dist/countKitResource-DvrWXcCc.js +0 -5
  49. package/dist/createWindriseGroundPaint-3I4-42A5.js +0 -299
  50. package/dist/cynoKit-BsdVe5ip.js +0 -204
  51. package/dist/dahliaKit-BvAE-bdw.js +0 -21
  52. package/dist/dehyaKit-DiC7yHRH.js +0 -24
  53. package/dist/dilucKit-C9Nz6xLi.js +0 -167
  54. package/dist/dionaKit-CSA9iGCG.js +0 -69
  55. package/dist/doriKit-MallfU4i.js +0 -25
  56. package/dist/durinKit-Cwno0X9u.js +0 -50
  57. package/dist/emilieKit-WNRG1HiW.js +0 -21
  58. package/dist/emitKitEvent-MEMMkn9X.js +0 -12
  59. package/dist/escoffierKit-DC0knooj.js +0 -96
  60. package/dist/eulaKit-B714Qm9u.js +0 -145
  61. package/dist/faruzanKit-Bnz3BRKw.js +0 -73
  62. package/dist/findKitStatus-c5kVgwo6.js +0 -4
  63. package/dist/fischlKit-BKJSDlae.js +0 -96
  64. package/dist/flinsKit-CP5D22yk.js +0 -31
  65. package/dist/freminetKit-BKugfnRC.js +0 -21
  66. package/dist/furinaKit-BGd_lLjr.js +0 -290
  67. package/dist/gainKitResource-Cb8C2L3s.js +0 -15
  68. package/dist/gainPartyMemberEnergy-D9hiqeb4.js +0 -12
  69. package/dist/gamingKit-kIgqMnFq.js +0 -26
  70. package/dist/ganyuKit-DemmOZho.js +0 -85
  71. package/dist/getActiveCharacterId-BAGBdS2c.js +0 -10
  72. package/dist/getBuffedCombatant-B7Fe7E_P.js +0 -101
  73. package/dist/getDeployedCharacterIds-ED-6JY4w.js +0 -4
  74. package/dist/getDeployedCombatants-BqXm9a6o.js +0 -17
  75. package/dist/getPartyMember-CPyR8-gA.js +0 -9
  76. package/dist/gorouKit-D1aEnA6A.js +0 -154
  77. package/dist/heizouKit-ePG5r1Cn.js +0 -50
  78. package/dist/huTaoKit-4-GOh-Vv.js +0 -147
  79. package/dist/iansanKit-CRWpDWLi.js +0 -146
  80. package/dist/ifaKit-DIM0kU9K.js +0 -40
  81. package/dist/illugaKit-D1QkAPS6.js +0 -112
  82. package/dist/index-CPoeaSkB.d.ts +0 -32115
  83. package/dist/index.d.ts +0 -4
  84. package/dist/index.js +0 -50914
  85. package/dist/ineffaKit-vPT9zyfI.js +0 -155
  86. package/dist/ittoKit-DzOW-TE9.js +0 -133
  87. package/dist/jahodaKit-9YGHCAcA.js +0 -347
  88. package/dist/jeanKit-9eNCZ6dx.js +0 -90
  89. package/dist/kachinaKit-BrwrswKB.js +0 -7
  90. package/dist/kaeyaKit-CY35PXmA.js +0 -92
  91. package/dist/kavehKit-BE7gKtWP.js +0 -34
  92. package/dist/kazuhaKit-qOCjcrqH.js +0 -77
  93. package/dist/keqingKit-BzAWT9BG.js +0 -101
  94. package/dist/kinichKit-CymKuu1M.js +0 -72
  95. package/dist/kiraraKit-DyhPmhEL.js +0 -71
  96. package/dist/kleeKit-BwHcJznq.js +0 -96
  97. package/dist/kokomiKit-CA0CzriO.js +0 -84
  98. package/dist/kujouSaraKit-BW83jN0G.js +0 -96
  99. package/dist/kukiKit-AxsqxqeV.js +0 -71
  100. package/dist/lanYanKit-ttJg9kuB.js +0 -27
  101. package/dist/laumaKit-Byo_-u9y.js +0 -162
  102. package/dist/laylaKit-L2t_Rj6L.js +0 -181
  103. package/dist/linneaKit-DlVhnbGM.js +0 -4
  104. package/dist/lisaKit-BsYIJpRR.js +0 -66
  105. package/dist/lohenKit-D-uagI_g.js +0 -4
  106. package/dist/lynetteKit-N8fgD5-q.js +0 -40
  107. package/dist/lyneyKit-T586Gpbd.js +0 -43
  108. package/dist/mavuikaKit-nJaEDdfr.js +0 -22
  109. package/dist/mikaKit-CdLY5aCh.js +0 -21
  110. package/dist/mizukiKit-BEXzx_Y6.js +0 -58
  111. package/dist/monaKit-ONoXQhmJ.js +0 -146
  112. package/dist/mualaniKit-DXSW984Q.js +0 -7
  113. package/dist/nahidaKit-f_e4vgfj.js +0 -113
  114. package/dist/naviaKit-BtcUuWFE.js +0 -140
  115. package/dist/neferKit-12ZI_Dj4.js +0 -30
  116. package/dist/neuvilletteKit-l08eZ2jR.js +0 -119
  117. package/dist/nicoleKit-BGBQ8CMU.js +0 -282
  118. package/dist/nilouKit-BH5jWBqC.js +0 -105
  119. package/dist/ningguangKit-YmHdRYcn.js +0 -113
  120. package/dist/noelleKit-IDYWuE-6.js +0 -148
  121. package/dist/odetteKit-Dw5i_A2J.js +0 -102
  122. package/dist/ororonKit-HsTfXvsW.js +0 -92
  123. package/dist/pruneKit-PR-_GqAt.js +0 -35
  124. package/dist/qiqiKit-HX-bDmRf.js +0 -105
  125. package/dist/raidenKit-DUUHQxaP.js +0 -153
  126. package/dist/razorKit-BQIWQCQH.js +0 -122
  127. package/dist/readCharacterAvatar-QXdaK_b0.js +0 -295
  128. package/dist/removeKitEffects--6C1cGOY.js +0 -6
  129. package/dist/rosariaKit-Dn-L-EAF.js +0 -60
  130. package/dist/sandroneKit-BwVm_e-C.js +0 -4
  131. package/dist/save-BONR7TY2.js +0 -2602
  132. package/dist/save.d.ts +0 -2
  133. package/dist/save.js +0 -1
  134. package/dist/sayuKit-CzPYsFzM.js +0 -68
  135. package/dist/sceneExport-BmTj9FRK.d.ts +0 -71
  136. package/dist/sceneExport-p78Obc7R.js +0 -28
  137. package/dist/sceneExport.d.ts +0 -2
  138. package/dist/sceneExport.js +0 -1
  139. package/dist/sethosKit-Dnj7Y8q0.js +0 -7
  140. package/dist/shenheKit-DyoqKfsa.js +0 -153
  141. package/dist/sigewinneKit-a6h94xdX.js +0 -22
  142. package/dist/skirkKit-BDjoFGAq.js +0 -10
  143. package/dist/spendKitResource-BMOGVq9a.js +0 -10
  144. package/dist/style.css +0 -4570
  145. package/dist/sucroseKit-D2zXGz1h.js +0 -125
  146. package/dist/tartagliaKit-BwGA6N1Y.js +0 -137
  147. package/dist/terrainTileWorker.d.ts +0 -1
  148. package/dist/terrainTileWorker.js +0 -81
  149. package/dist/thomaKit-BJfMbEIx.js +0 -96
  150. package/dist/tighnariKit-RYM02O_t.js +0 -46
  151. package/dist/varesaKit-tl3QT31L.js +0 -37
  152. package/dist/varkaKit-C8_HlTVH.js +0 -4
  153. package/dist/ventiKit-FYuBhbPY.js +0 -53
  154. package/dist/vesnaKit-CmM1CVe6.js +0 -4
  155. package/dist/vodyanitsaKit-7WoQIUHv.js +0 -4
  156. package/dist/wandererKit-CQM691sn.js +0 -9
  157. package/dist/wriothesleyKit-BtcN4_Bv.js +0 -103
  158. package/dist/xianglingKit-BQjcNu7M.js +0 -114
  159. package/dist/xianyunKit-D76nKV4f.js +0 -108
  160. package/dist/xiaoKit-DPd4UkOr.js +0 -105
  161. package/dist/xilonenKit-BykTSGYe.js +0 -42
  162. package/dist/xingqiuKit-BZz9JUTt.js +0 -127
  163. package/dist/xinyanKit-DN0kCOuW.js +0 -145
  164. package/dist/yaeMikoKit-hw1By6wO.js +0 -57
  165. package/dist/yanfeiKit-CnIuIJrr.js +0 -119
  166. package/dist/yaoyaoKit-5ny2CT69.js +0 -202
  167. package/dist/yelanKit-CQcriSs3.js +0 -79
  168. package/dist/yoimiyaKit-BlohgeOv.js +0 -91
  169. package/dist/yunjinKit-BJEkLGZt.js +0 -87
  170. package/dist/zhongliKit-Cm3k5sX5.js +0 -110
  171. package/dist/zibaiKit-C0elIlw8.js +0 -63
package/README.md CHANGED
@@ -5,19 +5,16 @@
5
5
  [![NPM downloads][badge-npm-downloads]][url-npm]
6
6
  [![NPM Unpacked Size (with version)][badge-npm-unpacked-size]][url-npm]
7
7
 
8
- Genshin Impact's world, rebuilt as an unofficial, non-commercial fan work on [`genshin-engine`](https://github.com/Esposter/Esposter/tree/main/packages/genshin-engine) and not affiliated with HoYoverse. It holds everything that is the game's rather than any engine's:
9
-
10
- - the catalogue of regions, areas and subareas;
11
- - each region's authored data: its heights, colours, look and landmarks;
12
- - the TresJS components and composables that build all of it;
13
- - the game's screens — its opening's splashes, login screen and startup loading — built from [`genshin-interface`](https://github.com/Esposter/Esposter/tree/main/packages/genshin-interface)'s pieces.
8
+ Genshin Impact's world, rebuilt as an unofficial, non-commercial fan work on [`genshin-engine`](https://github.com/Esposter/Esposter/tree/main/packages/genshin-engine) and not affiliated with HoYoverse.
14
9
 
15
10
  It ships no image, model or sound from the game: every mesh, texture and shader is generated by code, and each mark on a screen is a vector path traced from the game's own or taken from a published vector of it.
16
11
 
12
+ Design notes live in [the specs](https://github.com/Esposter/Esposter/tree/main/openspec/specs/genshin).
13
+
17
14
  ## Table of Contents
18
15
 
19
16
  - 🚀 [Getting Started](#getting-started)
20
- - 📖 [Documentation](#documentation)
17
+ - 🧩 [Key Exports](#key-exports)
21
18
  - ⚖️ [License](#license)
22
19
 
23
20
  ---
@@ -25,7 +22,7 @@ It ships no image, model or sound from the game: every mesh, texture and shader
25
22
  ## <a name="getting-started">🚀 Getting Started</a>
26
23
 
27
24
  ```bash
28
- pnpm i genshin-world genshin-engine genshin-interface @esposter/shared @tresjs/core @vueuse/core three vue zod
25
+ pnpm i genshin-world genshin-engine genshin-interface genshin-text @esposter/shared @tresjs/core @vueuse/core three vue zod
29
26
  ```
30
27
 
31
28
  Mount `WorldScreen`, which brings its own canvas, and pass in only what your bundler and server decide, and load the screens' styles once:
@@ -34,28 +31,47 @@ Mount `WorldScreen`, which brings its own canvas, and pass in only what your bun
34
31
  <script setup lang="ts">
35
32
  import { WorldScreen } from "genshin-world";
36
33
  import TerrainTileWorker from "genshin-world/terrainTileWorker?worker";
34
+ import { QualityTier } from "genshin-engine";
35
+ import { ENGLISH_GAME_TEXT, GameLanguage } from "genshin-text";
37
36
  import "genshin-interface/style.css";
38
37
  import "genshin-world/style.css";
38
+
39
+ const isDevelopment = import.meta.env.DEV;
40
+ const qualityTier = QualityTier.High;
39
41
  </script>
40
42
 
41
43
  <template>
42
44
  <WorldScreen
45
+ account-avatar-url="https://your-host.example/avatar.png"
43
46
  :create-terrain-worker="() => new TerrainTileWorker()"
44
- :is-tuning="isDevelopment || undefined"
45
- :quality-tier
47
+ :game-text="ENGLISH_GAME_TEXT"
48
+ :is-paused="false"
49
+ :is-tuning="isDevelopment"
50
+ :language="GameLanguage.English"
51
+ :quality-tier="qualityTier"
52
+ :server-clock-offset-ms="0"
46
53
  game-data-base-url="https://your-host.example/game-data"
47
54
  region-data-base-url="genshin"
55
+ scene-export-base-url="https://your-host.example/scene-exports"
48
56
  />
49
57
  </template>
50
58
  ```
51
59
 
52
- Region data lives in `src/data/regions/<region>.json`, and your server serves it at the base URL, so a region is fetched as the camera comes within reach and released as it leaves.
53
-
54
- The game's data is not bundled. Every record the world reads — the opening's title logo and login screen, the world's ground, catalogue and animals, the game's tables and words, the character profiles and the book bodies — is fetched from `game-data-base-url`, which `GameOpening` takes as `WorldScreen` does, and every reader the package exports (`readGameData`, `readStatTables` and the rest) takes the same base as its first argument. Your host must serve every object and index entry that the package's `gameDataLock.json` names, each as `<base>/<sha256>.json`, with CORS for your page's origin. Esposter's own accounts admit only Esposter's origins, so another host must publish its own copy.
55
-
56
- ## <a name="documentation">📖 Documentation</a>
57
-
58
- We highly recommend you take a look at the [documentation](https://github.com/Esposter/Esposter/tree/main/openspec/specs/genshin) to level up. How each screen is matched to the game is described on the [parity page](https://github.com/Esposter/Esposter/tree/main/openspec/specs/genshin/parity).
60
+ Your host serves region data at `region-data-base-url` and every game-data record at `game-data-base-url`, each object and index entry that `gameDataLock.json` names as `<base>/<sha256>.json`, with CORS for your page's origin. Esposter's own accounts admit only Esposter's origins, so another host must publish its own copy.
61
+
62
+ ## <a name="key-exports">🧩 Key Exports</a>
63
+
64
+ | Export | Kind | Purpose |
65
+ | ------------------- | ---------- | ----------------------------------------------------------------------------------------------------------- |
66
+ | `GameOpening` | component | The game's opening: its splash sequence, login screen and startup loading |
67
+ | `GenshinSave` | type | One player's whole Genshin save, with one key per system |
68
+ | `genshinSaveSchema` | schema | The Zod schema a save is parsed against, refusing one that is too large |
69
+ | `readCatalogue` | function | The catalogue of regions, areas and subareas, fetched by key and checked against its schema |
70
+ | `readGameData` | function | Reads one game-data record by key and parses it with the schema given |
71
+ | `readGenshinSave` | function | Reads a save into the world's systems, leaving derived ones to the rules that read them on load |
72
+ | `readStatTables` | function | The game's stat tables, fetched by key and checked against their schema |
73
+ | `useSky` | composable | Writes the sky at the game's clock into everything the sky lights, and drifts the clouds with the wind |
74
+ | `WorldScreen` | component | The whole world as one screen with its own canvas, opened once its names, tables and first view have loaded |
59
75
 
60
76
  ## <a name="license">⚖️ License</a>
61
77
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genshin-world",
3
- "version": "4.3.1",
3
+ "version": "4.4.0",
4
4
  "description": "Genshin Impact's world as a fan recreation: the catalogue of regions and areas, each region's authored data, and the TresJS components that build it on genshin-engine.",
5
5
  "keywords": [
6
6
  "genshin-engine",
@@ -36,7 +36,6 @@
36
36
  },
37
37
  "exports": {
38
38
  ".": "./dist/index.js",
39
- "./characterPack": "./dist/characterPack.js",
40
39
  "./save": "./dist/save.js",
41
40
  "./sceneExport": "./dist/sceneExport.js",
42
41
  "./terrainTileWorker": "./dist/terrainTileWorker.js",
@@ -56,34 +55,31 @@
56
55
  "parity": "vite --config parity/vite.config.ts",
57
56
  "test": "vitest",
58
57
  "test:visual": "vitest --config vitest.browser.config.ts",
59
- "typecheck": "vue-tsc"
60
- },
61
- "dependencies": {
62
- "fflate": "^0.8.3"
58
+ "typecheck": "tsrs --fast --runExternalCode"
63
59
  },
64
60
  "devDependencies": {
65
- "@esposter/configuration": "4.3.1",
66
- "@esposter/shared-node": "4.3.1",
61
+ "@esposter/configuration": "4.4.0",
62
+ "@esposter/shared-node": "4.4.0",
67
63
  "@fontsource/signika": "^5.3.0",
68
- "@tsdown/css": "^0.23.1",
69
- "@types/node": "^26.6.5",
64
+ "@tsdown/css": "0.23.2",
65
+ "@types/node": "^26.6.6",
70
66
  "@types/three": "^0.186.0",
71
67
  "@webgpu/types": "^0.1.74",
72
- "rolldown": "^1.2.14",
73
- "tsdown": "^0.23.1",
68
+ "rolldown": "^1.2.16",
69
+ "tsdown": "0.23.2",
74
70
  "type-fest": "^5.10.0",
75
- "vite": "^8.3.4",
71
+ "vite": "^8.3.5",
76
72
  "vitest": "^5.0.5",
77
73
  "vitest-browser-vue": "^3.1.0",
78
74
  "vue-tsc": "3.3.11"
79
75
  },
80
76
  "peerDependencies": {
81
- "@esposter/shared": "4.3.1",
82
- "@tresjs/core": "^5.9.3",
77
+ "@esposter/shared": "4.4.0",
78
+ "@tresjs/core": "^5.10.1",
83
79
  "@vueuse/core": "^15.0.0",
84
- "genshin-engine": "4.3.1",
85
- "genshin-interface": "4.3.1",
86
- "genshin-text": "4.3.1",
80
+ "genshin-engine": "4.4.0",
81
+ "genshin-interface": "4.4.0",
82
+ "genshin-text": "4.4.0",
87
83
  "three": "^0.186.1",
88
84
  "vue": "^3.5.44",
89
85
  "zod": "^4.6.7"
@@ -91,5 +87,5 @@
91
87
  "inlinedDependencies": {
92
88
  "type-fest": "5.10.0"
93
89
  },
94
- "gitHead": "777a39636b789c13af33ed13370246ccf6dbaf31"
90
+ "gitHead": "e1a416c4b91da69cc2aa259b50a4d656f204d272"
95
91
  }
@@ -1,13 +0,0 @@
1
- import "./GameDataset-B6H7oezV.js";
2
- //#region src/services/combat/damage/ElementDamageBonusAttributeMap.ts
3
- const ElementDamageBonusAttributeMap = {
4
- ["Wind"]: "FIGHT_PROP_WIND_ADD_HURT",
5
- ["Ice"]: "FIGHT_PROP_ICE_ADD_HURT",
6
- ["Grass"]: "FIGHT_PROP_GRASS_ADD_HURT",
7
- ["Electric"]: "FIGHT_PROP_ELEC_ADD_HURT",
8
- ["Rock"]: "FIGHT_PROP_ROCK_ADD_HURT",
9
- ["Water"]: "FIGHT_PROP_WATER_ADD_HURT",
10
- ["Fire"]: "FIGHT_PROP_FIRE_ADD_HURT"
11
- };
12
- //#endregion
13
- export { ElementDamageBonusAttributeMap as t };
@@ -1,14 +0,0 @@
1
- //#region src/models/enemy/EnemyState.ts
2
- let EnemyState = /* @__PURE__ */ function(EnemyState) {
3
- EnemyState["Alert"] = "Alert";
4
- EnemyState["Chase"] = "Chase";
5
- EnemyState["Dead"] = "Dead";
6
- EnemyState["Idle"] = "Idle";
7
- EnemyState["Recovery"] = "Recovery";
8
- EnemyState["Return"] = "Return";
9
- EnemyState["Stagger"] = "Stagger";
10
- EnemyState["Windup"] = "Windup";
11
- return EnemyState;
12
- }({});
13
- //#endregion
14
- export { EnemyState as t };
@@ -1,279 +0,0 @@
1
- import { GameLanguage, GameTextKey } from "genshin-text";
2
- import "vue";
3
- import { z } from "zod";
4
- //#region src/models/artifact/ArtifactSlot.ts
5
- let ArtifactSlot = /* @__PURE__ */ function(ArtifactSlot) {
6
- ArtifactSlot["CircletOfLogos"] = "EQUIP_DRESS";
7
- ArtifactSlot["FlowerOfLife"] = "EQUIP_BRACER";
8
- ArtifactSlot["GobletOfEonothem"] = "EQUIP_RING";
9
- ArtifactSlot["PlumeOfDeath"] = "EQUIP_NECKLACE";
10
- ArtifactSlot["SandsOfEon"] = "EQUIP_SHOES";
11
- return ArtifactSlot;
12
- }({});
13
- //#endregion
14
- //#region src/models/character/Attribute.ts
15
- let Attribute = /* @__PURE__ */ function(Attribute) {
16
- Attribute["AllDamageBonus"] = "FIGHT_PROP_ADD_HURT";
17
- Attribute["AnemoDamageBonus"] = "FIGHT_PROP_WIND_ADD_HURT";
18
- Attribute["AnemoResistance"] = "FIGHT_PROP_WIND_SUB_HURT";
19
- Attribute["Attack"] = "FIGHT_PROP_ATTACK";
20
- Attribute["AttackPercent"] = "FIGHT_PROP_ATTACK_PERCENT";
21
- Attribute["BaseAttack"] = "FIGHT_PROP_BASE_ATTACK";
22
- Attribute["BaseDefense"] = "FIGHT_PROP_BASE_DEFENSE";
23
- Attribute["BaseHealth"] = "FIGHT_PROP_BASE_HP";
24
- Attribute["ChargedAttackDamageBonus"] = "FIGHT_PROP_CHARGED_ADD_HURT";
25
- Attribute["CooldownReduction"] = "FIGHT_PROP_SKILL_CD_MINUS_RATIO";
26
- Attribute["CriticalDamage"] = "FIGHT_PROP_CRITICAL_HURT";
27
- Attribute["CriticalRate"] = "FIGHT_PROP_CRITICAL";
28
- Attribute["CryoDamageBonus"] = "FIGHT_PROP_ICE_ADD_HURT";
29
- Attribute["CryoResistance"] = "FIGHT_PROP_ICE_SUB_HURT";
30
- Attribute["DamageReduction"] = "FIGHT_PROP_SUB_HURT";
31
- Attribute["Defense"] = "FIGHT_PROP_DEFENSE";
32
- Attribute["DefensePercent"] = "FIGHT_PROP_DEFENSE_PERCENT";
33
- Attribute["DendroDamageBonus"] = "FIGHT_PROP_GRASS_ADD_HURT";
34
- Attribute["DendroResistance"] = "FIGHT_PROP_GRASS_SUB_HURT";
35
- Attribute["ElectroDamageBonus"] = "FIGHT_PROP_ELEC_ADD_HURT";
36
- Attribute["ElectroResistance"] = "FIGHT_PROP_ELEC_SUB_HURT";
37
- Attribute["ElementalMastery"] = "FIGHT_PROP_ELEMENT_MASTERY";
38
- Attribute["EnergyRecharge"] = "FIGHT_PROP_CHARGE_EFFICIENCY";
39
- Attribute["GeoDamageBonus"] = "FIGHT_PROP_ROCK_ADD_HURT";
40
- Attribute["GeoResistance"] = "FIGHT_PROP_ROCK_SUB_HURT";
41
- Attribute["HealingBonus"] = "FIGHT_PROP_HEAL_ADD";
42
- Attribute["Health"] = "FIGHT_PROP_HP";
43
- Attribute["HealthPercent"] = "FIGHT_PROP_HP_PERCENT";
44
- Attribute["HydroDamageBonus"] = "FIGHT_PROP_WATER_ADD_HURT";
45
- Attribute["HydroResistance"] = "FIGHT_PROP_WATER_SUB_HURT";
46
- Attribute["IncomingHealingBonus"] = "FIGHT_PROP_HEALED_ADD";
47
- Attribute["MovementSpeed"] = "FIGHT_PROP_MOVE_SPEED";
48
- Attribute["NormalAttackDamageBonus"] = "FIGHT_PROP_NORMAL_ADD_HURT";
49
- Attribute["NormalAttackSpeed"] = "FIGHT_PROP_NORMAL_ATTACK_SPEED";
50
- Attribute["PhysicalDamageBonus"] = "FIGHT_PROP_PHYSICAL_ADD_HURT";
51
- Attribute["PhysicalResistance"] = "FIGHT_PROP_PHYSICAL_SUB_HURT";
52
- Attribute["PlungingAttackDamageBonus"] = "FIGHT_PROP_PLUNGING_ATTACK_ADD_HURT";
53
- Attribute["PyroDamageBonus"] = "FIGHT_PROP_FIRE_ADD_HURT";
54
- Attribute["PyroResistance"] = "FIGHT_PROP_FIRE_SUB_HURT";
55
- Attribute["ShieldStrength"] = "FIGHT_PROP_SHIELD_COST_MINUS_RATIO";
56
- Attribute["StellarGlimmerReactionDamageBonus"] = "FIGHT_PROP_STELLAR_GLIMMER_ADD_HURT";
57
- return Attribute;
58
- }({});
59
- const Attributes = Object.values(Attribute);
60
- //#endregion
61
- //#region src/models/character/CombatTalent.ts
62
- let CombatTalent = /* @__PURE__ */ function(CombatTalent) {
63
- CombatTalent["ElementalBurst"] = "ElementalBurst";
64
- CombatTalent["ElementalSkill"] = "ElementalSkill";
65
- CombatTalent["NormalAttack"] = "NormalAttack";
66
- return CombatTalent;
67
- }({});
68
- //#endregion
69
- //#region src/services/character/constants.ts
70
- const ARTIFACT_SLOT_ORDER = [
71
- "EQUIP_BRACER",
72
- "EQUIP_NECKLACE",
73
- "EQUIP_SHOES",
74
- "EQUIP_RING",
75
- "EQUIP_DRESS"
76
- ];
77
- const COMBAT_TALENT_ORDER = [
78
- "NormalAttack",
79
- "ElementalSkill",
80
- "ElementalBurst"
81
- ];
82
- const TALENT_START_LEVEL = 1;
83
- const TALENT_START_LEVELS = {
84
- ["ElementalBurst"]: 1,
85
- ["ElementalSkill"]: 1,
86
- ["NormalAttack"]: 1
87
- };
88
- const CHARACTER_PACK_INDEX_PATH = "index.json";
89
- const CHARACTER_PACK_STORE_NAME = "genshin-character-packs";
90
- const CHARACTER_PACK_STORE_FILES_NAME = "files";
91
- const CHARACTER_PACK_STORE_VERSION = 1;
92
- const MACOS_RESOURCE_FORK_FOLDER = "__MACOSX/";
93
- const CHARACTER_MODEL_PATH = "model.pmx";
94
- const CHARACTER_TERMS_PATH = "terms.txt";
95
- const CHARACTER_TERMS_FILE_NAMES = [
96
- "利用規約",
97
- "readme",
98
- "使用说明",
99
- "规约",
100
- "规则",
101
- "terms"
102
- ];
103
- const CHARACTER_TERMS_NOT_JAPANESE_REGEX = /[\uE000-\uF8FF\uFF61-\uFF9F]/u;
104
- const CHARACTER_PACK_MODEL_NAME_LANGUAGES = [
105
- GameLanguage.ChineseSimplified,
106
- GameLanguage.English,
107
- GameLanguage.Japanese
108
- ];
109
- const CHARACTER_PACK_FETCH_TIMEOUT_MS = 6e4;
110
- const TRAVELER_CHARACTER_ID = 10000007;
111
- const CHARACTER_PMX_RECKONED_UNIT_METRES = .08;
112
- const CHARACTER_PMX_UNIT_METRES = /* @__PURE__ */ new Map([[TRAVELER_CHARACTER_ID, .0909]]);
113
- const TRAVELER_BONUS_QUEST_ID = 6017;
114
- const BASE_ATTRIBUTE_GAME_TEXT_KEYS = [
115
- ["FIGHT_PROP_BASE_HP", GameTextKey.AttributeBaseHealth],
116
- ["FIGHT_PROP_BASE_ATTACK", GameTextKey.AttributeBaseAttack],
117
- ["FIGHT_PROP_BASE_DEFENSE", GameTextKey.AttributeBaseDefense]
118
- ];
119
- const ADVANCED_ATTRIBUTE_GAME_TEXT_KEYS = [
120
- ["FIGHT_PROP_CRITICAL", GameTextKey.AttributeCriticalRate],
121
- ["FIGHT_PROP_CRITICAL_HURT", GameTextKey.AttributeCriticalDamage],
122
- ["FIGHT_PROP_HEAL_ADD", GameTextKey.AttributeHealingBonus],
123
- ["FIGHT_PROP_HEALED_ADD", GameTextKey.AttributeIncomingHealingBonus],
124
- ["FIGHT_PROP_CHARGE_EFFICIENCY", GameTextKey.AttributeEnergyRecharge],
125
- ["FIGHT_PROP_SKILL_CD_MINUS_RATIO", GameTextKey.AttributeCooldownReduction],
126
- ["FIGHT_PROP_SHIELD_COST_MINUS_RATIO", GameTextKey.AttributeShieldStrength]
127
- ];
128
- const ELEMENTAL_ATTRIBUTE_GAME_TEXT_KEYS = [
129
- ["FIGHT_PROP_FIRE_ADD_HURT", GameTextKey.AttributePyroDamageBonus],
130
- ["FIGHT_PROP_WATER_ADD_HURT", GameTextKey.AttributeHydroDamageBonus],
131
- ["FIGHT_PROP_GRASS_ADD_HURT", GameTextKey.AttributeDendroDamageBonus],
132
- ["FIGHT_PROP_ELEC_ADD_HURT", GameTextKey.AttributeElectroDamageBonus],
133
- ["FIGHT_PROP_WIND_ADD_HURT", GameTextKey.AttributeAnemoDamageBonus],
134
- ["FIGHT_PROP_ICE_ADD_HURT", GameTextKey.AttributeCryoDamageBonus],
135
- ["FIGHT_PROP_ROCK_ADD_HURT", GameTextKey.AttributeGeoDamageBonus],
136
- ["FIGHT_PROP_PHYSICAL_ADD_HURT", GameTextKey.AttributePhysicalDamageBonus],
137
- ["FIGHT_PROP_FIRE_SUB_HURT", GameTextKey.AttributePyroResistance],
138
- ["FIGHT_PROP_WATER_SUB_HURT", GameTextKey.AttributeHydroResistance],
139
- ["FIGHT_PROP_GRASS_SUB_HURT", GameTextKey.AttributeDendroResistance],
140
- ["FIGHT_PROP_ELEC_SUB_HURT", GameTextKey.AttributeElectroResistance],
141
- ["FIGHT_PROP_WIND_SUB_HURT", GameTextKey.AttributeAnemoResistance],
142
- ["FIGHT_PROP_ICE_SUB_HURT", GameTextKey.AttributeCryoResistance],
143
- ["FIGHT_PROP_ROCK_SUB_HURT", GameTextKey.AttributeGeoResistance],
144
- ["FIGHT_PROP_PHYSICAL_SUB_HURT", GameTextKey.AttributePhysicalResistance]
145
- ];
146
- const MASTERLESS_STELLA_FORTUNA_ID = 104300;
147
- const MASTERLESS_LEVEL_LIFTS = /* @__PURE__ */ new Map([[90, {
148
- count: 1,
149
- level: 95
150
- }], [95, {
151
- count: 2,
152
- level: 100
153
- }]]);
154
- const CHARACTER_EXP_MATERIALS = [
155
- {
156
- exp: 2e4,
157
- id: 104003
158
- },
159
- {
160
- exp: 5e3,
161
- id: 104002
162
- },
163
- {
164
- exp: 1e3,
165
- id: 104001
166
- }
167
- ];
168
- const CHARACTER_EXP_PER_MORA = 5;
169
- const WHOLE_ATTRIBUTES = [
170
- "FIGHT_PROP_BASE_ATTACK",
171
- "FIGHT_PROP_BASE_DEFENSE",
172
- "FIGHT_PROP_BASE_HP",
173
- "FIGHT_PROP_ATTACK",
174
- "FIGHT_PROP_DEFENSE",
175
- "FIGHT_PROP_HP",
176
- "FIGHT_PROP_ELEMENT_MASTERY"
177
- ];
178
- //#endregion
179
- //#region src/models/character/AttributeLine.ts
180
- const attributeLineSchema = z.object({
181
- attribute: z.enum(Attribute),
182
- value: z.number()
183
- });
184
- //#endregion
185
- //#region src/models/Element.ts
186
- let Element = /* @__PURE__ */ function(Element) {
187
- Element["Anemo"] = "Wind";
188
- Element["Cryo"] = "Ice";
189
- Element["Dendro"] = "Grass";
190
- Element["Electro"] = "Electric";
191
- Element["Geo"] = "Rock";
192
- Element["Hydro"] = "Water";
193
- Element["Pyro"] = "Fire";
194
- return Element;
195
- }({});
196
- const Elements = [
197
- "Fire",
198
- "Water",
199
- "Wind",
200
- "Electric",
201
- "Grass",
202
- "Ice",
203
- "Rock"
204
- ];
205
- //#endregion
206
- //#region src/models/data/GameDataset.ts
207
- let GameDataset = /* @__PURE__ */ function(GameDataset) {
208
- GameDataset["Achievements"] = "achievements";
209
- GameDataset["AchievementText"] = "achievementText";
210
- GameDataset["AdventureRank"] = "adventureRank";
211
- GameDataset["Archive"] = "archive";
212
- GameDataset["ArchiveText"] = "archiveText";
213
- GameDataset["BookBody"] = "bookBody";
214
- GameDataset["Catalogue"] = "catalogue";
215
- GameDataset["CharacterTrials"] = "characterTrials";
216
- GameDataset["Chests"] = "chests";
217
- GameDataset["Commissions"] = "commissions";
218
- GameDataset["Cooking"] = "cooking";
219
- GameDataset["Crafting"] = "crafting";
220
- GameDataset["CraftingBenchPlaces"] = "craftingBenchPlaces";
221
- GameDataset["DomainChallengeLevels"] = "domainChallengeLevels";
222
- GameDataset["Domains"] = "domains";
223
- GameDataset["Enemies"] = "enemies";
224
- GameDataset["Expeditions"] = "expeditions";
225
- GameDataset["Exploration"] = "exploration";
226
- GameDataset["Fishing"] = "fishing";
227
- GameDataset["Forging"] = "forging";
228
- GameDataset["Friendship"] = "friendship";
229
- GameDataset["FrostbearingTreePlaces"] = "frostbearingTreePlaces";
230
- GameDataset["Gadgets"] = "gadgets";
231
- GameDataset["Gathering"] = "gathering";
232
- GameDataset["Gcg"] = "gcg";
233
- GameDataset["GcgText"] = "gcgText";
234
- GameDataset["Ground"] = "ground";
235
- GameDataset["Home"] = "home";
236
- GameDataset["Hud"] = "hud";
237
- GameDataset["Imaginarium"] = "imaginarium";
238
- GameDataset["Items"] = "items";
239
- GameDataset["Kits"] = "kits";
240
- GameDataset["KitSources"] = "kitSources";
241
- GameDataset["LeyLine"] = "leyLine";
242
- GameDataset["Login"] = "login";
243
- GameDataset["Mail"] = "mail";
244
- GameDataset["MailText"] = "mailText";
245
- GameDataset["MaterialSources"] = "materialSources";
246
- GameDataset["MiningOutcrops"] = "miningOutcrops";
247
- GameDataset["NameText"] = "nameText";
248
- GameDataset["Oculi"] = "oculi";
249
- GameDataset["OfferingPlaces"] = "offeringPlaces";
250
- GameDataset["Offerings"] = "offerings";
251
- GameDataset["Profile"] = "profile";
252
- GameDataset["Puzzles"] = "puzzles";
253
- GameDataset["Quests"] = "quests";
254
- GameDataset["QuestText"] = "questText";
255
- GameDataset["Regions"] = "regions";
256
- GameDataset["Reputation"] = "reputation";
257
- GameDataset["SceneGroups"] = "sceneGroups";
258
- GameDataset["SceneNpcBorn"] = "sceneNpcBorn";
259
- GameDataset["Shops"] = "shops";
260
- GameDataset["ShrineKeySources"] = "shrineKeySources";
261
- GameDataset["SkillGlyphs"] = "skillGlyphs";
262
- GameDataset["SpiralAbyss"] = "spiralAbyss";
263
- GameDataset["Splash"] = "splash";
264
- GameDataset["StandingTalks"] = "standingTalks";
265
- GameDataset["StandingTalkText"] = "standingTalkText";
266
- GameDataset["Stats"] = "stats";
267
- GameDataset["StatueLevels"] = "statueLevels";
268
- GameDataset["TalentLabels"] = "talentLabels";
269
- GameDataset["TalentMultipliers"] = "talentMultipliers";
270
- GameDataset["Tips"] = "tips";
271
- GameDataset["TipText"] = "tipText";
272
- GameDataset["TransPoints"] = "transPoints";
273
- GameDataset["Wildlife"] = "wildlife";
274
- GameDataset["Windrise"] = "windrise";
275
- GameDataset["WishSchedule"] = "wishSchedule";
276
- return GameDataset;
277
- }({});
278
- //#endregion
279
- export { TRAVELER_CHARACTER_ID as A, ELEMENTAL_ATTRIBUTE_GAME_TEXT_KEYS as C, TALENT_START_LEVEL as D, MASTERLESS_STELLA_FORTUNA_ID as E, ArtifactSlot as F, CombatTalent as M, Attribute as N, TALENT_START_LEVELS as O, Attributes as P, COMBAT_TALENT_ORDER as S, MASTERLESS_LEVEL_LIFTS as T, CHARACTER_PMX_RECKONED_UNIT_METRES as _, ADVANCED_ATTRIBUTE_GAME_TEXT_KEYS as a, CHARACTER_TERMS_NOT_JAPANESE_REGEX as b, CHARACTER_EXP_MATERIALS as c, CHARACTER_PACK_FETCH_TIMEOUT_MS as d, CHARACTER_PACK_INDEX_PATH as f, CHARACTER_PACK_STORE_VERSION as g, CHARACTER_PACK_STORE_NAME as h, attributeLineSchema as i, WHOLE_ATTRIBUTES as j, TRAVELER_BONUS_QUEST_ID as k, CHARACTER_EXP_PER_MORA as l, CHARACTER_PACK_STORE_FILES_NAME as m, Element as n, ARTIFACT_SLOT_ORDER as o, CHARACTER_PACK_MODEL_NAME_LANGUAGES as p, Elements as r, BASE_ATTRIBUTE_GAME_TEXT_KEYS as s, GameDataset as t, CHARACTER_MODEL_PATH as u, CHARACTER_PMX_UNIT_METRES as v, MACOS_RESOURCE_FORK_FOLDER as w, CHARACTER_TERMS_PATH as x, CHARACTER_TERMS_FILE_NAMES as y };
@@ -1,34 +0,0 @@
1
- //#region src/models/kit/KitEventKind.ts
2
- let KitEventKind = /* @__PURE__ */ function(KitEventKind) {
3
- KitEventKind["BurstUsed"] = "BurstUsed";
4
- KitEventKind["CharacterSwapped"] = "CharacterSwapped";
5
- KitEventKind["ChargedAttackLanded"] = "ChargedAttackLanded";
6
- KitEventKind["ChestOpened"] = "ChestOpened";
7
- KitEventKind["CrystallizeShardPickedUp"] = "CrystallizeShardPickedUp";
8
- KitEventKind["DamageTaken"] = "DamageTaken";
9
- KitEventKind["EffectExpired"] = "EffectExpired";
10
- KitEventKind["ElementApplied"] = "ElementApplied";
11
- KitEventKind["EnemyDefeated"] = "EnemyDefeated";
12
- KitEventKind["EnemyHit"] = "EnemyHit";
13
- KitEventKind["EnergyParticleCollected"] = "EnergyParticleCollected";
14
- KitEventKind["FallRefused"] = "FallRefused";
15
- KitEventKind["HealthChanged"] = "HealthChanged";
16
- KitEventKind["MoraPickedUp"] = "MoraPickedUp";
17
- KitEventKind["NightsoulBurst"] = "NightsoulBurst";
18
- KitEventKind["NightsoulPointsConsumed"] = "NightsoulPointsConsumed";
19
- KitEventKind["NightsoulPointsGained"] = "NightsoulPointsGained";
20
- KitEventKind["NormalAttackLanded"] = "NormalAttackLanded";
21
- KitEventKind["NormalAttackStarted"] = "NormalAttackStarted";
22
- KitEventKind["PartyMemberStruck"] = "PartyMemberStruck";
23
- KitEventKind["ReactionTriggered"] = "ReactionTriggered";
24
- KitEventKind["ShieldAbsorbed"] = "ShieldAbsorbed";
25
- KitEventKind["ShieldCast"] = "ShieldCast";
26
- KitEventKind["SkillUsed"] = "SkillUsed";
27
- KitEventKind["StatusTicked"] = "StatusTicked";
28
- KitEventKind["TauntDamaged"] = "TauntDamaged";
29
- KitEventKind["WeakPointHit"] = "WeakPointHit";
30
- KitEventKind["WildlifeStruck"] = "WildlifeStruck";
31
- return KitEventKind;
32
- }({});
33
- //#endregion
34
- export { KitEventKind as t };
@@ -1,41 +0,0 @@
1
- import { t as TransformativeReactionType } from "./TransformativeReactionType-CleFzf8J.js";
2
- import { mergeObjectsStrict } from "@esposter/shared";
3
- //#region src/models/combat/AmplifyingReactionType.ts
4
- let AmplifyingReactionType = /* @__PURE__ */ function(AmplifyingReactionType) {
5
- AmplifyingReactionType["Melt"] = "Melt";
6
- AmplifyingReactionType["Vaporize"] = "Vaporize";
7
- return AmplifyingReactionType;
8
- }({});
9
- //#endregion
10
- //#region src/models/combat/CatalyzeReactionType.ts
11
- let CatalyzeReactionType = /* @__PURE__ */ function(CatalyzeReactionType) {
12
- CatalyzeReactionType["Aggravate"] = "Aggravate";
13
- CatalyzeReactionType["Spread"] = "Spread";
14
- return CatalyzeReactionType;
15
- }({});
16
- //#endregion
17
- //#region src/models/combat/LunarReactionType.ts
18
- let LunarReactionType = /* @__PURE__ */ function(LunarReactionType) {
19
- LunarReactionType["LunarBloom"] = "LunarBloom";
20
- LunarReactionType["LunarCharged"] = "LunarCharged";
21
- LunarReactionType["LunarCrystallize"] = "LunarCrystallize";
22
- return LunarReactionType;
23
- }({});
24
- //#endregion
25
- //#region src/models/combat/StellarReactionType.ts
26
- let StellarReactionType = /* @__PURE__ */ function(StellarReactionType) {
27
- StellarReactionType["StellarConduct"] = "StellarConduct";
28
- StellarReactionType["StellarSwirl"] = "StellarSwirl";
29
- return StellarReactionType;
30
- }({});
31
- //#endregion
32
- //#region src/models/combat/ReactionType.ts
33
- var BaseReactionType = /* @__PURE__ */ function(BaseReactionType) {
34
- BaseReactionType["Crystallize"] = "Crystallize";
35
- BaseReactionType["Frozen"] = "Frozen";
36
- BaseReactionType["Quicken"] = "Quicken";
37
- return BaseReactionType;
38
- }(BaseReactionType || {});
39
- const ReactionType = mergeObjectsStrict(AmplifyingReactionType, BaseReactionType, CatalyzeReactionType, LunarReactionType, StellarReactionType, TransformativeReactionType);
40
- //#endregion
41
- export { AmplifyingReactionType as a, CatalyzeReactionType as i, StellarReactionType as n, LunarReactionType as r, ReactionType as t };
@@ -1,15 +0,0 @@
1
- //#region src/models/combat/TransformativeReactionType.ts
2
- let TransformativeReactionType = /* @__PURE__ */ function(TransformativeReactionType) {
3
- TransformativeReactionType["Bloom"] = "Bloom";
4
- TransformativeReactionType["Burgeon"] = "Burgeon";
5
- TransformativeReactionType["Burning"] = "Burning";
6
- TransformativeReactionType["ElectroCharged"] = "ElectroCharged";
7
- TransformativeReactionType["Hyperbloom"] = "Hyperbloom";
8
- TransformativeReactionType["Overloaded"] = "Overloaded";
9
- TransformativeReactionType["Shattered"] = "Shattered";
10
- TransformativeReactionType["Superconduct"] = "Superconduct";
11
- TransformativeReactionType["Swirl"] = "Swirl";
12
- return TransformativeReactionType;
13
- }({});
14
- //#endregion
15
- export { TransformativeReactionType as t };
@@ -1,20 +0,0 @@
1
- //#region src/services/kit/effects/addKitEffect.ts
2
- const checkIsRestartedBy = (earlier, effect) => {
3
- if (earlier.kind === "buff" && effect.kind === "buff") return earlier.characterId === effect.characterId && earlier.attribute === effect.attribute && earlier.source === effect.source;
4
- if (earlier.kind === "infusion" && effect.kind === "infusion") return earlier.characterId === effect.characterId && earlier.element === effect.element;
5
- if (earlier.kind === "status" && effect.kind === "status") return earlier.characterId === effect.characterId && earlier.id === effect.id;
6
- if (earlier.kind === "stance" && effect.kind === "stance") return earlier.characterId === effect.characterId;
7
- if (earlier.kind === "antiCold" && effect.kind === "antiCold") return true;
8
- if (earlier.kind === "field" && effect.kind === "field") return effect.isStacked !== true && earlier.characterId === effect.characterId && earlier.id !== void 0 && earlier.id === effect.id;
9
- if (earlier.kind === "elementCriticalDamage" && effect.kind === "elementCriticalDamage") return earlier.characterId === effect.characterId && earlier.element === effect.element && earlier.source === effect.source;
10
- return false;
11
- };
12
- const addKitEffect = (kitEffectState, effect) => {
13
- if (effect.kind === "shield") {
14
- for (const earlier of kitEffectState.effects) if (earlier.kind === "shield" && Boolean(earlier.isCrystallize) === Boolean(effect.isCrystallize) && (effect.isCrystallize || earlier.characterId === effect.characterId)) earlier.secondsRemaining = 0;
15
- }
16
- const index = kitEffectState.effects.findIndex((earlier) => checkIsRestartedBy(earlier, effect));
17
- kitEffectState.effects = index === -1 ? [...kitEffectState.effects, effect] : kitEffectState.effects.with(index, effect);
18
- };
19
- //#endregion
20
- export { addKitEffect as t };
@@ -1,9 +0,0 @@
1
- import { t as addKitEffect } from "./addKitEffect-B922PsCn.js";
2
- //#region src/services/kit/effects/addKitStatus.ts
3
- const addKitStatus = (kitEffectState, characterId, status) => addKitEffect(kitEffectState, {
4
- characterId,
5
- kind: "status",
6
- ...status
7
- });
8
- //#endregion
9
- export { addKitStatus as t };