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
@@ -1,58 +0,0 @@
1
- import "./characterPack-zycIUHje.js";
2
- import { buffKitMember, castKitField, castKitSummon, changeKitMemberHealth, getDeployedCharacterIds, scheduleKitTask } from "./index.js";
3
- //#region src/services/kit/characters/barbaraKit.ts
4
- const MELODY_LOOP_TICK_INTERVAL_SECONDS = 5;
5
- const VITALITY_BURST_CONSTELLATION = 2;
6
- const VITALITY_BURST_COOLDOWN_MULTIPLIER = .85;
7
- const VITALITY_BURST_HYDRO_DAMAGE_BONUS = .15;
8
- const checkIsMelodyLoopLive = (striker, effects) => effects.some((effect) => effect.kind === "field" && effect.characterId === striker.characterId && effect.tickIntervalSeconds === MELODY_LOOP_TICK_INTERVAL_SECONDS && effect.secondsRemaining > 0);
9
- const createMelodyLoopTick = (owner, regenerationHeal, loopSeconds) => (context, tickIndex) => {
10
- const { activeCombatant, kitEffectState, party } = context;
11
- changeKitMemberHealth(context, owner, activeCombatant.characterId, regenerationHeal);
12
- if (tickIndex > 0 || owner.constellationCount < VITALITY_BURST_CONSTELLATION) return;
13
- for (const characterId of getDeployedCharacterIds(party)) if (characterId !== owner.characterId) buffKitMember(kitEffectState, characterId, {
14
- amount: VITALITY_BURST_HYDRO_DAMAGE_BONUS,
15
- attribute: "FIGHT_PROP_WATER_ADD_HURT",
16
- secondsRemaining: loopSeconds
17
- });
18
- };
19
- const createBarbaraKitBehaviour = ({ readHits, readParameter, readSeconds }) => {
20
- const regenerationHealthShare = readParameter("regenerationHealthShare");
21
- const regenerationFlatHeal = readParameter("regenerationFlatHeal");
22
- const melodyLoopSeconds = readParameter("melodyLoopSeconds") + readSeconds("melodyLoopExtension");
23
- const melodyLoopStartSeconds = readSeconds("melodyLoopStart");
24
- const droplets = readHits("droplet");
25
- const burstHealthShare = readParameter("burstHealthShare");
26
- const burstFlatHeal = readParameter("burstFlatHeal");
27
- const shiningMiracleHealSeconds = readSeconds("shiningMiracleHeal");
28
- const strikeBehaviour = { hits: [{ healPartyChance: (striker, effects) => checkIsMelodyLoopLive(striker, effects) ? 1 : 0 }] };
29
- return {
30
- burst: { onStart: ({ activeCombatant: combatant, kitEffectState }) => {
31
- const burstHeal = burstFlatHeal + burstHealthShare * combatant.attributes.maxHealth;
32
- scheduleKitTask(kitEffectState, combatant.characterId, shiningMiracleHealSeconds, (tick) => changeKitMemberHealth(tick, combatant, tick.activeCombatant.characterId, burstHeal));
33
- } },
34
- chargedAttack: strikeBehaviour,
35
- getSkillCooldownMultiplier: ({ activeCombatant: combatant }) => combatant.constellationCount >= VITALITY_BURST_CONSTELLATION ? VITALITY_BURST_COOLDOWN_MULTIPLIER : 1,
36
- normalAttacks: [
37
- strikeBehaviour,
38
- strikeBehaviour,
39
- strikeBehaviour,
40
- strikeBehaviour
41
- ],
42
- skill: { onStart: ({ activeCombatant: combatant, body: { facing, height, position }, kitEffectState }) => {
43
- castKitSummon(kitEffectState, {
44
- facing,
45
- height,
46
- position
47
- }, combatant, droplets);
48
- castKitField(kitEffectState, combatant.characterId, position, {
49
- nextTickSeconds: melodyLoopStartSeconds,
50
- onTick: createMelodyLoopTick(combatant, regenerationFlatHeal + regenerationHealthShare * combatant.attributes.maxHealth, melodyLoopSeconds),
51
- secondsRemaining: melodyLoopStartSeconds + melodyLoopSeconds,
52
- tickIntervalSeconds: MELODY_LOOP_TICK_INTERVAL_SECONDS
53
- });
54
- } }
55
- };
56
- };
57
- //#endregion
58
- export { createBarbaraKitBehaviour };
@@ -1,59 +0,0 @@
1
- import "./characterPack-zycIUHje.js";
2
- import { castKitShield, castKitSummon } from "./index.js";
3
- import { takeOne } from "@esposter/shared";
4
- //#region src/services/kit/characters/beidouKit.ts
5
- const DISCHARGE_INTERVAL_SECONDS = 1;
6
- const BANE_OF_EVIL_CONSTELLATION = 6;
7
- const checkIsTargeStanding = (effect, characterId, seconds) => effect.kind === "summon" && effect.isFollowing === true && effect.combatant.characterId === characterId && effect.secondsRemaining >= seconds;
8
- const createBeidouKitBehaviour = ({ kit, readHitFields, readHits, readParameter, readSeconds }) => {
9
- const targeSeconds = readParameter("thunderbeastsTargeSeconds");
10
- const shieldMaxHealthShare = readParameter("tidecallerShieldMaxHealthShare");
11
- const shieldFlatHealth = readParameter("tidecallerShieldFlatHealth");
12
- const tidecallerHitmarkSeconds = takeOne(kit.elementalSkill.hits).hitmarkSeconds;
13
- const baneOfEvilStatus = {
14
- damageTakenBonus: 0,
15
- id: "beidou-bane-of-evil",
16
- resistanceReduction: { ["Electric"]: .15 },
17
- secondsRemaining: readSeconds("baneOfEvil")
18
- };
19
- const baneOfEvilTicks = readHits("baneOfEvilTicks", { enemyStatus: () => baneOfEvilStatus });
20
- const lightningDischargeFields = readHitFields("lightningDischarge", ["hitArea"]);
21
- const chargedAttackHits = kit.chargedAttack.hits;
22
- const hitDischargeMap = new Map([...kit.normalAttacks.flatMap(({ hits }) => hits), ...chargedAttackHits].map((hit) => [hit, {
23
- ...lightningDischargeFields,
24
- hitArea: hit.hitArea,
25
- hitmarkSeconds: hit.hitmarkSeconds + lightningDischargeFields.hitmarkSeconds
26
- }]));
27
- const dischargeHits = new Set(hitDischargeMap.values());
28
- const castDischarges = ({ facing, height, position }, combatant, kitEffectState, hits) => {
29
- for (const hit of hits) {
30
- const discharge = hitDischargeMap.get(hit);
31
- const { effects } = kitEffectState;
32
- if (discharge === void 0 || !effects.some((effect) => checkIsTargeStanding(effect, combatant.characterId, hit.hitmarkSeconds)) || effects.some((effect) => effect.kind === "summon" && effect.secondsRemaining > hit.hitmarkSeconds && effect.hits.some((summonHit) => dischargeHits.has(summonHit)))) continue;
33
- castKitSummon(kitEffectState, {
34
- facing,
35
- height,
36
- position
37
- }, combatant, [discharge], { secondsRemaining: hit.hitmarkSeconds + DISCHARGE_INTERVAL_SECONDS });
38
- }
39
- };
40
- return {
41
- burst: { onStart: ({ activeCombatant: combatant, body: { facing, height, position }, kitEffectState }) => castKitSummon(kitEffectState, {
42
- facing,
43
- height,
44
- position
45
- }, combatant, combatant.constellationCount >= BANE_OF_EVIL_CONSTELLATION ? baneOfEvilTicks : [], {
46
- isFollowing: true,
47
- secondsRemaining: targeSeconds
48
- }) },
49
- chargedAttack: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => castDischarges(body, combatant, kitEffectState, chargedAttackHits) },
50
- normalAttacks: kit.normalAttacks.map(({ hits }) => ({ onStart: ({ activeCombatant: combatant, body, kitEffectState }) => castDischarges(body, combatant, kitEffectState, hits) })),
51
- skill: { onStart: ({ activeCombatant: combatant, kitEffectState }) => castKitShield(kitEffectState, combatant.characterId, {
52
- element: "Electric",
53
- health: shieldMaxHealthShare * combatant.attributes.maxHealth + shieldFlatHealth,
54
- secondsRemaining: tidecallerHitmarkSeconds
55
- }) }
56
- };
57
- };
58
- //#endregion
59
- export { createBeidouKitBehaviour };
@@ -1,66 +0,0 @@
1
- import "./characterPack-zycIUHje.js";
2
- import { t as addKitEffect } from "./addKitEffect-DBqTfm_3.js";
3
- import { l as MELEE_WEAPON_TYPES } from "./constants-BqrUOf2M.js";
4
- import { buffKitMember, castKitField, changeKitMemberHealth, checkIsInKitField, getPartyMember } from "./index.js";
5
- //#region src/services/kit/characters/bennettKit.ts
6
- const BENNETT_FIELD_TICK_INTERVAL_SECONDS = 1;
7
- const BENNETT_FIELD_RADIUS = 6;
8
- const BENNETT_FIELD_HP_THRESHOLD = .7;
9
- const GRAND_EXPECTATION_CONSTELLATION = 1;
10
- const GRAND_EXPECTATION_BASE_ATTACK_SHARE = .2;
11
- const FIRE_VENTURES_WITH_ME_CONSTELLATION = 6;
12
- const FIRE_VENTURES_PYRO_DAMAGE_BONUS = .15;
13
- const checkIsFearnaughtActive = ({ activeCombatant: combatant, body, kitEffectState }) => combatant.ascension >= 4 && kitEffectState.effects.some((effect) => effect.kind === "field" && effect.characterId === combatant.characterId && checkIsInKitField(effect, body.position));
14
- const getSkillCooldownMultiplier = (context) => {
15
- let multiplier = 1;
16
- if (context.activeCombatant.ascension >= 1) multiplier *= .8;
17
- if (checkIsFearnaughtActive(context)) multiplier *= .5;
18
- return multiplier;
19
- };
20
- const createBennettKitBehaviour = ({ readParameter, readSeconds }) => {
21
- const fieldFlatHeal = readParameter("fantasticVoyageFlatHeal");
22
- const fieldMaxHealthHealShare = readParameter("fantasticVoyageMaxHealthHealShare");
23
- const fieldBaseAttackShare = readParameter("fantasticVoyageBaseAttackShare");
24
- const fieldSeconds = readParameter("fantasticVoyageFieldSeconds");
25
- const fieldStartSeconds = readSeconds("fantasticVoyageFieldStart");
26
- const fieldFirstTickSeconds = readSeconds("fantasticVoyageFieldFirstTick");
27
- const fieldBuffSeconds = readSeconds("fantasticVoyageFieldBuff");
28
- const createFieldTick = (owner) => (context, tickIndex) => {
29
- const { activeCombatant, kitEffectState, party } = context;
30
- const { characterId, weaponType } = activeCombatant;
31
- const { healthShare } = getPartyMember(party, characterId);
32
- if (tickIndex > 0 && healthShare < BENNETT_FIELD_HP_THRESHOLD) changeKitMemberHealth(context, owner, characterId, fieldFlatHeal + fieldMaxHealthHealShare * owner.attributes.maxHealth);
33
- const hasGrandExpectation = owner.constellationCount >= GRAND_EXPECTATION_CONSTELLATION;
34
- if (healthShare <= (hasGrandExpectation ? 0 : BENNETT_FIELD_HP_THRESHOLD)) return;
35
- buffKitMember(kitEffectState, characterId, {
36
- amount: (fieldBaseAttackShare + (hasGrandExpectation ? GRAND_EXPECTATION_BASE_ATTACK_SHARE : 0)) * owner.attributes.attributeTotalMap["FIGHT_PROP_BASE_ATTACK"],
37
- attribute: "FIGHT_PROP_ATTACK",
38
- secondsRemaining: fieldBuffSeconds
39
- });
40
- if (owner.constellationCount < FIRE_VENTURES_WITH_ME_CONSTELLATION) return;
41
- buffKitMember(kitEffectState, characterId, {
42
- amount: FIRE_VENTURES_PYRO_DAMAGE_BONUS,
43
- attribute: "FIGHT_PROP_FIRE_ADD_HURT",
44
- secondsRemaining: fieldBuffSeconds
45
- });
46
- if (weaponType !== void 0 && MELEE_WEAPON_TYPES.has(weaponType)) addKitEffect(kitEffectState, {
47
- characterId,
48
- element: "Fire",
49
- kind: "infusion",
50
- secondsRemaining: fieldBuffSeconds
51
- });
52
- };
53
- return {
54
- burst: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => castKitField(kitEffectState, combatant.characterId, body.position, {
55
- nextTickSeconds: fieldFirstTickSeconds,
56
- onTick: createFieldTick(combatant),
57
- radius: BENNETT_FIELD_RADIUS,
58
- secondsRemaining: fieldSeconds + fieldStartSeconds,
59
- tickIntervalSeconds: BENNETT_FIELD_TICK_INTERVAL_SECONDS
60
- }) },
61
- getSkillCooldownMultiplier,
62
- skillHolds: [{}, { variant: { checkIsActive: checkIsFearnaughtActive } }]
63
- };
64
- };
65
- //#endregion
66
- export { createBennettKitBehaviour };
@@ -1,84 +0,0 @@
1
- import "./characterPack-zycIUHje.js";
2
- import { t as addKitEffect } from "./addKitEffect-DBqTfm_3.js";
3
- import { l as MELEE_WEAPON_TYPES } from "./constants-BqrUOf2M.js";
4
- import { addKitStatus, castKitField, castKitShield, castKitSummon, findKitStatus, getKitHitElement, startKitCooldown } from "./index.js";
5
- import { takeOne } from "@esposter/shared";
6
- //#region src/services/kit/characters/candaceKit.ts
7
- const INFUSION_SECONDS = 1;
8
- const PRAYER_FIELD_ID = "candace-prayer";
9
- const WAVES_STATUS_ID = "candace-waves";
10
- const CONSTELLATION_1 = 1;
11
- const CONSTELLATION_1_PRAYER_EXTRA_SECONDS = 3;
12
- const CONSTELLATION_6 = 6;
13
- const CONSTELLATION_6_COOLDOWN_SECONDS = 2.3;
14
- const CONSTELLATION_6_STATUS_ID = "candace-constellation-6";
15
- const findPrayerField = (effects, characterId) => effects.find((effect) => effect.kind === "field" && effect.characterId === characterId && effect.id === PRAYER_FIELD_ID);
16
- const infuse = (kitEffectState, { characterId, weaponType }) => {
17
- if (weaponType === void 0 || !MELEE_WEAPON_TYPES.has(weaponType)) return;
18
- addKitEffect(kitEffectState, {
19
- characterId,
20
- element: "Water",
21
- kind: "infusion",
22
- secondsRemaining: INFUSION_SECONDS
23
- });
24
- };
25
- const createCandaceKitBehaviour = ({ kit, readHit, readParameter, readSeconds }) => {
26
- const burstSeconds = readParameter("prayerOfTheCrimsonCrownSeconds");
27
- const wavesMax = readParameter("maxWaveCount");
28
- const shieldShare = readParameter("shieldMaxHealthShare");
29
- const shieldFlat = readParameter("shieldFlatHealth");
30
- const prayerTickSeconds = readSeconds("prayerTick");
31
- const tapHitmarkSeconds = takeOne(kit.elementalSkill.hits).hitmarkSeconds;
32
- const chargedHitmarkSeconds = takeOne(takeOne(kit.elementalSkillHolds ?? []).action.hits).hitmarkSeconds;
33
- const burstHitmarkSeconds = takeOne(kit.elementalBurst.hits).hitmarkSeconds;
34
- const wave = readHit("wave");
35
- const constellation6Wave = readHit("theOverflowWave");
36
- const castShield = (kitEffectState, combatant, secondsRemaining) => castKitShield(kitEffectState, combatant.characterId, {
37
- element: "Water",
38
- health: shieldFlat + shieldShare * combatant.attributes.maxHealth,
39
- secondsRemaining
40
- });
41
- return {
42
- burst: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => {
43
- const { characterId, constellationCount } = combatant;
44
- const prayerSeconds = burstHitmarkSeconds + burstSeconds + (constellationCount >= CONSTELLATION_1 ? CONSTELLATION_1_PRAYER_EXTRA_SECONDS : 0);
45
- const standingPrayer = findPrayerField(kitEffectState.effects, characterId);
46
- if (standingPrayer) standingPrayer.secondsRemaining = 0;
47
- castKitField(kitEffectState, characterId, body.position, {
48
- id: PRAYER_FIELD_ID,
49
- nextTickSeconds: burstHitmarkSeconds,
50
- onTick: ({ activeCombatant, kitEffectState: tickEffectState }) => infuse(tickEffectState, activeCombatant),
51
- secondsRemaining: prayerSeconds,
52
- tickIntervalSeconds: prayerTickSeconds
53
- });
54
- addKitStatus(kitEffectState, characterId, {
55
- id: WAVES_STATUS_ID,
56
- secondsRemaining: prayerSeconds,
57
- stacks: 0
58
- });
59
- } },
60
- onKitEvent: (event, { activeCombatant, body, characterIdCombatantMap, kitEffectState }, combatant) => {
61
- const { characterId, constellationCount } = combatant;
62
- const { effects } = kitEffectState;
63
- if (!findPrayerField(effects, characterId)) return;
64
- if (event.kind === "CharacterSwapped") {
65
- const incoming = characterIdCombatantMap.get(event.characterId);
66
- if (incoming) infuse(kitEffectState, incoming);
67
- const waves = findKitStatus(effects, characterId, WAVES_STATUS_ID);
68
- if (!waves || (waves.stacks ?? 0) >= wavesMax) return;
69
- addKitStatus(kitEffectState, characterId, {
70
- id: WAVES_STATUS_ID,
71
- secondsRemaining: waves.secondsRemaining,
72
- stacks: (waves.stacks ?? 0) + 1
73
- });
74
- castKitSummon(kitEffectState, body, combatant, [wave]);
75
- return;
76
- }
77
- if (event.kind === "DamageTaken" && constellationCount >= CONSTELLATION_6 && event.attackTag === "NormalAttack" && event.striker.characterId !== characterId && event.striker.characterId === activeCombatant.characterId && getKitHitElement(event.hit, event.striker) !== void 0 && startKitCooldown(kitEffectState, characterId, CONSTELLATION_6_STATUS_ID, CONSTELLATION_6_COOLDOWN_SECONDS)) castKitSummon(kitEffectState, body, combatant, [constellation6Wave]);
78
- },
79
- skill: { onStart: ({ activeCombatant: combatant, kitEffectState }) => castShield(kitEffectState, combatant, tapHitmarkSeconds) },
80
- skillHolds: [{ onStart: ({ activeCombatant: combatant, kitEffectState }) => castShield(kitEffectState, combatant, chargedHitmarkSeconds) }]
81
- };
82
- };
83
- //#endregion
84
- export { createCandaceKitBehaviour };
@@ -1,116 +0,0 @@
1
- import { GameLanguage, GameTextKey } from "genshin-text";
2
- //#region src/services/character/chooseCharacterPackModel.d.ts
3
- declare const chooseCharacterPackModel: (folder: string, filePaths: readonly string[], readModelName: (filePath: string) => Promise<string>, readCharacterNames: () => Promise<readonly string[]>) => Promise<string>;
4
- //#endregion
5
- //#region src/services/character/chooseCharacterTermsFile.d.ts
6
- declare const chooseCharacterTermsFile: (folder: string, filePaths: readonly string[]) => string;
7
- //#endregion
8
- //#region src/models/artifact/ArtifactSlot.d.ts
9
- declare enum ArtifactSlot {
10
- CircletOfLogos = "EQUIP_DRESS",
11
- FlowerOfLife = "EQUIP_BRACER",
12
- GobletOfEonothem = "EQUIP_RING",
13
- PlumeOfDeath = "EQUIP_NECKLACE",
14
- SandsOfEon = "EQUIP_SHOES"
15
- }
16
- //#endregion
17
- //#region src/models/character/Attribute.d.ts
18
- declare enum Attribute {
19
- AnemoDamageBonus = "FIGHT_PROP_WIND_ADD_HURT",
20
- AnemoResistance = "FIGHT_PROP_WIND_SUB_HURT",
21
- Attack = "FIGHT_PROP_ATTACK",
22
- AttackPercent = "FIGHT_PROP_ATTACK_PERCENT",
23
- BaseAttack = "FIGHT_PROP_BASE_ATTACK",
24
- BaseDefense = "FIGHT_PROP_BASE_DEFENSE",
25
- BaseHealth = "FIGHT_PROP_BASE_HP",
26
- CriticalDamage = "FIGHT_PROP_CRITICAL_HURT",
27
- CriticalRate = "FIGHT_PROP_CRITICAL",
28
- CryoDamageBonus = "FIGHT_PROP_ICE_ADD_HURT",
29
- CryoResistance = "FIGHT_PROP_ICE_SUB_HURT",
30
- Defense = "FIGHT_PROP_DEFENSE",
31
- DefensePercent = "FIGHT_PROP_DEFENSE_PERCENT",
32
- DendroDamageBonus = "FIGHT_PROP_GRASS_ADD_HURT",
33
- DendroResistance = "FIGHT_PROP_GRASS_SUB_HURT",
34
- ElectroDamageBonus = "FIGHT_PROP_ELEC_ADD_HURT",
35
- ElectroResistance = "FIGHT_PROP_ELEC_SUB_HURT",
36
- ElementalMastery = "FIGHT_PROP_ELEMENT_MASTERY",
37
- EnergyRecharge = "FIGHT_PROP_CHARGE_EFFICIENCY",
38
- GeoDamageBonus = "FIGHT_PROP_ROCK_ADD_HURT",
39
- GeoResistance = "FIGHT_PROP_ROCK_SUB_HURT",
40
- HealingBonus = "FIGHT_PROP_HEAL_ADD",
41
- Health = "FIGHT_PROP_HP",
42
- HealthPercent = "FIGHT_PROP_HP_PERCENT",
43
- HydroDamageBonus = "FIGHT_PROP_WATER_ADD_HURT",
44
- HydroResistance = "FIGHT_PROP_WATER_SUB_HURT",
45
- IncomingHealingBonus = "FIGHT_PROP_HEALED_ADD",
46
- PhysicalDamageBonus = "FIGHT_PROP_PHYSICAL_ADD_HURT",
47
- PhysicalResistance = "FIGHT_PROP_PHYSICAL_SUB_HURT",
48
- PyroDamageBonus = "FIGHT_PROP_FIRE_ADD_HURT",
49
- PyroResistance = "FIGHT_PROP_FIRE_SUB_HURT",
50
- ShieldStrength = "FIGHT_PROP_SHIELD_COST_MINUS_RATIO"
51
- }
52
- declare const Attributes: readonly Attribute[];
53
- //#endregion
54
- //#region src/models/character/CombatTalent.d.ts
55
- declare enum CombatTalent {
56
- ElementalBurst = "ElementalBurst",
57
- ElementalSkill = "ElementalSkill",
58
- NormalAttack = "NormalAttack"
59
- }
60
- //#endregion
61
- //#region src/services/character/constants.d.ts
62
- declare const ARTIFACT_SLOT_ORDER: ArtifactSlot[];
63
- declare const COMBAT_TALENT_ORDER: CombatTalent[];
64
- declare const TALENT_START_LEVEL = 1;
65
- declare const CHARACTER_PACK_INDEX_PATH = "index.json";
66
- declare const CHARACTER_PACK_STORE_NAME = "genshin-character-packs";
67
- declare const CHARACTER_PACK_STORE_FILES_NAME = "files";
68
- declare const CHARACTER_PACK_STORE_VERSION = 1;
69
- declare const MACOS_RESOURCE_FORK_FOLDER = "__MACOSX/";
70
- declare const CHARACTER_MODEL_PATH = "model.pmx";
71
- declare const CHARACTER_TERMS_PATH = "terms.txt";
72
- declare const CHARACTER_TERMS_FILE_NAMES: readonly string[];
73
- declare const CHARACTER_TERMS_NOT_JAPANESE_REGEX: RegExp;
74
- declare const CHARACTER_PACK_MODEL_NAME_LANGUAGES: readonly GameLanguage[];
75
- declare const CHARACTER_PACK_FETCH_TIMEOUT_MS = 60000;
76
- declare const TRAVELER_CHARACTER_ID = 10000007;
77
- declare const ADVANCED_ATTRIBUTE_GAME_TEXT_KEYS: readonly (readonly [Attribute, GameTextKey])[];
78
- declare const ELEMENTAL_ATTRIBUTE_GAME_TEXT_KEYS: readonly (readonly [Attribute, GameTextKey])[];
79
- declare const WHOLE_ATTRIBUTES: readonly Attribute[];
80
- //#endregion
81
- //#region src/models/character/CharacterTermsEncoding.d.ts
82
- declare enum CharacterTermsEncoding {
83
- Gbk = "gbk",
84
- ShiftJis = "shift_jis",
85
- Utf8 = "utf8",
86
- Utf16BigEndian = "utf-16be",
87
- Utf16LittleEndian = "utf-16le"
88
- }
89
- //#endregion
90
- //#region src/models/character/CharacterPackTerms.d.ts
91
- interface CharacterPackTerms {
92
- encoding: CharacterTermsEncoding;
93
- text: string;
94
- }
95
- //#endregion
96
- //#region src/services/character/decodeCharacterTerms.d.ts
97
- declare const decodeCharacterTerms: (bytes: Uint8Array) => CharacterPackTerms;
98
- //#endregion
99
- //#region src/services/character/readCharacterNames.d.ts
100
- declare const readCharacterNames: (gameDataBaseUrl: string, characterId: number) => Promise<string[]>;
101
- //#endregion
102
- //#region src/models/character/CharacterPackTextures.d.ts
103
- interface CharacterPackTextures {
104
- files: {
105
- filePath: string;
106
- path: string;
107
- }[];
108
- }
109
- //#endregion
110
- //#region src/services/character/resolveCharacterPackTextures.d.ts
111
- declare const resolveCharacterPackTextures: (texturePaths: readonly string[], filePaths: readonly string[], modelPath: string) => CharacterPackTextures;
112
- //#endregion
113
- //#region src/services/data/constants.d.ts
114
- declare const GAME_DATA_BLOB_PATH = "genshin/data";
115
- //#endregion
116
- export { chooseCharacterTermsFile as A, TALENT_START_LEVEL as C, Attribute as D, CombatTalent as E, Attributes as O, MACOS_RESOURCE_FORK_FOLDER as S, WHOLE_ATTRIBUTES as T, CHARACTER_TERMS_FILE_NAMES as _, decodeCharacterTerms as a, COMBAT_TALENT_ORDER as b, ADVANCED_ATTRIBUTE_GAME_TEXT_KEYS 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, readCharacterNames as i, chooseCharacterPackModel as j, ArtifactSlot as k, ARTIFACT_SLOT_ORDER as l, CHARACTER_PACK_STORE_FILES_NAME as m, resolveCharacterPackTextures as n, CharacterPackTerms as o, CHARACTER_PACK_MODEL_NAME_LANGUAGES as p, CharacterPackTextures as r, CharacterTermsEncoding as s, GAME_DATA_BLOB_PATH as t, CHARACTER_MODEL_PATH as u, CHARACTER_TERMS_NOT_JAPANESE_REGEX as v, TRAVELER_CHARACTER_ID as w, ELEMENTAL_ATTRIBUTE_GAME_TEXT_KEYS as x, CHARACTER_TERMS_PATH as y };