genshin-world 4.1.2 → 4.3.1

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 (239) hide show
  1. package/README.md +2 -2
  2. package/dist/ElementDamageBonusAttributeMap-r29fkvtM.js +13 -0
  3. package/dist/EnemyState-DV57Bh7L.js +14 -0
  4. package/dist/GameDataset-B6H7oezV.js +279 -0
  5. package/dist/KitEventKind-CGMNB7W9.js +34 -0
  6. package/dist/{ReactionType-BBSdxyO3.js → ReactionType-hpFnoVev.js} +10 -16
  7. package/dist/TransformativeReactionType-CleFzf8J.js +15 -0
  8. package/dist/{addKitEffect-DBqTfm_3.js → addKitEffect-B922PsCn.js} +3 -0
  9. package/dist/addKitStatus-B0kqLgt1.js +9 -0
  10. package/dist/ainoKit-9nNWJtt8.js +111 -0
  11. package/dist/albedoKit-CqDSRYSS.js +133 -0
  12. package/dist/{alhaithamKit-Bhs-coX9.js → alhaithamKit-CPqHnLHg.js} +22 -8
  13. package/dist/aloyKit-mX4ue1UK.js +67 -0
  14. package/dist/alyoshaKit-BT4RmJiZ.js +4 -0
  15. package/dist/amberKit-DiseylUk.js +86 -0
  16. package/dist/arlecchinoKit-Ktk2qBrZ.js +17 -0
  17. package/dist/ayakaKit-B8lRaVEX.js +85 -0
  18. package/dist/{ayatoKit-BXZNajk7.js → ayatoKit-C1d3zZO0.js} +33 -4
  19. package/dist/baizhuKit-BahbIHOM.js +82 -0
  20. package/dist/barbaraKit-DyVdn4JU.js +123 -0
  21. package/dist/{beidouKit-sQUahtIk.js → beidouKit-DtdW2iYD.js} +39 -8
  22. package/dist/{bennettKit-Cr-zZ_25.js → bennettKit-DMybe5yt.js} +16 -6
  23. package/dist/{candaceKit-BUs_wwFU.js → candaceKit-D2JxxJ-U.js} +23 -14
  24. package/dist/castKitField-_74Co83C.js +23 -0
  25. package/dist/{characterPack-YAEqbhAX.d.ts → characterPack-COXASMYv.d.ts} +36 -9
  26. package/dist/characterPack-DibegH5Y.js +723 -0
  27. package/dist/characterPack.d.ts +1 -1
  28. package/dist/characterPack.js +3 -1
  29. package/dist/{charlotteKit-BOZiCPEb.js → charlotteKit-BHanMBgA.js} +34 -20
  30. package/dist/chascaKit-CF8KPyfH.js +53 -0
  31. package/dist/checkIsKitShieldLive-Ch8BgpHZ.js +4 -0
  32. package/dist/chevreuseKit-CH5xu1yJ.js +48 -0
  33. package/dist/{chioriKit-CxRUSHNw.js → chioriKit-CyJV9RuV.js} +4 -1
  34. package/dist/{chongyunKit-jrWQKRkG.js → chongyunKit-Bfp6g05V.js} +11 -15
  35. package/dist/citlaliKit-BFxlFfsf.js +63 -0
  36. package/dist/clorindeKit-CVP7rxb2.js +62 -0
  37. package/dist/collectKitEnergyDrops-Bt4C9o5I.js +66 -0
  38. package/dist/colleiKit-CCIYW8bc.js +52 -0
  39. package/dist/columbinaKit-CJ0as-TP.js +281 -0
  40. package/dist/computeFacingAngle-BaRnmfMH.js +8 -0
  41. package/dist/constants-C5MNdAtu.js +74 -0
  42. package/dist/constants-CFW7hhnp.js +187 -0
  43. package/dist/constants-DCZ-jxqC.js +4 -0
  44. package/dist/consumeKitResource-CbrNQtZP.js +18 -0
  45. package/dist/countKitResource-DvrWXcCc.js +5 -0
  46. package/dist/{createWindriseGroundPaint-BmZkGq-r.js → createWindriseGroundPaint-3I4-42A5.js} +14 -10
  47. package/dist/{cynoKit-DpfT5dmS.js → cynoKit-BsdVe5ip.js} +33 -8
  48. package/dist/dahliaKit-BvAE-bdw.js +21 -0
  49. package/dist/dehyaKit-DiC7yHRH.js +24 -0
  50. package/dist/dilucKit-C9Nz6xLi.js +167 -0
  51. package/dist/dionaKit-CSA9iGCG.js +69 -0
  52. package/dist/{doriKit-G9XTwwCP.js → doriKit-MallfU4i.js} +3 -2
  53. package/dist/{durinKit-BIYdUkbh.js → durinKit-Cwno0X9u.js} +7 -6
  54. package/dist/{emilieKit-0b2vhNtl.js → emilieKit-WNRG1HiW.js} +1 -1
  55. package/dist/emitKitEvent-MEMMkn9X.js +12 -0
  56. package/dist/escoffierKit-DC0knooj.js +96 -0
  57. package/dist/{eulaKit-DAENHIEx.js → eulaKit-B714Qm9u.js} +32 -16
  58. package/dist/{faruzanKit-BcW6D-N3.js → faruzanKit-Bnz3BRKw.js} +6 -4
  59. package/dist/findKitStatus-c5kVgwo6.js +4 -0
  60. package/dist/{fischlKit-Bm8vNmuV.js → fischlKit-BKJSDlae.js} +11 -13
  61. package/dist/flinsKit-CP5D22yk.js +31 -0
  62. package/dist/freminetKit-BKugfnRC.js +21 -0
  63. package/dist/{furinaKit-BREisAdJ.js → furinaKit-BGd_lLjr.js} +54 -43
  64. package/dist/gainKitResource-Cb8C2L3s.js +15 -0
  65. package/dist/gainPartyMemberEnergy-D9hiqeb4.js +12 -0
  66. package/dist/gamingKit-kIgqMnFq.js +26 -0
  67. package/dist/{ganyuKit-DLJa1t-Z.js → ganyuKit-DemmOZho.js} +31 -20
  68. package/dist/getActiveCharacterId-BAGBdS2c.js +10 -0
  69. package/dist/getBuffedCombatant-B7Fe7E_P.js +101 -0
  70. package/dist/getDeployedCharacterIds-ED-6JY4w.js +4 -0
  71. package/dist/getDeployedCombatants-BqXm9a6o.js +17 -0
  72. package/dist/getPartyMember-CPyR8-gA.js +9 -0
  73. package/dist/gorouKit-D1aEnA6A.js +154 -0
  74. package/dist/heizouKit-ePG5r1Cn.js +50 -0
  75. package/dist/huTaoKit-4-GOh-Vv.js +147 -0
  76. package/dist/iansanKit-CRWpDWLi.js +146 -0
  77. package/dist/ifaKit-DIM0kU9K.js +40 -0
  78. package/dist/illugaKit-D1QkAPS6.js +112 -0
  79. package/dist/{index-DQB91Tfq.d.ts → index-CPoeaSkB.d.ts} +19875 -7580
  80. package/dist/index.d.ts +4 -4
  81. package/dist/index.js +47247 -25551
  82. package/dist/ineffaKit-vPT9zyfI.js +155 -0
  83. package/dist/{ittoKit-CfwXkR0g.js → ittoKit-DzOW-TE9.js} +33 -12
  84. package/dist/jahodaKit-9YGHCAcA.js +347 -0
  85. package/dist/{jeanKit-Do8vx5Kp.js → jeanKit-9eNCZ6dx.js} +39 -5
  86. package/dist/kachinaKit-BrwrswKB.js +7 -0
  87. package/dist/kaeyaKit-CY35PXmA.js +92 -0
  88. package/dist/kavehKit-BE7gKtWP.js +34 -0
  89. package/dist/{kazuhaKit-C5gn8iGg.js → kazuhaKit-qOCjcrqH.js} +26 -4
  90. package/dist/keqingKit-BzAWT9BG.js +101 -0
  91. package/dist/kinichKit-CymKuu1M.js +72 -0
  92. package/dist/kiraraKit-DyhPmhEL.js +71 -0
  93. package/dist/kleeKit-BwHcJznq.js +96 -0
  94. package/dist/kokomiKit-CA0CzriO.js +84 -0
  95. package/dist/kujouSaraKit-BW83jN0G.js +96 -0
  96. package/dist/{kukiKit-DcARldP9.js → kukiKit-AxsqxqeV.js} +22 -10
  97. package/dist/lanYanKit-ttJg9kuB.js +27 -0
  98. package/dist/laumaKit-Byo_-u9y.js +162 -0
  99. package/dist/laylaKit-L2t_Rj6L.js +181 -0
  100. package/dist/lisaKit-BsYIJpRR.js +66 -0
  101. package/dist/lynetteKit-N8fgD5-q.js +40 -0
  102. package/dist/lyneyKit-T586Gpbd.js +43 -0
  103. package/dist/mavuikaKit-nJaEDdfr.js +22 -0
  104. package/dist/{mikaKit-C9xDhjJg.js → mikaKit-CdLY5aCh.js} +6 -2
  105. package/dist/mizukiKit-BEXzx_Y6.js +58 -0
  106. package/dist/monaKit-ONoXQhmJ.js +146 -0
  107. package/dist/mualaniKit-DXSW984Q.js +7 -0
  108. package/dist/nahidaKit-f_e4vgfj.js +113 -0
  109. package/dist/naviaKit-BtcUuWFE.js +140 -0
  110. package/dist/neferKit-12ZI_Dj4.js +30 -0
  111. package/dist/neuvilletteKit-l08eZ2jR.js +119 -0
  112. package/dist/nicoleKit-BGBQ8CMU.js +282 -0
  113. package/dist/nilouKit-BH5jWBqC.js +105 -0
  114. package/dist/{ningguangKit-N88BhNb_.js → ningguangKit-YmHdRYcn.js} +20 -12
  115. package/dist/noelleKit-IDYWuE-6.js +148 -0
  116. package/dist/odetteKit-Dw5i_A2J.js +102 -0
  117. package/dist/{ororonKit-DiAd2dlh.js → ororonKit-HsTfXvsW.js} +10 -4
  118. package/dist/pruneKit-PR-_GqAt.js +35 -0
  119. package/dist/{qiqiKit-DCtsriE7.js → qiqiKit-HX-bDmRf.js} +18 -1
  120. package/dist/{raidenKit-BBWMmPFn.js → raidenKit-DUUHQxaP.js} +19 -10
  121. package/dist/{razorKit-CBgdHYic.js → razorKit-BQIWQCQH.js} +44 -12
  122. package/dist/{readCharacterAvatar-C7FufK7J.js → readCharacterAvatar-QXdaK_b0.js} +16 -13
  123. package/dist/removeKitEffects--6C1cGOY.js +6 -0
  124. package/dist/rosariaKit-Dn-L-EAF.js +60 -0
  125. package/dist/sandroneKit-BwVm_e-C.js +4 -0
  126. package/dist/save-BONR7TY2.js +2602 -0
  127. package/dist/save.d.ts +2 -2
  128. package/dist/save.js +1 -1
  129. package/dist/sayuKit-CzPYsFzM.js +68 -0
  130. package/dist/{sceneExport-BZaF05K-.d.ts → sceneExport-BmTj9FRK.d.ts} +2 -1
  131. package/dist/{sceneExport-DiiIi0PM.js → sceneExport-p78Obc7R.js} +2 -1
  132. package/dist/sceneExport.d.ts +1 -1
  133. package/dist/sceneExport.js +1 -1
  134. package/dist/sethosKit-Dnj7Y8q0.js +7 -0
  135. package/dist/shenheKit-DyoqKfsa.js +153 -0
  136. package/dist/sigewinneKit-a6h94xdX.js +22 -0
  137. package/dist/spendKitResource-BMOGVq9a.js +10 -0
  138. package/dist/style.css +1353 -395
  139. package/dist/{sucroseKit-DF0jcI2y.js → sucroseKit-D2zXGz1h.js} +32 -8
  140. package/dist/{tartagliaKit-Bbtww18S.js → tartagliaKit-BwGA6N1Y.js} +16 -15
  141. package/dist/terrainTileWorker.js +3 -3
  142. package/dist/thomaKit-BJfMbEIx.js +96 -0
  143. package/dist/tighnariKit-RYM02O_t.js +46 -0
  144. package/dist/varesaKit-tl3QT31L.js +37 -0
  145. package/dist/{ventiKit-BcQkbI-z.js → ventiKit-FYuBhbPY.js} +5 -4
  146. package/dist/vesnaKit-CmM1CVe6.js +4 -0
  147. package/dist/vodyanitsaKit-7WoQIUHv.js +4 -0
  148. package/dist/wriothesleyKit-BtcN4_Bv.js +103 -0
  149. package/dist/{xianglingKit-BPQN7cxU.js → xianglingKit-BQjcNu7M.js} +9 -3
  150. package/dist/xianyunKit-D76nKV4f.js +108 -0
  151. package/dist/{xiaoKit-BDI_SODG.js → xiaoKit-DPd4UkOr.js} +36 -21
  152. package/dist/xilonenKit-BykTSGYe.js +42 -0
  153. package/dist/{xingqiuKit-Cv8JYeYO.js → xingqiuKit-BZz9JUTt.js} +35 -14
  154. package/dist/{xinyanKit-CffF-Er0.js → xinyanKit-DN0kCOuW.js} +41 -16
  155. package/dist/{yaeMikoKit-xAKYm2K6.js → yaeMikoKit-hw1By6wO.js} +17 -4
  156. package/dist/{yanfeiKit-C6elnkmn.js → yanfeiKit-CnIuIJrr.js} +37 -4
  157. package/dist/yaoyaoKit-5ny2CT69.js +202 -0
  158. package/dist/yelanKit-CQcriSs3.js +79 -0
  159. package/dist/yoimiyaKit-BlohgeOv.js +91 -0
  160. package/dist/yunjinKit-BJEkLGZt.js +87 -0
  161. package/dist/{zhongliKit-uMdKUTP-.js → zhongliKit-Cm3k5sX5.js} +21 -11
  162. package/dist/zibaiKit-C0elIlw8.js +63 -0
  163. package/package.json +10 -13
  164. package/dist/ainoKit-Dy3vTp3B.js +0 -28
  165. package/dist/albedoKit-CU5N1Hnm.js +0 -43
  166. package/dist/aloyKit-C7x_Jf16.js +0 -32
  167. package/dist/amberKit-BO7ZAQgU.js +0 -38
  168. package/dist/arlecchinoKit-DJawwVVl.js +0 -4
  169. package/dist/ayakaKit-Bu_QuYsR.js +0 -26
  170. package/dist/baizhuKit-8_4IzZ3A.js +0 -33
  171. package/dist/barbaraKit-B5DpLyHJ.js +0 -58
  172. package/dist/characterPack-zycIUHje.js +0 -641
  173. package/dist/chascaKit-C1Csj0Yf.js +0 -4
  174. package/dist/chevreuseKit-DDHga8Tj.js +0 -20
  175. package/dist/citlaliKit-sv7XrzVx.js +0 -4
  176. package/dist/clorindeKit-DxtRn_To.js +0 -4
  177. package/dist/colleiKit-CO_n9qra.js +0 -28
  178. package/dist/columbinaKit-DrW0EvqN.js +0 -31
  179. package/dist/constants-BqrUOf2M.js +0 -48
  180. package/dist/dahliaKit-B8fOPvvi.js +0 -16
  181. package/dist/dehyaKit-42tyEI0Z.js +0 -4
  182. package/dist/dilucKit-EwLUSPgs.js +0 -63
  183. package/dist/dionaKit-89B1hwYL.js +0 -48
  184. package/dist/escoffierKit-Da5UAvAF.js +0 -48
  185. package/dist/flinsKit-GUnFJdUg.js +0 -9
  186. package/dist/freminetKit-CpwsVmTT.js +0 -4
  187. package/dist/gamingKit-D9ekWGMJ.js +0 -4
  188. package/dist/gorouKit-DkpaGNA8.js +0 -94
  189. package/dist/heizouKit-B6kRXVCP.js +0 -35
  190. package/dist/huTaoKit-drjrzLjf.js +0 -58
  191. package/dist/iansanKit-RNjD9nSq.js +0 -4
  192. package/dist/ifaKit-CXWxCOPI.js +0 -4
  193. package/dist/illugaKit-BFtXIf3P.js +0 -4
  194. package/dist/ineffaKit-3J0FJo2E.js +0 -51
  195. package/dist/jahodaKit-C1sdSDfr.js +0 -97
  196. package/dist/kachinaKit-DWLNDpgO.js +0 -4
  197. package/dist/kaeyaKit-DU8Df4RE.js +0 -14
  198. package/dist/kavehKit-BWoAaKs4.js +0 -9
  199. package/dist/keqingKit-uGsb_p7t.js +0 -12
  200. package/dist/kinichKit-Dp3lNUJt.js +0 -22
  201. package/dist/kiraraKit-CCAGXouk.js +0 -43
  202. package/dist/kleeKit-BzcJLC2i.js +0 -48
  203. package/dist/kokomiKit-DBdTlTDr.js +0 -42
  204. package/dist/kujouSaraKit-DDE-24jd.js +0 -56
  205. package/dist/lanYanKit-B3lwZ7OW.js +0 -18
  206. package/dist/laumaKit-DkG-i0rL.js +0 -59
  207. package/dist/laylaKit-DYtz0tSZ.js +0 -41
  208. package/dist/lisaKit-CWUiiam1.js +0 -22
  209. package/dist/lynetteKit-BnNW81Pm.js +0 -20
  210. package/dist/lyneyKit-D6yTnfFv.js +0 -19
  211. package/dist/mavuikaKit-CUC1kHRJ.js +0 -4
  212. package/dist/mizukiKit-DY-gHM8N.js +0 -4
  213. package/dist/monaKit-B748iTEy.js +0 -26
  214. package/dist/mualaniKit-B-Km_dcQ.js +0 -4
  215. package/dist/nahidaKit-BGRc-swN.js +0 -4
  216. package/dist/naviaKit-CHh2VdX3.js +0 -64
  217. package/dist/neferKit-BTALTTiV.js +0 -4
  218. package/dist/neuvilletteKit-DAfX_2tC.js +0 -4
  219. package/dist/nicoleKit-BVjL7LI0.js +0 -4
  220. package/dist/nilouKit-BgM4u-hg.js +0 -52
  221. package/dist/noelleKit-DDewnuJ9.js +0 -48
  222. package/dist/pruneKit-CHkC_OSB.js +0 -4
  223. package/dist/rosariaKit-D_RDXpLp.js +0 -29
  224. package/dist/save-CEbj1mOx.js +0 -854
  225. package/dist/sayuKit-Hnv4iA3_.js +0 -35
  226. package/dist/sethosKit-8EK04AA4.js +0 -4
  227. package/dist/shenheKit-DqrG2I4S.js +0 -50
  228. package/dist/sigewinneKit-CYJyadTr.js +0 -10
  229. package/dist/thomaKit-Zm5AJ9Fm.js +0 -64
  230. package/dist/tighnariKit-CSa_Yqpp.js +0 -4
  231. package/dist/varesaKit-CMXLbBv9.js +0 -4
  232. package/dist/wriothesleyKit-CBTnYlOy.js +0 -4
  233. package/dist/xianyunKit-CVhuYBde.js +0 -4
  234. package/dist/xilonenKit-YAVOPRwm.js +0 -4
  235. package/dist/yaoyaoKit-CaPIIp-i.js +0 -4
  236. package/dist/yelanKit-Da0oQ6yu.js +0 -33
  237. package/dist/yoimiyaKit-DTENWB4y.js +0 -49
  238. package/dist/yunjinKit-PP4yeyn1.js +0 -22
  239. package/dist/zibaiKit-Dq6mFWSx.js +0 -4
