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.
Files changed (140) hide show
  1. package/package.json +8 -8
  2. package/dist/ReactionType-BBSdxyO3.js +0 -47
  3. package/dist/addKitEffect-DBqTfm_3.js +0 -17
  4. package/dist/ainoKit-Dy3vTp3B.js +0 -28
  5. package/dist/albedoKit-CU5N1Hnm.js +0 -43
  6. package/dist/alhaithamKit-Bhs-coX9.js +0 -212
  7. package/dist/aloyKit-C7x_Jf16.js +0 -32
  8. package/dist/amberKit-BO7ZAQgU.js +0 -38
  9. package/dist/arlecchinoKit-DJawwVVl.js +0 -4
  10. package/dist/ayakaKit-Bu_QuYsR.js +0 -26
  11. package/dist/ayatoKit-BXZNajk7.js +0 -108
  12. package/dist/baizhuKit-8_4IzZ3A.js +0 -33
  13. package/dist/barbaraKit-B5DpLyHJ.js +0 -58
  14. package/dist/beidouKit-sQUahtIk.js +0 -59
  15. package/dist/bennettKit-Cr-zZ_25.js +0 -66
  16. package/dist/candaceKit-BUs_wwFU.js +0 -84
  17. package/dist/characterPack-YAEqbhAX.d.ts +0 -116
  18. package/dist/characterPack-zycIUHje.js +0 -641
  19. package/dist/characterPack.d.ts +0 -2
  20. package/dist/characterPack.js +0 -1
  21. package/dist/charlotteKit-BOZiCPEb.js +0 -90
  22. package/dist/chascaKit-C1Csj0Yf.js +0 -4
  23. package/dist/chevreuseKit-DDHga8Tj.js +0 -20
  24. package/dist/chioriKit-CxRUSHNw.js +0 -28
  25. package/dist/chongyunKit-jrWQKRkG.js +0 -104
  26. package/dist/citlaliKit-sv7XrzVx.js +0 -4
  27. package/dist/clorindeKit-DxtRn_To.js +0 -4
  28. package/dist/colleiKit-CO_n9qra.js +0 -28
  29. package/dist/columbinaKit-DrW0EvqN.js +0 -31
  30. package/dist/constants--ARZpp1u.js +0 -49
  31. package/dist/constants-BqrUOf2M.js +0 -48
  32. package/dist/constants-CSFiwyHy.js +0 -46
  33. package/dist/createWindriseGroundPaint-BmZkGq-r.js +0 -295
  34. package/dist/cynoKit-DpfT5dmS.js +0 -179
  35. package/dist/dahliaKit-B8fOPvvi.js +0 -16
  36. package/dist/dehyaKit-42tyEI0Z.js +0 -4
  37. package/dist/dilucKit-EwLUSPgs.js +0 -63
  38. package/dist/dionaKit-89B1hwYL.js +0 -48
  39. package/dist/doriKit-G9XTwwCP.js +0 -24
  40. package/dist/durinKit-BIYdUkbh.js +0 -49
  41. package/dist/emilieKit-0b2vhNtl.js +0 -21
  42. package/dist/escoffierKit-Da5UAvAF.js +0 -48
  43. package/dist/eulaKit-DAENHIEx.js +0 -129
  44. package/dist/faruzanKit-BcW6D-N3.js +0 -71
  45. package/dist/fischlKit-Bm8vNmuV.js +0 -98
  46. package/dist/flinsKit-GUnFJdUg.js +0 -9
  47. package/dist/freminetKit-CpwsVmTT.js +0 -4
  48. package/dist/furinaKit-BREisAdJ.js +0 -279
  49. package/dist/gamingKit-D9ekWGMJ.js +0 -4
  50. package/dist/ganyuKit-DLJa1t-Z.js +0 -74
  51. package/dist/gorouKit-DkpaGNA8.js +0 -94
  52. package/dist/heizouKit-B6kRXVCP.js +0 -35
  53. package/dist/huTaoKit-drjrzLjf.js +0 -58
  54. package/dist/iansanKit-RNjD9nSq.js +0 -4
  55. package/dist/ifaKit-CXWxCOPI.js +0 -4
  56. package/dist/illugaKit-BFtXIf3P.js +0 -4
  57. package/dist/index-DQB91Tfq.d.ts +0 -19820
  58. package/dist/index.d.ts +0 -4
  59. package/dist/index.js +0 -29218
  60. package/dist/ineffaKit-3J0FJo2E.js +0 -51
  61. package/dist/ittoKit-CfwXkR0g.js +0 -112
  62. package/dist/jahodaKit-C1sdSDfr.js +0 -97
  63. package/dist/jeanKit-Do8vx5Kp.js +0 -56
  64. package/dist/kachinaKit-DWLNDpgO.js +0 -4
  65. package/dist/kaeyaKit-DU8Df4RE.js +0 -14
  66. package/dist/kavehKit-BWoAaKs4.js +0 -9
  67. package/dist/kazuhaKit-C5gn8iGg.js +0 -55
  68. package/dist/keqingKit-uGsb_p7t.js +0 -12
  69. package/dist/kinichKit-Dp3lNUJt.js +0 -22
  70. package/dist/kiraraKit-CCAGXouk.js +0 -43
  71. package/dist/kleeKit-BzcJLC2i.js +0 -48
  72. package/dist/kokomiKit-DBdTlTDr.js +0 -42
  73. package/dist/kujouSaraKit-DDE-24jd.js +0 -56
  74. package/dist/kukiKit-DcARldP9.js +0 -59
  75. package/dist/lanYanKit-B3lwZ7OW.js +0 -18
  76. package/dist/laumaKit-DkG-i0rL.js +0 -59
  77. package/dist/laylaKit-DYtz0tSZ.js +0 -41
  78. package/dist/linneaKit-DlVhnbGM.js +0 -4
  79. package/dist/lisaKit-CWUiiam1.js +0 -22
  80. package/dist/lohenKit-D-uagI_g.js +0 -4
  81. package/dist/lynetteKit-BnNW81Pm.js +0 -20
  82. package/dist/lyneyKit-D6yTnfFv.js +0 -19
  83. package/dist/mavuikaKit-CUC1kHRJ.js +0 -4
  84. package/dist/mikaKit-C9xDhjJg.js +0 -17
  85. package/dist/mizukiKit-DY-gHM8N.js +0 -4
  86. package/dist/monaKit-B748iTEy.js +0 -26
  87. package/dist/mualaniKit-B-Km_dcQ.js +0 -4
  88. package/dist/nahidaKit-BGRc-swN.js +0 -4
  89. package/dist/naviaKit-CHh2VdX3.js +0 -64
  90. package/dist/neferKit-BTALTTiV.js +0 -4
  91. package/dist/neuvilletteKit-DAfX_2tC.js +0 -4
  92. package/dist/nicoleKit-BVjL7LI0.js +0 -4
  93. package/dist/nilouKit-BgM4u-hg.js +0 -52
  94. package/dist/ningguangKit-N88BhNb_.js +0 -105
  95. package/dist/noelleKit-DDewnuJ9.js +0 -48
  96. package/dist/ororonKit-DiAd2dlh.js +0 -86
  97. package/dist/pruneKit-CHkC_OSB.js +0 -4
  98. package/dist/qiqiKit-DCtsriE7.js +0 -88
  99. package/dist/raidenKit-BBWMmPFn.js +0 -144
  100. package/dist/razorKit-CBgdHYic.js +0 -90
  101. package/dist/readCharacterAvatar-C7FufK7J.js +0 -292
  102. package/dist/rosariaKit-D_RDXpLp.js +0 -29
  103. package/dist/save-CEbj1mOx.js +0 -854
  104. package/dist/save.d.ts +0 -2
  105. package/dist/save.js +0 -1
  106. package/dist/sayuKit-Hnv4iA3_.js +0 -35
  107. package/dist/sceneExport-BZaF05K-.d.ts +0 -70
  108. package/dist/sceneExport-DiiIi0PM.js +0 -27
  109. package/dist/sceneExport.d.ts +0 -2
  110. package/dist/sceneExport.js +0 -1
  111. package/dist/sethosKit-8EK04AA4.js +0 -4
  112. package/dist/shenheKit-DqrG2I4S.js +0 -50
  113. package/dist/sigewinneKit-CYJyadTr.js +0 -10
  114. package/dist/skirkKit-BDjoFGAq.js +0 -10
  115. package/dist/style.css +0 -3612
  116. package/dist/sucroseKit-DF0jcI2y.js +0 -101
  117. package/dist/tartagliaKit-Bbtww18S.js +0 -136
  118. package/dist/terrainTileWorker.d.ts +0 -1
  119. package/dist/terrainTileWorker.js +0 -81
  120. package/dist/thomaKit-Zm5AJ9Fm.js +0 -64
  121. package/dist/tighnariKit-CSa_Yqpp.js +0 -4
  122. package/dist/varesaKit-CMXLbBv9.js +0 -4
  123. package/dist/varkaKit-C8_HlTVH.js +0 -4
  124. package/dist/ventiKit-BcQkbI-z.js +0 -52
  125. package/dist/wandererKit-CQM691sn.js +0 -9
  126. package/dist/wriothesleyKit-CBTnYlOy.js +0 -4
  127. package/dist/xianglingKit-BPQN7cxU.js +0 -108
  128. package/dist/xianyunKit-CVhuYBde.js +0 -4
  129. package/dist/xiaoKit-BDI_SODG.js +0 -90
  130. package/dist/xilonenKit-YAVOPRwm.js +0 -4
  131. package/dist/xingqiuKit-Cv8JYeYO.js +0 -106
  132. package/dist/xinyanKit-CffF-Er0.js +0 -120
  133. package/dist/yaeMikoKit-xAKYm2K6.js +0 -44
  134. package/dist/yanfeiKit-C6elnkmn.js +0 -86
  135. package/dist/yaoyaoKit-CaPIIp-i.js +0 -4
  136. package/dist/yelanKit-Da0oQ6yu.js +0 -33
  137. package/dist/yoimiyaKit-DTENWB4y.js +0 -49
  138. package/dist/yunjinKit-PP4yeyn1.js +0 -22
  139. package/dist/zhongliKit-uMdKUTP-.js +0 -100
  140. package/dist/zibaiKit-Dq6mFWSx.js +0 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genshin-world",
