genshin-world 4.1.2 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +8 -8
- package/dist/ReactionType-BBSdxyO3.js +0 -47
- package/dist/addKitEffect-DBqTfm_3.js +0 -17
- package/dist/ainoKit-Dy3vTp3B.js +0 -28
- package/dist/albedoKit-CU5N1Hnm.js +0 -43
- package/dist/alhaithamKit-Bhs-coX9.js +0 -212
- package/dist/aloyKit-C7x_Jf16.js +0 -32
- package/dist/amberKit-BO7ZAQgU.js +0 -38
- package/dist/arlecchinoKit-DJawwVVl.js +0 -4
- package/dist/ayakaKit-Bu_QuYsR.js +0 -26
- package/dist/ayatoKit-BXZNajk7.js +0 -108
- package/dist/baizhuKit-8_4IzZ3A.js +0 -33
- package/dist/barbaraKit-B5DpLyHJ.js +0 -58
- package/dist/beidouKit-sQUahtIk.js +0 -59
- package/dist/bennettKit-Cr-zZ_25.js +0 -66
- package/dist/candaceKit-BUs_wwFU.js +0 -84
- package/dist/characterPack-YAEqbhAX.d.ts +0 -116
- package/dist/characterPack-zycIUHje.js +0 -641
- package/dist/characterPack.d.ts +0 -2
- package/dist/characterPack.js +0 -1
- package/dist/charlotteKit-BOZiCPEb.js +0 -90
- package/dist/chascaKit-C1Csj0Yf.js +0 -4
- package/dist/chevreuseKit-DDHga8Tj.js +0 -20
- package/dist/chioriKit-CxRUSHNw.js +0 -28
- package/dist/chongyunKit-jrWQKRkG.js +0 -104
- package/dist/citlaliKit-sv7XrzVx.js +0 -4
- package/dist/clorindeKit-DxtRn_To.js +0 -4
- package/dist/colleiKit-CO_n9qra.js +0 -28
- package/dist/columbinaKit-DrW0EvqN.js +0 -31
- package/dist/constants--ARZpp1u.js +0 -49
- package/dist/constants-BqrUOf2M.js +0 -48
- package/dist/constants-CSFiwyHy.js +0 -46
- package/dist/createWindriseGroundPaint-BmZkGq-r.js +0 -295
- package/dist/cynoKit-DpfT5dmS.js +0 -179
- package/dist/dahliaKit-B8fOPvvi.js +0 -16
- package/dist/dehyaKit-42tyEI0Z.js +0 -4
- package/dist/dilucKit-EwLUSPgs.js +0 -63
- package/dist/dionaKit-89B1hwYL.js +0 -48
- package/dist/doriKit-G9XTwwCP.js +0 -24
- package/dist/durinKit-BIYdUkbh.js +0 -49
- package/dist/emilieKit-0b2vhNtl.js +0 -21
- package/dist/escoffierKit-Da5UAvAF.js +0 -48
- package/dist/eulaKit-DAENHIEx.js +0 -129
- package/dist/faruzanKit-BcW6D-N3.js +0 -71
- package/dist/fischlKit-Bm8vNmuV.js +0 -98
- package/dist/flinsKit-GUnFJdUg.js +0 -9
- package/dist/freminetKit-CpwsVmTT.js +0 -4
- package/dist/furinaKit-BREisAdJ.js +0 -279
- package/dist/gamingKit-D9ekWGMJ.js +0 -4
- package/dist/ganyuKit-DLJa1t-Z.js +0 -74
- package/dist/gorouKit-DkpaGNA8.js +0 -94
- package/dist/heizouKit-B6kRXVCP.js +0 -35
- package/dist/huTaoKit-drjrzLjf.js +0 -58
- package/dist/iansanKit-RNjD9nSq.js +0 -4
- package/dist/ifaKit-CXWxCOPI.js +0 -4
- package/dist/illugaKit-BFtXIf3P.js +0 -4
- package/dist/index-DQB91Tfq.d.ts +0 -19820
- package/dist/index.d.ts +0 -4
- package/dist/index.js +0 -29218
- package/dist/ineffaKit-3J0FJo2E.js +0 -51
- package/dist/ittoKit-CfwXkR0g.js +0 -112
- package/dist/jahodaKit-C1sdSDfr.js +0 -97
- package/dist/jeanKit-Do8vx5Kp.js +0 -56
- package/dist/kachinaKit-DWLNDpgO.js +0 -4
- package/dist/kaeyaKit-DU8Df4RE.js +0 -14
- package/dist/kavehKit-BWoAaKs4.js +0 -9
- package/dist/kazuhaKit-C5gn8iGg.js +0 -55
- package/dist/keqingKit-uGsb_p7t.js +0 -12
- package/dist/kinichKit-Dp3lNUJt.js +0 -22
- package/dist/kiraraKit-CCAGXouk.js +0 -43
- package/dist/kleeKit-BzcJLC2i.js +0 -48
- package/dist/kokomiKit-DBdTlTDr.js +0 -42
- package/dist/kujouSaraKit-DDE-24jd.js +0 -56
- package/dist/kukiKit-DcARldP9.js +0 -59
- package/dist/lanYanKit-B3lwZ7OW.js +0 -18
- package/dist/laumaKit-DkG-i0rL.js +0 -59
- package/dist/laylaKit-DYtz0tSZ.js +0 -41
- package/dist/linneaKit-DlVhnbGM.js +0 -4
- package/dist/lisaKit-CWUiiam1.js +0 -22
- package/dist/lohenKit-D-uagI_g.js +0 -4
- package/dist/lynetteKit-BnNW81Pm.js +0 -20
- package/dist/lyneyKit-D6yTnfFv.js +0 -19
- package/dist/mavuikaKit-CUC1kHRJ.js +0 -4
- package/dist/mikaKit-C9xDhjJg.js +0 -17
- package/dist/mizukiKit-DY-gHM8N.js +0 -4
- package/dist/monaKit-B748iTEy.js +0 -26
- package/dist/mualaniKit-B-Km_dcQ.js +0 -4
- package/dist/nahidaKit-BGRc-swN.js +0 -4
- package/dist/naviaKit-CHh2VdX3.js +0 -64
- package/dist/neferKit-BTALTTiV.js +0 -4
- package/dist/neuvilletteKit-DAfX_2tC.js +0 -4
- package/dist/nicoleKit-BVjL7LI0.js +0 -4
- package/dist/nilouKit-BgM4u-hg.js +0 -52
- package/dist/ningguangKit-N88BhNb_.js +0 -105
- package/dist/noelleKit-DDewnuJ9.js +0 -48
- package/dist/ororonKit-DiAd2dlh.js +0 -86
- package/dist/pruneKit-CHkC_OSB.js +0 -4
- package/dist/qiqiKit-DCtsriE7.js +0 -88
- package/dist/raidenKit-BBWMmPFn.js +0 -144
- package/dist/razorKit-CBgdHYic.js +0 -90
- package/dist/readCharacterAvatar-C7FufK7J.js +0 -292
- package/dist/rosariaKit-D_RDXpLp.js +0 -29
- package/dist/save-CEbj1mOx.js +0 -854
- package/dist/save.d.ts +0 -2
- package/dist/save.js +0 -1
- package/dist/sayuKit-Hnv4iA3_.js +0 -35
- package/dist/sceneExport-BZaF05K-.d.ts +0 -70
- package/dist/sceneExport-DiiIi0PM.js +0 -27
- package/dist/sceneExport.d.ts +0 -2
- package/dist/sceneExport.js +0 -1
- package/dist/sethosKit-8EK04AA4.js +0 -4
- package/dist/shenheKit-DqrG2I4S.js +0 -50
- package/dist/sigewinneKit-CYJyadTr.js +0 -10
- package/dist/skirkKit-BDjoFGAq.js +0 -10
- package/dist/style.css +0 -3612
- package/dist/sucroseKit-DF0jcI2y.js +0 -101
- package/dist/tartagliaKit-Bbtww18S.js +0 -136
- package/dist/terrainTileWorker.d.ts +0 -1
- package/dist/terrainTileWorker.js +0 -81
- package/dist/thomaKit-Zm5AJ9Fm.js +0 -64
- package/dist/tighnariKit-CSa_Yqpp.js +0 -4
- package/dist/varesaKit-CMXLbBv9.js +0 -4
- package/dist/varkaKit-C8_HlTVH.js +0 -4
- package/dist/ventiKit-BcQkbI-z.js +0 -52
- package/dist/wandererKit-CQM691sn.js +0 -9
- package/dist/wriothesleyKit-CBTnYlOy.js +0 -4
- package/dist/xianglingKit-BPQN7cxU.js +0 -108
- package/dist/xianyunKit-CVhuYBde.js +0 -4
- package/dist/xiaoKit-BDI_SODG.js +0 -90
- package/dist/xilonenKit-YAVOPRwm.js +0 -4
- package/dist/xingqiuKit-Cv8JYeYO.js +0 -106
- package/dist/xinyanKit-CffF-Er0.js +0 -120
- package/dist/yaeMikoKit-xAKYm2K6.js +0 -44
- package/dist/yanfeiKit-C6elnkmn.js +0 -86
- package/dist/yaoyaoKit-CaPIIp-i.js +0 -4
- package/dist/yelanKit-Da0oQ6yu.js +0 -33
- package/dist/yoimiyaKit-DTENWB4y.js +0 -49
- package/dist/yunjinKit-PP4yeyn1.js +0 -22
- package/dist/zhongliKit-uMdKUTP-.js +0 -100
- package/dist/zibaiKit-Dq6mFWSx.js +0 -4
|
@@ -1,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 };
|