package/README.md CHANGED
@@ -25,7 +25,7 @@ It ships no image, model or sound from the game: every mesh, texture and shader
25
25
  ## <a name="getting-started">🚀 Getting Started</a>
26
26
 
27
27
  ```bash
28
- pnpm i genshin-world genshin-engine genshin-interface @esposter/shared @tresjs/cientos @tresjs/core @vueuse/core three vue zod
28
+ pnpm i genshin-world genshin-engine genshin-interface @esposter/shared @tresjs/core @vueuse/core three vue zod
29
29
  ```
30
30
 
31
31
  Mount `WorldScreen`, which brings its own canvas, and pass in only what your bundler and server decide, and load the screens' styles once:
@@ -55,7 +55,7 @@ The game's data is not bundled. Every record the world reads — the opening's t
55
55
 
56
56
  ## <a name="documentation">📖 Documentation</a>
57
57
 
58
- We highly recommend you take a look at the [documentation](https://esposter.com/docs/api/modules/genshin-world.html) to level up. The world's design is in the app's [Genshin docs](https://esposter.com/docs/genshin), and how each screen is matched to the game is its [parity page](https://esposter.com/docs/genshin/parity).
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).
59
59
 
60
60
  ## <a name="license">⚖️ License</a>
61
61
 
@@ -0,0 +1,13 @@
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 };
@@ -0,0 +1,14 @@
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 };
@@ -0,0 +1,279 @@
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 };
@@ -0,0 +1,34 @@
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,18 +1,5 @@
1
+ import { t as TransformativeReactionType } from "./TransformativeReactionType-CleFzf8J.js";
1
2
  import { mergeObjectsStrict } from "@esposter/shared";