3
- "version": "4.1.2",
3
+ "version": "4.2.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",
@@ -64,8 +64,8 @@
64
64
  "fflate": "^0.8.3"
65
65
  },
66
66
  "devDependencies": {
67
- "@esposter/configuration": "4.1.2",
68
- "@esposter/shared-node": "4.1.2",
67
+ "@esposter/configuration": "4.2.0",
68
+ "@esposter/shared-node": "4.2.0",
69
69
  "@fontsource/signika": "^5.3.0",
70
70
  "@tsdown/css": "^0.23.1",
71
71
  "@types/node": "^26.6.5",
@@ -80,13 +80,13 @@
80
80
  "vue-tsc": "3.3.11"
81
81
  },
82
82
  "peerDependencies": {
83
- "@esposter/shared": "4.1.2",
83
+ "@esposter/shared": "4.2.0",
84
84
  "@tresjs/cientos": "^5.9.3",
85
85
  "@tresjs/core": "^5.9.3",
86
86
  "@vueuse/core": "^15.0.0",
87
- "genshin-engine": "4.1.2",
88
- "genshin-interface": "4.1.2",
89
- "genshin-text": "4.1.2",
87
+ "genshin-engine": "4.2.0",
88
+ "genshin-interface": "4.2.0",
89
+ "genshin-text": "4.2.0",
90
90
  "three": "^0.186.1",
91
91
  "vue": "^3.5.44",
92
92
  "zod": "^4.6.7"
@@ -94,5 +94,5 @@
94
94
  "inlinedDependencies": {
95
95
  "type-fest": "5.10.0"
96
96
  },
97
- "gitHead": "144e3f98570b015e3181bfbc6cb70d346ce826b5"
97
+ "gitHead": "fef4971cf6a621a2c1850f32fcec19ee4ec0de99"
98
98
  }