2
- //#region src/models/combat/TransformativeReactionType.ts
3
- let TransformativeReactionType = /* @__PURE__ */ function(TransformativeReactionType) {
4
- TransformativeReactionType["Bloom"] = "Bloom";
5
- TransformativeReactionType["Burgeon"] = "Burgeon";
6
- TransformativeReactionType["Burning"] = "Burning";
7
- TransformativeReactionType["ElectroCharged"] = "ElectroCharged";
8
- TransformativeReactionType["Hyperbloom"] = "Hyperbloom";
9
- TransformativeReactionType["Overloaded"] = "Overloaded";
10
- TransformativeReactionType["Shattered"] = "Shattered";
11
- TransformativeReactionType["Superconduct"] = "Superconduct";
12
- TransformativeReactionType["Swirl"] = "Swirl";
13
- return TransformativeReactionType;
14
- }({});
15
- //#endregion
16
3
  //#region src/models/combat/AmplifyingReactionType.ts
17
4
  let AmplifyingReactionType = /* @__PURE__ */ function(AmplifyingReactionType) {
18
5
  AmplifyingReactionType["Melt"] = "Melt";
@@ -35,6 +22,13 @@ let LunarReactionType = /* @__PURE__ */ function(LunarReactionType) {
35
22
  return LunarReactionType;
36
23
  }({});
37
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
38
32
  //#region src/models/combat/ReactionType.ts
39
33
  var BaseReactionType = /* @__PURE__ */ function(BaseReactionType) {
40
34
  BaseReactionType["Crystallize"] = "Crystallize";
@@ -42,6 +36,6 @@ var BaseReactionType = /* @__PURE__ */ function(BaseReactionType) {
42
36
  BaseReactionType["Quicken"] = "Quicken";
43
37
  return BaseReactionType;
44
38
  }(BaseReactionType || {});
45
- const ReactionType = mergeObjectsStrict(AmplifyingReactionType, BaseReactionType, CatalyzeReactionType, LunarReactionType, TransformativeReactionType);
39
+ const ReactionType = mergeObjectsStrict(AmplifyingReactionType, BaseReactionType, CatalyzeReactionType, LunarReactionType, StellarReactionType, TransformativeReactionType);
46
40
  //#endregion
47
- export { TransformativeReactionType as a, AmplifyingReactionType as i, LunarReactionType as n, CatalyzeReactionType as r, ReactionType as t };
41
+ export { AmplifyingReactionType as a, CatalyzeReactionType as i, StellarReactionType as n, LunarReactionType as r, ReactionType as t };
@@ -0,0 +1,15 @@
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 };
@@ -4,6 +4,9 @@ const checkIsRestartedBy = (earlier, effect) => {
4
4
  if (earlier.kind === "infusion" && effect.kind === "infusion") return earlier.characterId === effect.characterId && earlier.element === effect.element;
5
5
  if (earlier.kind === "status" && effect.kind === "status") return earlier.characterId === effect.characterId && earlier.id === effect.id;
6
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;
7
10
  return false;
8
11
  };
9
12
  const addKitEffect = (kitEffectState, effect) => {
@@ -0,0 +1,9 @@
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 };
@@ -0,0 +1,111 @@
1
+ import "./GameDataset-B6H7oezV.js";
2
+ import { t as gainPartyMemberEnergy } from "./gainPartyMemberEnergy-D9hiqeb4.js";
3
+ import "./KitEventKind-CGMNB7W9.js";
4
+ import { t as findKitStatus } from "./findKitStatus-c5kVgwo6.js";
5
+ import { t as addKitStatus } from "./addKitStatus-B0kqLgt1.js";
6
+ import { t as castKitField } from "./castKitField-_74Co83C.js";
7
+ import { buffKitMember, castKitSummon, checkIsKitStatusActive, elementalMasteryMultiplier, getMoonsignLevel, queueKitPassiveHit, startKitCooldown } from "./index.js";
8
+ //#region src/services/kit/characters/ainoKit.ts
9
+ const ASCENSION_4 = 4;
10
+ const ASCENSION_1 = 1;
11
+ const ASCENSION_1_WATER_BALL_INTERVAL_SECONDS = .7;
12
+ const ASCENSION_1_WATER_BALL_RADIUS = 4;
13
+ const CONSTELLATION_4 = 4;
14
+ const CONSTELLATION_4_COOLDOWN_SECONDS = 10;
15
+ const CONSTELLATION_4_ENERGY = 10;
16
+ const CONSTELLATION_4_STATUS_ID = "aino-constellation-4";
17
+ const CONSTELLATION_1 = 1;
18
+ const CONSTELLATION_1_MASTERY = 80;
19
+ const CONSTELLATION_1_SECONDS = 15;
20
+ const CONSTELLATION_1_STATUS_ID = "aino-constellation-1";
21
+ const CONSTELLATION_2 = 2;
22
+ const CONSTELLATION_2_ATTACK_SHARE = .25;
23
+ const CONSTELLATION_2_MASTERY_SHARE = 1;
24
+ const CONSTELLATION_2_COOLDOWN_ID = "aino-constellation-2-cooldown";
25
+ const CONSTELLATION_2_COOLDOWN_SECONDS = 5;
26
+ const CONSTELLATION_2_RADIUS = 1.5;
27
+ const BURST_FIELD_ID = "aino-precision-hydronic-cooler";
28
+ const createAinoKitBehaviour = ({ kit, readHit, readParameter, readSeconds }) => {
29
+ const masteryShare = readParameter("ascension4MasteryShare");
30
+ const burstFirstTickSeconds = readSeconds("burstStart");
31
+ const waterBallHit = readHit("waterBall", { additiveBaseDamageBonus: (combatant) => combatant.ascension >= ASCENSION_4 ? elementalMasteryMultiplier(combatant, masteryShare) : 0 });
32
+ const waterBall = {
33
+ ...waterBallHit,
34
+ hitmarkSeconds: waterBallHit.hitmarkSeconds - burstFirstTickSeconds
35
+ };
36
+ const burstTickIntervalSeconds = readSeconds("waterBallInterval");
37
+ const burstSeconds = readSeconds("burstDuration");
38
+ const burstRadius = readParameter("burstRadius");
39
+ const ascendantWaterBall = {
40
+ ...waterBall,
41
+ hitArea: {
42
+ ...waterBall.hitArea,
43
+ radius: burstRadius + ASCENSION_1_WATER_BALL_RADIUS
44
+ },
45
+ internalCooldownTag: "AinoBurstMoonHit"
46
+ };
47
+ const { internalCooldownTag: _internalCooldownTag, ...waterBallWithoutCooldown } = waterBall;
48
+ const constellation2WaterBall = {
49
+ ...waterBallWithoutCooldown,
50
+ additiveBaseDamageBonus: (combatant) => (waterBall.additiveBaseDamageBonus?.(combatant) ?? 0) + elementalMasteryMultiplier(combatant, CONSTELLATION_2_MASTERY_SHARE),
51
+ hitArea: {
52
+ ...waterBall.hitArea,
53
+ radius: CONSTELLATION_2_RADIUS
54
+ },
55
+ talentMultiplier: CONSTELLATION_2_ATTACK_SHARE
56
+ };
57
+ const skillHits = kit.elementalSkill.hits;
58
+ return {
59
+ burst: { onStart: ({ activeCombatant: combatant, body: { facing, height, position }, characterIdCombatantMap, kitEffectState, party }) => {
60
+ const isAscendantBurst = combatant.ascension >= ASCENSION_1 && getMoonsignLevel(characterIdCombatantMap, party) === "AscendantGleam";
61
+ const burstField = castKitField(kitEffectState, combatant.characterId, position, {
62
+ id: BURST_FIELD_ID,
63
+ isFollowing: true,
64
+ nextTickSeconds: burstFirstTickSeconds,
65
+ onTick: ({ kitEffectState: tickKitEffectState }) => castKitSummon(tickKitEffectState, {
66
+ facing,
67
+ height,
68
+ position: burstField.centre
69
+ }, combatant, [isAscendantBurst ? ascendantWaterBall : waterBall], { attackTag: "ElementalBurst" }),
70
+ radius: burstRadius,
71
+ secondsRemaining: burstFirstTickSeconds + burstSeconds,
72
+ tickIntervalSeconds: isAscendantBurst ? ASCENSION_1_WATER_BALL_INTERVAL_SECONDS : burstTickIntervalSeconds
73
+ });
74
+ } },
75
+ onKitEvent: (event, context, combatant) => {
76
+ const { activeCombatant, kitEffectState, party } = context;
77
+ if (combatant.constellationCount >= CONSTELLATION_1 && (event.kind === "SkillUsed" || event.kind === "BurstUsed") && event.characterId === combatant.characterId) {
78
+ addKitStatus(kitEffectState, combatant.characterId, {
79
+ id: CONSTELLATION_1_STATUS_ID,
80
+ secondsRemaining: CONSTELLATION_1_SECONDS
81
+ });
82
+ buffKitMember(kitEffectState, combatant.characterId, {
83
+ amount: CONSTELLATION_1_MASTERY,
84
+ attribute: "FIGHT_PROP_ELEMENT_MASTERY",
85
+ secondsRemaining: CONSTELLATION_1_SECONDS,
86
+ source: CONSTELLATION_1_STATUS_ID
87
+ });
88
+ }
89
+ if (event.kind === "CharacterSwapped" && event.characterId !== combatant.characterId) {
90
+ const constellation1Seconds = findKitStatus(kitEffectState.effects, combatant.characterId, CONSTELLATION_1_STATUS_ID)?.secondsRemaining ?? 0;
91
+ if (constellation1Seconds > 0) buffKitMember(kitEffectState, event.characterId, {
92
+ amount: CONSTELLATION_1_MASTERY,
93
+ attribute: "FIGHT_PROP_ELEMENT_MASTERY",
94
+ isEndedOnSwap: true,
95
+ secondsRemaining: constellation1Seconds,
96
+ source: CONSTELLATION_1_STATUS_ID
97
+ });
98
+ }
99
+ if (event.kind !== "DamageTaken") return;
100
+ if (combatant.constellationCount >= CONSTELLATION_2 && activeCombatant.characterId !== combatant.characterId && event.striker.characterId === activeCombatant.characterId && kitEffectState.effects.some((effect) => effect.kind === "field" && effect.id === BURST_FIELD_ID && effect.secondsRemaining > 0) && startKitCooldown(kitEffectState, combatant.characterId, CONSTELLATION_2_COOLDOWN_ID, CONSTELLATION_2_COOLDOWN_SECONDS)) queueKitPassiveHit(context, combatant, constellation2WaterBall, event.enemy);
101
+ if (combatant.constellationCount < CONSTELLATION_4 || event.striker.characterId !== combatant.characterId || !skillHits.includes(event.hit) || checkIsKitStatusActive(kitEffectState.effects, combatant.characterId, CONSTELLATION_4_STATUS_ID)) return;
102
+ addKitStatus(kitEffectState, combatant.characterId, {
103
+ id: CONSTELLATION_4_STATUS_ID,
104
+ secondsRemaining: CONSTELLATION_4_COOLDOWN_SECONDS
105
+ });
106
+ gainPartyMemberEnergy(party, combatant, CONSTELLATION_4_ENERGY);
107
+ }
108
+ };
109
+ };
110
+ //#endregion
111
+ export { createAinoKitBehaviour };