@@ -1,47 +0,0 @@
1
- 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
- //#region src/models/combat/AmplifyingReactionType.ts
17
- let AmplifyingReactionType = /* @__PURE__ */ function(AmplifyingReactionType) {
18
- AmplifyingReactionType["Melt"] = "Melt";
19
- AmplifyingReactionType["Vaporize"] = "Vaporize";
20
- return AmplifyingReactionType;
21
- }({});
22
- //#endregion
23
- //#region src/models/combat/CatalyzeReactionType.ts
24
- let CatalyzeReactionType = /* @__PURE__ */ function(CatalyzeReactionType) {
25
- CatalyzeReactionType["Aggravate"] = "Aggravate";
26
- CatalyzeReactionType["Spread"] = "Spread";
27
- return CatalyzeReactionType;
28
- }({});
29
- //#endregion
30
- //#region src/models/combat/LunarReactionType.ts
31
- let LunarReactionType = /* @__PURE__ */ function(LunarReactionType) {
32
- LunarReactionType["LunarBloom"] = "LunarBloom";
33
- LunarReactionType["LunarCharged"] = "LunarCharged";
34
- LunarReactionType["LunarCrystallize"] = "LunarCrystallize";
35
- return LunarReactionType;
36
- }({});
37
- //#endregion
38
- //#region src/models/combat/ReactionType.ts
39
- var BaseReactionType = /* @__PURE__ */ function(BaseReactionType) {
40
- BaseReactionType["Crystallize"] = "Crystallize";
41
- BaseReactionType["Frozen"] = "Frozen";
42
- BaseReactionType["Quicken"] = "Quicken";
43
- return BaseReactionType;
44
- }(BaseReactionType || {});
45
- const ReactionType = mergeObjectsStrict(AmplifyingReactionType, BaseReactionType, CatalyzeReactionType, LunarReactionType, TransformativeReactionType);
46
- //#endregion
47
- export { TransformativeReactionType as a, AmplifyingReactionType as i, LunarReactionType as n, CatalyzeReactionType as r, ReactionType as t };
@@ -1,17 +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
- return false;
8
- };
9
- const addKitEffect = (kitEffectState, effect) => {
10
- if (effect.kind === "shield") {
11
- 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;
12
- }
13
- const index = kitEffectState.effects.findIndex((earlier) => checkIsRestartedBy(earlier, effect));
14
- kitEffectState.effects = index === -1 ? [...kitEffectState.effects, effect] : kitEffectState.effects.with(index, effect);
15
- };
16
- //#endregion
17
- export { addKitEffect as t };
@@ -1,28 +0,0 @@
1
- import "./characterPack-zycIUHje.js";
2
- import { castKitField, castKitSummon } from "./index.js";
3
- //#region src/services/kit/characters/ainoKit.ts
4
- const ASCENSION_4 = 4;
5
- const createAinoKitBehaviour = ({ readHit, readParameter, readSeconds }) => {
6
- const masteryShare = readParameter("ascension4MasteryShare");
7
- const waterBall = readHit("waterBall", { additiveBaseDamageBonus: (combatant) => combatant.ascension >= ASCENSION_4 ? combatant.attributes.attributeTotalMap["FIGHT_PROP_ELEMENT_MASTERY"] * masteryShare : 0 });
8
- const burstFirstTickSeconds = readSeconds("burstStart");
9
- const burstTickIntervalSeconds = readSeconds("waterBallInterval");
10
- const burstSeconds = readSeconds("burstDuration");
11
- const burstRadius = readParameter("burstRadius");
12
- return { burst: { onStart: ({ activeCombatant: combatant, body: { facing, height, position }, kitEffectState }) => {
13
- const burstField = castKitField(kitEffectState, combatant.characterId, position, {
14
- isFollowing: true,
15
- nextTickSeconds: burstFirstTickSeconds,
16
- onTick: ({ kitEffectState: tickKitEffectState }) => castKitSummon(tickKitEffectState, {
17
- facing,
18
- height,
19
- position: burstField.centre
20
- }, combatant, [waterBall]),
21
- radius: burstRadius,
22
- secondsRemaining: burstFirstTickSeconds + burstSeconds,
23
- tickIntervalSeconds: burstTickIntervalSeconds
24
- });
25
- } } };
26
- };
27
- //#endregion
28
- export { createAinoKitBehaviour };
@@ -1,43 +0,0 @@
1
- import { castKitSummon, createAheadBody, findStandingKitSummon, startKitCooldown } from "./index.js";
2
- //#region src/services/kit/characters/albedoKit.ts
3
- const SOLAR_ISOTOMA_ID = "albedo-solar-isotoma";
4
- const TRANSIENT_BLOSSOM_COOLDOWN_STATUS_ID = "albedo-transient-blossom-cooldown";
5
- const createAlbedoKitBehaviour = ({ readHit, readHits, readParameter, readSeconds }) => {
6
- const solarIsotomaAheadMetres = readParameter("solarIsotomaAheadMetres");
7
- const solarIsotomaRadius = readParameter("solarIsotomaRadius");
8
- const solarIsotomaSeconds = readSeconds("solarIsotomaDuration");
9
- const transientBlossomCooldownSeconds = readSeconds("transientBlossomCooldown");
10
- const solarIsotomaHit = readHit("solarIsotoma");
11
- const transientBlossom = readHit("transientBlossom");
12
- const fatalBlossoms = readHits("fatalBlossoms");
13
- return {
14
- burst: { onStart: ({ activeCombatant: combatant, kitEffectState }) => {
15
- const solarIsotoma = findStandingKitSummon(kitEffectState.effects, SOLAR_ISOTOMA_ID, combatant.characterId);
16
- if (solarIsotoma) castKitSummon(kitEffectState, solarIsotoma.body, solarIsotoma.combatant, fatalBlossoms);
17
- } },
18
- onKitEvent: (event, { kitEffectState }, combatant) => {
19
- if (event.kind !== "DamageTaken") return;
20
- const { characterId } = combatant;
21
- const { effects } = kitEffectState;
22
- const solarIsotoma = findStandingKitSummon(effects, SOLAR_ISOTOMA_ID, characterId);
23
- if (!solarIsotoma) return;
24
- const { position } = event.enemy;
25
- if (Math.hypot(position.x - solarIsotoma.body.position.x, position.z - solarIsotoma.body.position.z) > solarIsotomaRadius || !startKitCooldown(kitEffectState, characterId, TRANSIENT_BLOSSOM_COOLDOWN_STATUS_ID, transientBlossomCooldownSeconds)) return;
26
- castKitSummon(kitEffectState, {
27
- facing: 0,
28
- height: 0,
29
- position
30
- }, solarIsotoma.combatant, [transientBlossom]);
31
- },
32
- skill: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => {
33
- for (const effect of kitEffectState.effects) if (effect.kind === "summon" && effect.id === SOLAR_ISOTOMA_ID) effect.secondsRemaining = 0;
34
- castKitSummon(kitEffectState, createAheadBody(body, solarIsotomaAheadMetres), combatant, [solarIsotomaHit], {
35
- id: SOLAR_ISOTOMA_ID,
36
- secondsRemaining: solarIsotomaSeconds,
37
- spawnSeconds: solarIsotomaHit.hitmarkSeconds
38
- });
39
- } }
40
- };
41
- };
42
- //#endregion
43
- export { createAlbedoKitBehaviour };
@@ -1,212 +0,0 @@
1
- import "./characterPack-zycIUHje.js";
2
- import { t as addKitEffect } from "./addKitEffect-DBqTfm_3.js";
3
- import { addKitStatus, buffKitMember, castKitField, castKitSummon, findKitStatus, getDeployedCharacterIds, scheduleKitTask, startKitCooldown } from "./index.js";
4
- import { takeOne } from "@esposter/shared";
5
- //#region src/services/kit/characters/alhaithamKit.ts
6
- const ASCENSION_1 = 1;
7
- const ASCENSION_4 = 4;
8
- const CONSTELLATION_2 = 2;
9
- const CONSTELLATION_4 = 4;
10
- const CONSTELLATION_6 = 6;
11
- const HELD_UNTIL_SWAP_SECONDS = Number.POSITIVE_INFINITY;
12
- const MIRROR_STATUS_ID = "alhaitham-mirrors";
13
- const MIRROR_DECAY_FIELD_ID = "alhaitham-mirror-decay";
14
- const MIRROR_REGEN_TASK_ID = "alhaitham-mirror-regen";
15
- const PROJECTION_ICD_STATUS_ID = "alhaitham-projection-icd";
16
- const ASCENSION_1_ICD_STATUS_ID = "alhaitham-a1-icd";
17
- const CONSTELLATION_2_CURSOR_STATUS_ID = "alhaitham-c2-cursor";
18
- const CONSTELLATION_2_SOURCE_PREFIX = "alhaitham-c2-";
19
- const CONSTELLATION_4_LOSS_SOURCE = "alhaitham-c4-loss";
20
- const CONSTELLATION_4_GAIN_SOURCE = "alhaitham-c4-gain";
21
- const CONSTELLATION_6_SOURCE = "alhaitham-c6";
22
- const findKitField = (effects, id) => effects.find((effect) => effect.kind === "field" && effect.id === id);
23
- const findKitBuff = (effects, characterId, attribute, source) => effects.find((effect) => effect.kind === "buff" && effect.characterId === characterId && effect.attribute === attribute && effect.source === source);
24
- const getMirrorCount = (effects, characterId) => findKitStatus(effects, characterId, MIRROR_STATUS_ID)?.stacks ?? 0;
25
- const setMirrorCount = (kitEffectState, characterId, mirrors) => {
26
- if (mirrors <= 0) {
27
- const status = findKitStatus(kitEffectState.effects, characterId, MIRROR_STATUS_ID);
28
- if (status) {
29
- status.stacks = 0;
30
- status.secondsRemaining = 0;
31
- }
32
- for (const effect of kitEffectState.effects) {
33
- if (effect.kind === "infusion" && effect.characterId === characterId && effect.element === "Grass") effect.secondsRemaining = 0;
34
- if (effect.kind === "field" && effect.id === MIRROR_DECAY_FIELD_ID) effect.secondsRemaining = 0;
35
- }
36
- return;
37
- }
38
- addKitStatus(kitEffectState, characterId, {
39
- id: MIRROR_STATUS_ID,
40
- secondsRemaining: HELD_UNTIL_SWAP_SECONDS,
41
- stacks: mirrors
42
- });
43
- addKitEffect(kitEffectState, {
44
- characterId,
45
- element: "Grass",
46
- kind: "infusion",
47
- secondsRemaining: HELD_UNTIL_SWAP_SECONDS
48
- });
49
- };
50
- const addConstellation2Buff = (kitEffectState, characterId, buffs) => {
51
- const cursor = findKitStatus(kitEffectState.effects, characterId, CONSTELLATION_2_CURSOR_STATUS_ID)?.stacks ?? 0;
52
- addKitStatus(kitEffectState, characterId, {
53
- id: CONSTELLATION_2_CURSOR_STATUS_ID,
54
- secondsRemaining: HELD_UNTIL_SWAP_SECONDS,
55
- stacks: (cursor + 1) % buffs.constellation2StacksMax
56
- });
57
- buffKitMember(kitEffectState, characterId, {
58
- amount: buffs.constellation2ElementalMastery,
59
- attribute: "FIGHT_PROP_ELEMENT_MASTERY",
60
- secondsRemaining: buffs.constellation2Seconds,
61
- source: `${CONSTELLATION_2_SOURCE_PREFIX}${cursor + 1}`
62
- });
63
- };
64
- const addConstellation6Buffs = (kitEffectState, characterId, overflow, buffs) => {
65
- for (let index = 0; index < overflow; index++) {
66
- const critical = findKitBuff(kitEffectState.effects, characterId, "FIGHT_PROP_CRITICAL", CONSTELLATION_6_SOURCE);
67
- if (critical) {
68
- critical.secondsRemaining += buffs.constellation6Seconds;
69
- const criticalDamage = findKitBuff(kitEffectState.effects, characterId, "FIGHT_PROP_CRITICAL_HURT", CONSTELLATION_6_SOURCE);
70
- if (criticalDamage) criticalDamage.secondsRemaining += buffs.constellation6Seconds;
71
- continue;
72
- }
73
- buffKitMember(kitEffectState, characterId, {
74
- amount: buffs.constellation6CriticalRate,
75
- attribute: "FIGHT_PROP_CRITICAL",
76
- secondsRemaining: buffs.constellation6Seconds,
77
- source: CONSTELLATION_6_SOURCE
78
- });
79
- buffKitMember(kitEffectState, characterId, {
80
- amount: buffs.constellation6CriticalDamage,
81
- attribute: "FIGHT_PROP_CRITICAL_HURT",
82
- secondsRemaining: buffs.constellation6Seconds,
83
- source: CONSTELLATION_6_SOURCE
84
- });
85
- }
86
- };
87
- const elementalMasteryMultiplier = (combatant, multiplier) => combatant.attributes.attributeTotalMap["FIGHT_PROP_ELEMENT_MASTERY"] * multiplier;
88
- const getSkillMirrorGain = (effects, characterId) => getMirrorCount(effects, characterId) === 0 ? 2 : 1;
89
- const createAlhaithamKitBehaviour = ({ kit, readHits, readParameter, readSeconds, readSecondsList }) => {
90
- const mirrorSecondsList = readSecondsList("universalityMirrorDelays");
91
- const mirrorDecaySeconds = readSeconds("mirrorDecay");
92
- const projectionCooldownSeconds = readSeconds("projectionAttackCooldown");
93
- const burstMirrorRegenSeconds = readSeconds("particularFieldMirrorDelay");
94
- const projectionElementalMasteryShare = readParameter("projectionAttackElementalMasteryShare");
95
- const burstElementalMasteryShare = readParameter("particularFieldElementalMasteryShare");
96
- const skillElementalMasteryShare = readParameter("universalityElementalMasteryShare");
97
- const mirrorsMax = readParameter("mirrorsMax");
98
- const burstBaseHitCount = readParameter("burstBaseHitCount");
99
- const burstHitCountPerMirror = readParameter("burstHitCountPerMirror");
100
- const ascension1IcdSeconds = readSeconds("ascension1IcdDuration");
101
- const ascension4DamagePerElementalMastery = readParameter("ascension4DamagePerElementalMastery");
102
- const ascension4DamageMax = readParameter("ascension4DamageMax");
103
- const constellation2ElementalMastery = readParameter("constellation2ElementalMastery");
104
- const constellation2Seconds = readSeconds("constellation2Duration");
105
- const constellation2StacksMax = readParameter("constellation2StacksMax");
106
- const constellation4ElementalMasteryPerMirror = readParameter("constellation4ElementalMasteryPerMirror");
107
- const constellation4DendroDamageBonusPerMirror = readParameter("constellation4DendroDamageBonusPerMirror");
108
- const constellation4Seconds = readSeconds("constellation4Duration");
109
- const constellation6CriticalRate = readParameter("constellation6CriticalRate");
110
- const constellationBuffs = {
111
- constellation2ElementalMastery,
112
- constellation2Seconds,
113
- constellation2StacksMax,
114
- constellation6CriticalDamage: readParameter("constellation6CriticalDamage"),
115
- constellation6CriticalRate,
116
- constellation6Seconds: readSeconds("constellation6Duration")
117
- };
118
- const projectionHitBehaviour = { additiveBaseDamageBonus: (striker) => elementalMasteryMultiplier(striker, projectionElementalMasteryShare) };
119
- const projectionAttacks = [
120
- readHits("projectionAttackOneMirror", projectionHitBehaviour),
121
- readHits("projectionAttackTwoMirrors", projectionHitBehaviour),
122
- readHits("projectionAttackThreeMirrors", projectionHitBehaviour)
123
- ];
124
- const particularFieldHits = readHits("particularFieldHits", { additiveBaseDamageBonus: (striker) => elementalMasteryMultiplier(striker, burstElementalMasteryShare) });
125
- const startMirrorDecay = (kitEffectState, body, combatant) => {
126
- const { characterId } = combatant;
127
- const field = findKitField(kitEffectState.effects, MIRROR_DECAY_FIELD_ID);
128
- if (field) {
129
- field.nextTickSeconds = mirrorDecaySeconds;
130
- field.secondsRemaining = HELD_UNTIL_SWAP_SECONDS;
131
- return;
132
- }
133
- castKitField(kitEffectState, characterId, body.position, {
134
- id: MIRROR_DECAY_FIELD_ID,
135
- nextTickSeconds: mirrorDecaySeconds,
136
- onTick: ({ kitEffectState: effectState }) => {
137
- const count = getMirrorCount(effectState.effects, characterId);
138
- setMirrorCount(effectState, characterId, count > 1 ? count - 1 : 0);
139
- },
140
- secondsRemaining: HELD_UNTIL_SWAP_SECONDS,
141
- tickIntervalSeconds: mirrorDecaySeconds
142
- });
143
- };
144
- const gainMirrors = (kitEffectState, body, combatant, generated) => {
145
- if (generated <= 0) return;
146
- const { characterId, constellationCount } = combatant;
147
- const count = getMirrorCount(kitEffectState.effects, characterId);
148
- const total = count + generated;
149
- if (count === 0 || total > mirrorsMax) startMirrorDecay(kitEffectState, body, combatant);
150
- setMirrorCount(kitEffectState, characterId, Math.min(total, mirrorsMax));
151
- if (constellationCount >= CONSTELLATION_2) for (let made = 0; made < generated; made++) addConstellation2Buff(kitEffectState, characterId, constellationBuffs);
152
- if (constellationCount >= CONSTELLATION_6 && total > mirrorsMax) addConstellation6Buffs(kitEffectState, characterId, total - mirrorsMax, constellationBuffs);
153
- };
154
- const triggerProjection = ({ kitEffectState }, { body, combatant }, isMirrorSource) => {
155
- const { ascension, characterId } = combatant;
156
- if (isMirrorSource && ascension >= ASCENSION_1 && startKitCooldown(kitEffectState, characterId, ASCENSION_1_ICD_STATUS_ID, ascension1IcdSeconds)) gainMirrors(kitEffectState, body, combatant, 1);
157
- const count = getMirrorCount(kitEffectState.effects, characterId);
158
- if (count === 0 || !startKitCooldown(kitEffectState, characterId, PROJECTION_ICD_STATUS_ID, projectionCooldownSeconds)) return;
159
- castKitSummon(kitEffectState, body, combatant, takeOne(projectionAttacks, count - 1));
160
- };
161
- const strikeHitBehaviour = { onStrike: (context, strike) => triggerProjection(context, strike, false) };
162
- const mirrorSourceHitBehaviour = { onStrike: (context, strike) => triggerProjection(context, strike, true) };
163
- const createSkillBehaviour = (mirrorSeconds) => ({
164
- hits: [{ additiveBaseDamageBonus: (striker) => elementalMasteryMultiplier(striker, skillElementalMasteryShare) }],
165
- onStart: ({ activeCombatant: combatant, body, kitEffectState }) => scheduleKitTask(kitEffectState, combatant.characterId, mirrorSeconds, (tick) => gainMirrors(tick.kitEffectState, body, combatant, getSkillMirrorGain(tick.kitEffectState.effects, combatant.characterId)))
166
- });
167
- return {
168
- burst: { onStart: ({ activeCombatant: combatant, body, kitEffectState, party }) => {
169
- const { characterId, constellationCount } = combatant;
170
- const consumed = getMirrorCount(kitEffectState.effects, characterId);
171
- castKitSummon(kitEffectState, body, combatant, particularFieldHits.slice(0, burstBaseHitCount + burstHitCountPerMirror * consumed));
172
- setMirrorCount(kitEffectState, characterId, 0);
173
- if (constellationCount >= CONSTELLATION_4 && consumed > 0) for (const memberId of getDeployedCharacterIds(party)) {
174
- if (memberId === characterId) continue;
175
- buffKitMember(kitEffectState, memberId, {
176
- amount: constellation4ElementalMasteryPerMirror * consumed,
177
- attribute: "FIGHT_PROP_ELEMENT_MASTERY",
178
- secondsRemaining: constellation4Seconds,
179
- source: CONSTELLATION_4_LOSS_SOURCE
180
- });
181
- }
182
- const generated = constellationCount >= CONSTELLATION_6 ? mirrorsMax : mirrorsMax - consumed;
183
- if (generated <= 0) return;
184
- scheduleKitTask(kitEffectState, characterId, burstMirrorRegenSeconds, (tick) => {
185
- gainMirrors(tick.kitEffectState, body, combatant, generated);
186
- if (constellationCount >= CONSTELLATION_4) buffKitMember(tick.kitEffectState, characterId, {
187
- amount: constellation4DendroDamageBonusPerMirror * generated,
188
- attribute: "FIGHT_PROP_GRASS_ADD_HURT",
189
- secondsRemaining: constellation4Seconds,
190
- source: CONSTELLATION_4_GAIN_SOURCE
191
- });
192
- }, { id: MIRROR_REGEN_TASK_ID });
193
- } },
194
- chargedAttack: { hits: kit.chargedAttack.hits.map(() => mirrorSourceHitBehaviour) },
195
- getStrikeDamageBonus: ({ combatant, hit }) => combatant.ascension >= ASCENSION_4 && (hit.internalCooldownTag === "ElementalBurst" || hit.internalCooldownTag === "ElementalSkill") ? Math.min(combatant.attributes.attributeTotalMap["FIGHT_PROP_ELEMENT_MASTERY"] * ascension4DamagePerElementalMastery, ascension4DamageMax) : 0,
196
- normalAttacks: kit.normalAttacks.map(({ hits }) => ({ hits: hits.map(() => strikeHitBehaviour) })),
197
- onKitEvent: (event, { kitEffectState }, combatant) => {
198
- if (event.kind !== "CharacterSwapped" || event.previousCharacterId !== combatant.characterId) return;
199
- setMirrorCount(kitEffectState, combatant.characterId, 0);
200
- for (const effect of kitEffectState.effects) if (effect.kind === "field" && effect.id === MIRROR_REGEN_TASK_ID) effect.secondsRemaining = 0;
201
- },
202
- plungeCollision: mirrorSourceHitBehaviour,
203
- plunges: {
204
- ["high"]: { hits: [mirrorSourceHitBehaviour] },
205
- ["low"]: { hits: [mirrorSourceHitBehaviour] }
206
- },
207
- skill: createSkillBehaviour(takeOne(mirrorSecondsList, 0)),
208
- skillHolds: [createSkillBehaviour(takeOne(mirrorSecondsList, 1))]
209
- };
210
- };
211
- //#endregion
212
- export { createAlhaithamKitBehaviour };
@@ -1,32 +0,0 @@
1
- import "./characterPack-zycIUHje.js";
2
- import { t as addKitEffect } from "./addKitEffect-DBqTfm_3.js";
3
- import { addKitStatus, checkHasKitStatus, gainKitResource, spendKitResource } from "./index.js";
4
- //#region src/services/kit/characters/aloyKit.ts
5
- const COIL_RUSHING_ICE_STACKS = 4;
6
- const COIL_RESOURCE_ID = "aloy-coil";
7
- const RUSHING_ICE_STATUS_ID = "aloy-rushing-ice";
8
- const createAloyKitBehaviour = ({ readSeconds }) => {
9
- const rushingIceSeconds = readSeconds("rushingIceDuration");
10
- const addCoilStack = ({ kitEffectState }, { combatant }) => {
11
- if (checkHasKitStatus(kitEffectState.effects, combatant.characterId, RUSHING_ICE_STATUS_ID)) return;
12
- if (gainKitResource(kitEffectState, combatant.characterId, COIL_RESOURCE_ID, 1, COIL_RUSHING_ICE_STACKS) < COIL_RUSHING_ICE_STACKS) return;
13
- spendKitResource(kitEffectState, combatant.characterId, COIL_RESOURCE_ID);
14
- addKitEffect(kitEffectState, {
15
- characterId: combatant.characterId,
16
- element: "Ice",
17
- kind: "infusion",
18
- secondsRemaining: rushingIceSeconds
19
- });
20
- addKitStatus(kitEffectState, combatant.characterId, {
21
- id: RUSHING_ICE_STATUS_ID,
22
- secondsRemaining: rushingIceSeconds
23
- });
24
- };
25
- return { skill: { hits: [
26
- {},
27
- { onStrike: addCoilStack },
28
- { onStrike: addCoilStack }
29
- ] } };
30
- };
31
- //#endregion
32
- export { createAloyKitBehaviour };
@@ -1,38 +0,0 @@
1
- import "./characterPack-zycIUHje.js";
2
- import { castKitSummon, castKitTaunt } from "./index.js";
3
- //#region src/services/kit/characters/amberKit.ts
4
- const EVERY_ARROW_FINDS_ITS_TARGET_ASCENSION = 1;
5
- const EVERY_ARROW_FINDS_ITS_TARGET_CRITICAL_RATE = .1;
6
- const addEveryArrowCriticalRate = (combatant) => {
7
- const { attributeTotalMap } = combatant.attributes;
8
- return {
9
- ...combatant,
10
- attributes: {
11
- ...combatant.attributes,
12
- attributeTotalMap: {
13
- ...attributeTotalMap,
14
- ["FIGHT_PROP_CRITICAL"]: attributeTotalMap["FIGHT_PROP_CRITICAL"] + EVERY_ARROW_FINDS_ITS_TARGET_CRITICAL_RATE
15
- }
16
- }
17
- };
18
- };
19
- const createAmberKitBehaviour = ({ readHit, readHits, readParameter, readSeconds }) => {
20
- const bunnyExplosion = readHit("baronBunnyExplosion");
21
- const bunnyMaxHealthShare = readParameter("baronBunnyMaxHealthShare");
22
- const bunnySeconds = readSeconds("baronBunnySeconds");
23
- const fieryRainArrows = readHits("fieryRainArrows");
24
- const everyArrowFindsItsTargetFieryRainArrows = readHits("everyArrowFindsItsTargetFieryRainArrows");
25
- return {
26
- burst: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => {
27
- const hasEveryArrowFindsItsTarget = combatant.ascension >= EVERY_ARROW_FINDS_ITS_TARGET_ASCENSION;
28
- castKitSummon(kitEffectState, body, hasEveryArrowFindsItsTarget ? addEveryArrowCriticalRate(combatant) : combatant, hasEveryArrowFindsItsTarget ? everyArrowFindsItsTargetFieryRainArrows : fieryRainArrows);
29
- } },
30
- skill: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => castKitTaunt(kitEffectState, body, combatant, {
31
- explosion: bunnyExplosion,
32
- health: bunnyMaxHealthShare * combatant.attributes.maxHealth,
33
- secondsRemaining: bunnySeconds
34
- }) }
35
- };
36
- };
37
- //#endregion
38
- export { createAmberKitBehaviour };
@@ -1,4 +0,0 @@
1
- //#region src/services/kit/characters/arlecchinoKit.ts
2
- const createArlecchinoKitBehaviour = () => ({});
3
- //#endregion
4
- export { createArlecchinoKitBehaviour };
@@ -1,26 +0,0 @@
1
- import "./characterPack-zycIUHje.js";
2
- import { t as addKitEffect } from "./addKitEffect-DBqTfm_3.js";
3
- import { castKitSummon } from "./index.js";
4
- //#region src/services/kit/characters/ayakaKit.ts
5
- const BLIZZARD_BLADE_SEKI_NO_TO_CONSTELLATION = 2;
6
- const SENHO_INFUSION_SECONDS = 5;
7
- const createAyakaKitBehaviour = ({ readHits }) => {
8
- const frostflakeHits = readHits("frostflake");
9
- const smallFrostflakeHits = readHits("smallFrostflake");
10
- return {
11
- burst: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => {
12
- castKitSummon(kitEffectState, body, combatant, frostflakeHits);
13
- if (combatant.constellationCount < BLIZZARD_BLADE_SEKI_NO_TO_CONSTELLATION) return;
14
- castKitSummon(kitEffectState, body, combatant, smallFrostflakeHits);
15
- castKitSummon(kitEffectState, body, combatant, smallFrostflakeHits);
16
- } },
17
- onSprint: ({ activeCombatant: combatant, kitEffectState }) => addKitEffect(kitEffectState, {
18
- characterId: combatant.characterId,
19
- element: "Ice",
20
- kind: "infusion",
21
- secondsRemaining: SENHO_INFUSION_SECONDS
22
- })
23
- };
24
- };
25
- //#endregion
26
- export { createAyakaKitBehaviour };
@@ -1,108 +0,0 @@
1
- import { addKitStatus, castKitField, castKitSummon, enterKitStance, findKitStatus, scheduleKitTask } from "./index.js";
2
- import { takeOne } from "@esposter/shared";
3
- //#region src/services/kit/characters/ayatoKit.ts
4
- const SOUKAI_KANKA_SECONDS = 6;
5
- const CONSTELLATION_6_HIT_MULTIPLIER = 4.5;
6
- const ASCENSION_1 = 1;
7
- const ASCENSION_1_CAST_STACKS = 2;
8
- const NAMISEN_STACKS_MAX = 4;
9
- const CONSTELLATION_1 = 1;
10
- const CONSTELLATION_1_DAMAGE_BONUS = .4;
11
- const CONSTELLATION_1_HEALTH_SHARE = .5;
12
- const CONSTELLATION_2 = 2;
13
- const CONSTELLATION_2_NAMISEN_STACKS_MAX = 5;
14
- const CONSTELLATION_6 = 6;
15
- const HELD_UNTIL_SWAP_SECONDS = Number.POSITIVE_INFINITY;
16
- const NAMISEN_STATUS_ID = "ayato-namisen";
17
- const CONSTELLATION_6_STATUS_ID = "ayato-constellation-6";
18
- const countNamisenStacks = (effects, characterId) => findKitStatus(effects, characterId, NAMISEN_STATUS_ID)?.stacks ?? 0;
19
- const getNamisenStacksMax = (combatant) => combatant.constellationCount >= CONSTELLATION_2 ? CONSTELLATION_2_NAMISEN_STACKS_MAX : NAMISEN_STACKS_MAX;
20
- const createAyatoKitBehaviour = ({ kit, readHit, readHitFields, readParameter, readParameters, readSeconds, readSecondsList }) => {
21
- const namisenShare = readParameter("namisenShare");
22
- const gardenOfPuritySeconds = readParameter("gardenOfPuritySeconds");
23
- const bloomwaterBladeFirstTickSeconds = readSeconds("bloomwaterBladeFirstTick");
24
- const bloomwaterBladeIntervalSeconds = readSeconds("bloomwaterBladeInterval");
25
- const bloomwaterBlade = readHit("bloomwaterBlade");
26
- const illusionSeconds = takeOne(kit.elementalSkill.hits).hitmarkSeconds;
27
- const shunsuikenSeconds = readSeconds("shunsuikenStrike");
28
- const shunsuikenTargetingArea = takeOne(kit.normalAttacks).targetingArea;
29
- const shunsuiken = readHitFields("shunsuiken", ["talentMultiplier"]);
30
- const shunsuikenMultipliers = readParameters("shunsuikenMultipliers");
31
- const constellation6Hits = Array.from(readSecondsList("boundlessOriginHitmarks"), (hitmarkSeconds) => ({
32
- ...shunsuiken,
33
- hitmarkSeconds: hitmarkSeconds - shunsuiken.hitmarkSeconds,
34
- talentMultiplier: CONSTELLATION_6_HIT_MULTIPLIER
35
- }));
36
- const createShunsuikenHit = (talentMultiplier, combatant, kitEffectState) => ({
37
- ...shunsuiken,
38
- additiveBaseDamageBonus: (striker) => striker.attributes.maxHealth * namisenShare * countNamisenStacks(kitEffectState.effects, striker.characterId),
39
- onStrike: ({ kitEffectState: effectState }, { body }) => {
40
- const { characterId } = combatant;
41
- const stacks = countNamisenStacks(effectState.effects, characterId);
42
- if (stacks < getNamisenStacksMax(combatant)) addKitStatus(effectState, characterId, {
43
- id: NAMISEN_STATUS_ID,
44
- secondsRemaining: HELD_UNTIL_SWAP_SECONDS,
45
- stacks: stacks + 1
46
- });
47
- const constellation6 = findKitStatus(effectState.effects, characterId, CONSTELLATION_6_STATUS_ID);
48
- if (!constellation6) return;
49
- constellation6.secondsRemaining = 0;
50
- castKitSummon(effectState, body, combatant, constellation6Hits);
51
- },
52
- talentMultiplier
53
- });
54
- const castGardenOfPurity = (kitEffectState, { facing, height, position }, combatant) => {
55
- const gardenOfPurity = castKitField(kitEffectState, combatant.characterId, position, {
56
- isFollowing: true,
57
- nextTickSeconds: bloomwaterBladeFirstTickSeconds,
58
- onTick: ({ kitEffectState: tickKitEffectState }) => castKitSummon(tickKitEffectState, {
59
- facing,
60
- height,
61
- position: gardenOfPurity.centre
62
- }, combatant, [bloomwaterBlade]),
63
- secondsRemaining: bloomwaterBladeFirstTickSeconds + gardenOfPuritySeconds,
64
- tickIntervalSeconds: bloomwaterBladeIntervalSeconds
65
- });
66
- };
67
- return {
68
- burst: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => castGardenOfPurity(kitEffectState, body, combatant) },
69
- getStrikeDamageBonus: ({ attackTag, combatant }, enemy) => combatant.constellationCount >= CONSTELLATION_1 && attackTag === "NormalAttack" && enemy.health / enemy.maxHealth <= CONSTELLATION_1_HEALTH_SHARE ? CONSTELLATION_1_DAMAGE_BONUS : 0,
70
- onKitEvent: (event, { kitEffectState }, combatant) => {
71
- if (event.kind !== "CharacterSwapped" || event.previousCharacterId !== combatant.characterId) return;
72
- const namisen = findKitStatus(kitEffectState.effects, combatant.characterId, NAMISEN_STATUS_ID);
73
- if (namisen) namisen.secondsRemaining = 0;
74
- },
75
- skill: { onStart: ({ activeCombatant: combatant, kitEffectState }) => {
76
- const { characterId } = combatant;
77
- if (combatant.ascension >= ASCENSION_1) {
78
- addKitStatus(kitEffectState, characterId, {
79
- id: NAMISEN_STATUS_ID,
80
- secondsRemaining: HELD_UNTIL_SWAP_SECONDS,
81
- stacks: ASCENSION_1_CAST_STACKS
82
- });
83
- scheduleKitTask(kitEffectState, characterId, illusionSeconds, ({ kitEffectState: effectState }) => addKitStatus(effectState, characterId, {
84
- id: NAMISEN_STATUS_ID,
85
- secondsRemaining: HELD_UNTIL_SWAP_SECONDS,
86
- stacks: getNamisenStacksMax(combatant)
87
- }));
88
- }
89
- if (combatant.constellationCount >= CONSTELLATION_6) addKitStatus(kitEffectState, characterId, {
90
- id: CONSTELLATION_6_STATUS_ID,
91
- secondsRemaining: HELD_UNTIL_SWAP_SECONDS
92
- });
93
- enterKitStance(kitEffectState, combatant, {
94
- chargedAttack: kit.chargedAttack,
95
- chargedAttackStamina: kit.chargedAttackStamina,
96
- elementalBurst: kit.elementalBurst,
97
- elementalSkill: kit.elementalSkill,
98
- normalAttacks: shunsuikenMultipliers.map((talentMultiplier) => ({
99
- hits: [createShunsuikenHit(talentMultiplier, combatant, kitEffectState)],
100
- seconds: shunsuikenSeconds,
101
- targetingArea: shunsuikenTargetingArea
102
- }))
103
- }, SOUKAI_KANKA_SECONDS, { isEndedOnSwap: true });
104
- } }
105
- };
106
- };
107
- //#endregion
108
- export { createAyatoKitBehaviour };
@@ -1,33 +0,0 @@
1
- import "./characterPack-zycIUHje.js";
2
- import { castKitField, castKitShield } from "./index.js";
3
- //#region src/services/kit/characters/baizhuKit.ts
4
- const createBaizhuKitBehaviour = ({ readHit, readParameter, readSeconds }) => {
5
- const shieldMaxHealthShare = readParameter("seamlessShieldMaxHealthShare");
6
- const shieldFlatHealth = readParameter("seamlessShieldFlatHealth");
7
- const firstShieldSeconds = readSeconds("firstSeamlessShield");
8
- const shieldSeconds = readSeconds("seamlessShield");
9
- const firstRefreshSeconds = readSeconds("firstSeamlessShieldRefresh");
10
- const refreshIntervalSeconds = readSeconds("seamlessShieldRefreshInterval");
11
- const refreshFieldSeconds = readSeconds("seamlessShieldRefreshField");
12
- const spiritvein = readHit("spiritvein");
13
- const castShield = (kitEffectState, combatant, secondsRemaining) => castKitShield(kitEffectState, combatant.characterId, {
14
- element: "Grass",
15
- explosion: {
16
- combatant,
17
- hit: spiritvein
18
- },
19
- health: shieldMaxHealthShare * combatant.attributes.maxHealth + shieldFlatHealth,
20
- secondsRemaining
21
- });
22
- return { burst: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => {
23
- castShield(kitEffectState, combatant, firstShieldSeconds);
24
- castKitField(kitEffectState, combatant.characterId, body.position, {
25
- nextTickSeconds: firstRefreshSeconds,
26
- onTick: ({ kitEffectState: tickKitEffectState }) => castShield(tickKitEffectState, combatant, shieldSeconds),
27
- secondsRemaining: refreshFieldSeconds,
28
- tickIntervalSeconds: refreshIntervalSeconds
29
- });
30
- } } };
31
- };
32
- //#endregion
33
- export { createBaizhuKitBehaviour };