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
package/dist/characterPack.d.ts
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { A as chooseCharacterTermsFile, a as decodeCharacterTerms, f as CHARACTER_PACK_INDEX_PATH, i as readCharacterNames, j as chooseCharacterPackModel, n as resolveCharacterPackTextures, t as GAME_DATA_BLOB_PATH, u as CHARACTER_MODEL_PATH, y as CHARACTER_TERMS_PATH } from "./characterPack-YAEqbhAX.js";
|
|
2
|
-
export { CHARACTER_MODEL_PATH, CHARACTER_PACK_INDEX_PATH, CHARACTER_TERMS_PATH, GAME_DATA_BLOB_PATH, chooseCharacterPackModel, chooseCharacterTermsFile, decodeCharacterTerms, readCharacterNames, resolveCharacterPackTextures };
|
package/dist/characterPack.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { T as CHARACTER_MODEL_PATH, D as CHARACTER_PACK_INDEX_PATH, P as CHARACTER_TERMS_PATH, t as GAME_DATA_BLOB_PATH, G as chooseCharacterPackModel, S as chooseCharacterTermsFile, b as decodeCharacterTerms, i as readCharacterNames, n as resolveCharacterPackTextures } from "./characterPack-zycIUHje.js";
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { h as SUMMON_LINGER_SECONDS } from "./constants-BqrUOf2M.js";
|
|
2
|
-
import { castKitField, castKitSummon, changeKitMemberHealth, createAheadBody, getDeployedCharacterIds, scheduleKitTask, startKitCooldown } from "./index.js";
|
|
3
|
-
import { takeOne } from "@esposter/shared";
|
|
4
|
-
//#region src/services/kit/characters/charlotteKit.ts
|
|
5
|
-
const THORN_COOLDOWN_STATUS_ID = "charlotte-thorn-cooldown";
|
|
6
|
-
const SNAPPY_MARK_STATUS_ID = "charlotte-snappy-silhouette";
|
|
7
|
-
const SNAPPY_MARK_INTERVAL_SECONDS = 1.5;
|
|
8
|
-
const SNAPPY_MARK_CAP = 5;
|
|
9
|
-
const BURST_OFFSET_METRES = 4.5;
|
|
10
|
-
const BURST_HEAL_RADIUS = 7;
|
|
11
|
-
const healTeam = (context, caster, flatHealth, attackShare) => {
|
|
12
|
-
const healedHealth = flatHealth + attackShare * caster.attributes.attack;
|
|
13
|
-
for (const characterId of getDeployedCharacterIds(context.party)) changeKitMemberHealth(context, caster, characterId, healedHealth);
|
|
14
|
-
};
|
|
15
|
-
const createCharlotteKitBehaviour = ({ kit, readHit, readHits, readParameter, readSeconds }) => {
|
|
16
|
-
const thorn = readHit("thorn");
|
|
17
|
-
const thornHitmarkSeconds = readSeconds("thornHitmark");
|
|
18
|
-
const thornCooldownSeconds = readParameter("spiritbreathThornCooldownSeconds");
|
|
19
|
-
const snappyMarkHit = readHit("snappyMark");
|
|
20
|
-
const snappyMarkSeconds = readSeconds("snappyMark");
|
|
21
|
-
const kameraHits = readHits("kamera");
|
|
22
|
-
const burstHitmarkSeconds = takeOne(kit.elementalBurst.hits).hitmarkSeconds;
|
|
23
|
-
const stillPhotoFlatHealth = readParameter("stillPhotoFlatHealth");
|
|
24
|
-
const stillPhotoAttackShare = readParameter("stillPhotoAttackShare");
|
|
25
|
-
const kameraFlatHealth = readParameter("kameraFlatHealth");
|
|
26
|
-
const kameraAttackShare = readParameter("kameraAttackShare");
|
|
27
|
-
let markedCount = 0;
|
|
28
|
-
const createSnappyMark = () => ({
|
|
29
|
-
damageTakenBonus: 0,
|
|
30
|
-
id: SNAPPY_MARK_STATUS_ID,
|
|
31
|
-
nextTickSeconds: SNAPPY_MARK_INTERVAL_SECONDS,
|
|
32
|
-
secondsRemaining: snappyMarkSeconds,
|
|
33
|
-
tickIntervalSeconds: SNAPPY_MARK_INTERVAL_SECONDS
|
|
34
|
-
});
|
|
35
|
-
return {
|
|
36
|
-
burst: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => {
|
|
37
|
-
const { characterId } = combatant;
|
|
38
|
-
const castCentre = createAheadBody(body, BURST_OFFSET_METRES).position;
|
|
39
|
-
castKitSummon(kitEffectState, body, combatant, kameraHits);
|
|
40
|
-
scheduleKitTask(kitEffectState, characterId, burstHitmarkSeconds, (tick) => healTeam(tick, combatant, stillPhotoFlatHealth, stillPhotoAttackShare));
|
|
41
|
-
for (const { hitmarkSeconds } of kameraHits) castKitField(kitEffectState, characterId, castCentre, {
|
|
42
|
-
nextTickSeconds: hitmarkSeconds,
|
|
43
|
-
onTick: (tick) => changeKitMemberHealth(tick, combatant, tick.activeCombatant.characterId, kameraFlatHealth + kameraAttackShare * combatant.attributes.attack),
|
|
44
|
-
radius: BURST_HEAL_RADIUS,
|
|
45
|
-
secondsRemaining: hitmarkSeconds + SUMMON_LINGER_SECONDS,
|
|
46
|
-
tickIntervalSeconds: 1
|
|
47
|
-
});
|
|
48
|
-
} },
|
|
49
|
-
chargedAttack: { onStart: ({ activeCombatant: combatant, kitEffectState }, target) => {
|
|
50
|
-
if (!target) return;
|
|
51
|
-
const { characterId } = combatant;
|
|
52
|
-
const { position } = target;
|
|
53
|
-
const thornBody = {
|
|
54
|
-
facing: 0,
|
|
55
|
-
height: 0,
|
|
56
|
-
position: {
|
|
57
|
-
x: position.x,
|
|
58
|
-
z: position.z
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
scheduleKitTask(kitEffectState, characterId, thornHitmarkSeconds, ({ kitEffectState: effectState }) => {
|
|
62
|
-
if (!startKitCooldown(effectState, characterId, THORN_COOLDOWN_STATUS_ID, thornCooldownSeconds)) return;
|
|
63
|
-
castKitSummon(effectState, thornBody, combatant, [thorn]);
|
|
64
|
-
});
|
|
65
|
-
} },
|
|
66
|
-
onKitEvent: (event, { kitEffectState }, combatant) => {
|
|
67
|
-
if (event.kind !== "StatusTicked" || event.status.id !== SNAPPY_MARK_STATUS_ID) return;
|
|
68
|
-
const { enemy } = event;
|
|
69
|
-
castKitSummon(kitEffectState, {
|
|
70
|
-
facing: 0,
|
|
71
|
-
height: 0,
|
|
72
|
-
position: {
|
|
73
|
-
x: enemy.position.x,
|
|
74
|
-
z: enemy.position.z
|
|
75
|
-
}
|
|
76
|
-
}, combatant, [snappyMarkHit], { target: enemy });
|
|
77
|
-
},
|
|
78
|
-
skill: {
|
|
79
|
-
hits: [{ enemyStatus: () => {
|
|
80
|
-
markedCount++;
|
|
81
|
-
return markedCount <= SNAPPY_MARK_CAP ? createSnappyMark() : void 0;
|
|
82
|
-
} }],
|
|
83
|
-
onStart: () => {
|
|
84
|
-
markedCount = 0;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
};
|
|
89
|
-
//#endregion
|
|
90
|
-
export { createCharlotteKitBehaviour };
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { t as ReactionType } from "./ReactionType-BBSdxyO3.js";
|
|
2
|
-
import { addKitStatus, checkHasKitStatus, removeKitEffects } from "./index.js";
|
|
3
|
-
//#region src/services/kit/characters/chevreuseKit.ts
|
|
4
|
-
const OVERCHARGED_BALL_STATUS_ID = "chevreuse-overcharged-ball";
|
|
5
|
-
const createChevreuseKitBehaviour = () => ({
|
|
6
|
-
onKitEvent: (event, { kitEffectState }, combatant) => {
|
|
7
|
-
if (event.kind !== "ReactionTriggered" || !event.reactions.some(({ reactionType }) => reactionType === ReactionType.Overloaded)) return;
|
|
8
|
-
if (checkHasKitStatus(kitEffectState.effects, combatant.characterId, OVERCHARGED_BALL_STATUS_ID)) return;
|
|
9
|
-
addKitStatus(kitEffectState, combatant.characterId, {
|
|
10
|
-
id: OVERCHARGED_BALL_STATUS_ID,
|
|
11
|
-
secondsRemaining: Number.POSITIVE_INFINITY
|
|
12
|
-
});
|
|
13
|
-
},
|
|
14
|
-
skillHolds: [{ variant: {
|
|
15
|
-
checkIsActive: ({ activeCombatant: combatant, kitEffectState }) => checkHasKitStatus(kitEffectState.effects, combatant.characterId, OVERCHARGED_BALL_STATUS_ID),
|
|
16
|
-
onStart: ({ kitEffectState }) => removeKitEffects(kitEffectState, (effect) => effect.kind === "status" && effect.id === OVERCHARGED_BALL_STATUS_ID)
|
|
17
|
-
} }]
|
|
18
|
-
});
|
|
19
|
-
//#endregion
|
|
20
|
-
export { createChevreuseKitBehaviour };
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { castKitSummon } from "./index.js";
|
|
2
|
-
import { takeOne } from "@esposter/shared";
|
|
3
|
-
//#region src/services/kit/characters/chioriKit.ts
|
|
4
|
-
const createDefenseShareBehaviour = (defenseShare) => ({ additiveBaseDamageBonus: ({ attributes }) => defenseShare * attributes.defense });
|
|
5
|
-
const castTamoto = (hits, secondsRemaining) => ({ activeCombatant: combatant, body, kitEffectState }) => {
|
|
6
|
-
castKitSummon(kitEffectState, body, combatant, hits, { secondsRemaining });
|
|
7
|
-
};
|
|
8
|
-
const createChioriKitBehaviour = ({ readHits, readParameter, readSecondsList }) => {
|
|
9
|
-
const sweepHitBehaviour = createDefenseShareBehaviour(readParameter("sweepDefenseShare"));
|
|
10
|
-
const tamotoHitBehaviour = createDefenseShareBehaviour(readParameter("tamotoDefenseShare"));
|
|
11
|
-
const burstHitBehaviour = createDefenseShareBehaviour(readParameter("burstDefenseShare"));
|
|
12
|
-
const pressTamotoHits = readHits("pressTamotoAttacks", tamotoHitBehaviour);
|
|
13
|
-
const holdTamotoHits = readHits("holdTamotoAttacks", tamotoHitBehaviour);
|
|
14
|
-
const tamotoSecondsList = readSecondsList("tamotoEnds");
|
|
15
|
-
return {
|
|
16
|
-
burst: { hits: [burstHitBehaviour] },
|
|
17
|
-
skill: {
|
|
18
|
-
hits: [sweepHitBehaviour],
|
|
19
|
-
onStart: castTamoto(pressTamotoHits, takeOne(tamotoSecondsList, 0))
|
|
20
|
-
},
|
|
21
|
-
skillHolds: [{
|
|
22
|
-
hits: [sweepHitBehaviour],
|
|
23
|
-
onStart: castTamoto(holdTamotoHits, takeOne(tamotoSecondsList, 1))
|
|
24
|
-
}]
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
|
-
//#endregion
|
|
28
|
-
export { createChioriKitBehaviour };
|
|
@@ -1,104 +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 { castKitField, castKitSummon, gainPartyMemberEnergy, getPartyMember, selectAttackTarget, startKitCooldown } from "./index.js";
|
|
5
|
-
import { takeOne } from "@esposter/shared";
|
|
6
|
-
//#region src/services/kit/characters/chongyunKit.ts
|
|
7
|
-
const FIELD_RADIUS = 8;
|
|
8
|
-
const FIELD_OFFSET_METRES = 1.5;
|
|
9
|
-
const FIELD_TICK_SECONDS = 1;
|
|
10
|
-
const FIELD_TICK_MARGIN_SECONDS = .1;
|
|
11
|
-
const STEADY_BREATHING_ASCENSION = 1;
|
|
12
|
-
const STEADY_BREATHING_NORMAL_ATTACK_SPEED_BONUS = .08;
|
|
13
|
-
const RIMECHASER_BLADE_ASCENSION = 4;
|
|
14
|
-
const RIMECHASER_BLADE_STATUS_ID = "chongyun-rimechaser-blade";
|
|
15
|
-
const RIMECHASER_BLADE_CRYO_RESISTANCE_REDUCTION = .1;
|
|
16
|
-
const RIMECHASER_BLADE_STATUS_SECONDS = 8;
|
|
17
|
-
const ICE_UNLEASHED_CONSTELLATION = 1;
|
|
18
|
-
const ATMOSPHERIC_REVOLUTION_CONSTELLATION = 2;
|
|
19
|
-
const ATMOSPHERIC_REVOLUTION_COOLDOWN_MULTIPLIER = .85;
|
|
20
|
-
const FROZEN_SKIES_CONSTELLATION = 4;
|
|
21
|
-
const FROZEN_SKIES_ENERGY = 1;
|
|
22
|
-
const FROZEN_SKIES_COOLDOWN_STATUS_ID = "chongyun-frozen-skies-cooldown";
|
|
23
|
-
const FROZEN_SKIES_COOLDOWN_SECONDS = 2;
|
|
24
|
-
const RALLY_OF_FOUR_BLADES_CONSTELLATION = 6;
|
|
25
|
-
const RALLY_OF_FOUR_BLADES_DAMAGE_BONUS = .15;
|
|
26
|
-
const FROST_FIELD_ID = "chongyun-frost-field";
|
|
27
|
-
const checkIsFrostField = (effect) => effect.kind === "field" && effect.id === FROST_FIELD_ID;
|
|
28
|
-
const createChongyunKitBehaviour = ({ kit, readHit, readHits, readParameter }) => {
|
|
29
|
-
const infusionSeconds = readParameter("infusionSeconds");
|
|
30
|
-
const skillHitmarkSeconds = takeOne(kit.elementalSkill.hits).hitmarkSeconds;
|
|
31
|
-
const fieldSeconds = readParameter("frostFieldSeconds") + skillHitmarkSeconds + FIELD_TICK_MARGIN_SECONDS;
|
|
32
|
-
const rimechaserBladeHit = readHit("rimechaserBlade", { enemyStatus: () => ({
|
|
33
|
-
damageTakenBonus: 0,
|
|
34
|
-
id: RIMECHASER_BLADE_STATUS_ID,
|
|
35
|
-
resistanceReduction: { ["Ice"]: RIMECHASER_BLADE_CRYO_RESISTANCE_REDUCTION },
|
|
36
|
-
secondsRemaining: RIMECHASER_BLADE_STATUS_SECONDS
|
|
37
|
-
}) });
|
|
38
|
-
const iceUnleashedHits = readHits("iceUnleashed");
|
|
39
|
-
const burstBladeHits = kit.elementalBurst.hits;
|
|
40
|
-
const rallyOfFourBladesHit = readHit("rallyOfFourBlades");
|
|
41
|
-
const fourthStrike = kit.normalAttacks.at(-1);
|
|
42
|
-
const infuse = (kitEffectState, { ascension }, { characterId, weaponType }) => {
|
|
43
|
-
if (weaponType === void 0 || !MELEE_WEAPON_TYPES.has(weaponType)) return;
|
|
44
|
-
addKitEffect(kitEffectState, {
|
|
45
|
-
characterId,
|
|
46
|
-
element: "Ice",
|
|
47
|
-
kind: "infusion",
|
|
48
|
-
...ascension >= STEADY_BREATHING_ASCENSION && { normalAttackSpeedBonus: STEADY_BREATHING_NORMAL_ATTACK_SPEED_BONUS },
|
|
49
|
-
secondsRemaining: infusionSeconds
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
return {
|
|
53
|
-
burst: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => {
|
|
54
|
-
if (combatant.constellationCount >= RALLY_OF_FOUR_BLADES_CONSTELLATION) castKitSummon(kitEffectState, body, combatant, [rallyOfFourBladesHit]);
|
|
55
|
-
} },
|
|
56
|
-
getStrikeDamageBonus: ({ combatant, hit }, enemy, party) => combatant.constellationCount >= RALLY_OF_FOUR_BLADES_CONSTELLATION && (burstBladeHits.includes(hit) || hit === rallyOfFourBladesHit) && enemy.health / enemy.maxHealth < getPartyMember(party, combatant.characterId).healthShare ? RALLY_OF_FOUR_BLADES_DAMAGE_BONUS : 0,
|
|
57
|
-
onKitEvent: (event, { activeCombatant, body, enemyMap, kitEffectState, party }, combatant) => {
|
|
58
|
-
const { ascension, characterId, constellationCount } = combatant;
|
|
59
|
-
if (event.kind === "CharacterSwapped") {
|
|
60
|
-
if (kitEffectState.effects.some((effect) => checkIsFrostField(effect))) infuse(kitEffectState, combatant, activeCombatant);
|
|
61
|
-
} else if (event.kind === "EffectExpired") {
|
|
62
|
-
const { effect } = event;
|
|
63
|
-
if (!checkIsFrostField(effect) || effect.characterId !== characterId || ascension < RIMECHASER_BLADE_ASCENSION) return;
|
|
64
|
-
const { centre, radius } = effect;
|
|
65
|
-
const enemy = selectAttackTarget({
|
|
66
|
-
angle: 2 * Math.PI,
|
|
67
|
-
height: Number.POSITIVE_INFINITY,
|
|
68
|
-
radius
|
|
69
|
-
}, {
|
|
70
|
-
facing: 0,
|
|
71
|
-
height: 0,
|
|
72
|
-
position: centre
|
|
73
|
-
}, enemyMap.values());
|
|
74
|
-
castKitSummon(kitEffectState, {
|
|
75
|
-
facing: 0,
|
|
76
|
-
height: 0,
|
|
77
|
-
position: enemy?.position ?? centre
|
|
78
|
-
}, combatant, [rimechaserBladeHit]);
|
|
79
|
-
} else if (event.kind === "NormalAttackLanded") {
|
|
80
|
-
if (activeCombatant.characterId === characterId && constellationCount >= ICE_UNLEASHED_CONSTELLATION && event.action === fourthStrike) castKitSummon(kitEffectState, body, combatant, iceUnleashedHits);
|
|
81
|
-
} else if (event.kind === "DamageTaken") {
|
|
82
|
-
if (constellationCount < FROZEN_SKIES_CONSTELLATION || event.striker.characterId !== characterId || activeCombatant.characterId !== characterId || !event.enemy.elementalState.auras.has("Cryo") || !startKitCooldown(kitEffectState, characterId, FROZEN_SKIES_COOLDOWN_STATUS_ID, FROZEN_SKIES_COOLDOWN_SECONDS)) return;
|
|
83
|
-
gainPartyMemberEnergy(party, combatant, FROZEN_SKIES_ENERGY);
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
skill: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => {
|
|
87
|
-
for (const effect of kitEffectState.effects) if (checkIsFrostField(effect)) effect.secondsRemaining = 0;
|
|
88
|
-
castKitField(kitEffectState, combatant.characterId, {
|
|
89
|
-
x: body.position.x - Math.sin(body.facing) * FIELD_OFFSET_METRES,
|
|
90
|
-
z: body.position.z - Math.cos(body.facing) * FIELD_OFFSET_METRES
|
|
91
|
-
}, {
|
|
92
|
-
...combatant.constellationCount >= ATMOSPHERIC_REVOLUTION_CONSTELLATION && { cooldownMultiplier: ATMOSPHERIC_REVOLUTION_COOLDOWN_MULTIPLIER },
|
|
93
|
-
id: FROST_FIELD_ID,
|
|
94
|
-
nextTickSeconds: skillHitmarkSeconds,
|
|
95
|
-
onTick: ({ activeCombatant, kitEffectState: tickEffectState }) => infuse(tickEffectState, combatant, activeCombatant),
|
|
96
|
-
radius: FIELD_RADIUS,
|
|
97
|
-
secondsRemaining: fieldSeconds,
|
|
98
|
-
tickIntervalSeconds: FIELD_TICK_SECONDS
|
|
99
|
-
});
|
|
100
|
-
} }
|
|
101
|
-
};
|
|
102
|
-
};
|
|
103
|
-
//#endregion
|
|
104
|
-
export { createChongyunKitBehaviour };
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { v as UNBOUNDED_FIELD_RADIUS } from "./constants-BqrUOf2M.js";
|
|
2
|
-
import { castKitField, castKitSummon } from "./index.js";
|
|
3
|
-
import { takeOne } from "@esposter/shared";
|
|
4
|
-
//#region src/services/kit/characters/colleiKit.ts
|
|
5
|
-
const createColleiKitBehaviour = ({ kit, readHit, readSeconds }) => {
|
|
6
|
-
const explosionHitmarkSeconds = takeOne(kit.elementalBurst.hits).hitmarkSeconds;
|
|
7
|
-
const leap = readHit("leap");
|
|
8
|
-
const leapFirstTickSeconds = readSeconds("leapFirstTick");
|
|
9
|
-
const leapTickIntervalSeconds = readSeconds("leapTickInterval");
|
|
10
|
-
const trumpCardKittySeconds = readSeconds("trumpCardKitty");
|
|
11
|
-
return { burst: { onStart: ({ activeCombatant: combatant, body: { facing, height, position }, kitEffectState }) => {
|
|
12
|
-
const field = castKitField(kitEffectState, combatant.characterId, position, {
|
|
13
|
-
nextTickSeconds: leapFirstTickSeconds,
|
|
14
|
-
onTick: ({ kitEffectState: tickEffectState }) => {
|
|
15
|
-
castKitSummon(tickEffectState, {
|
|
16
|
-
facing,
|
|
17
|
-
height,
|
|
18
|
-
position: field.centre
|
|
19
|
-
}, combatant, [leap]);
|
|
20
|
-
},
|
|
21
|
-
radius: UNBOUNDED_FIELD_RADIUS,
|
|
22
|
-
secondsRemaining: explosionHitmarkSeconds + trumpCardKittySeconds,
|
|
23
|
-
tickIntervalSeconds: leapTickIntervalSeconds
|
|
24
|
-
});
|
|
25
|
-
} } };
|
|
26
|
-
};
|
|
27
|
-
//#endregion
|
|
28
|
-
export { createColleiKitBehaviour };
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { castKitField, castKitSummon } from "./index.js";
|
|
2
|
-
import { takeOne } from "@esposter/shared";
|
|
3
|
-
//#region src/services/kit/characters/columbinaKit.ts
|
|
4
|
-
const COLUMBINA_SKILL_FIELD_ID = "columbina-gravity-interference";
|
|
5
|
-
const createColumbinaKitBehaviour = ({ kit, readHit, readParameter, readSeconds }) => {
|
|
6
|
-
const skillDotHit = readHit("skillDot");
|
|
7
|
-
const skillDotFirstTickSeconds = readSeconds("skillDotFirstTick");
|
|
8
|
-
const skillDotIntervalSeconds = readSeconds("skillDotInterval");
|
|
9
|
-
const skillDurationSeconds = readParameter("skillDurationSeconds") + takeOne(kit.elementalSkill.hits).hitmarkSeconds;
|
|
10
|
-
const castSkillField = (kitEffectState, body, combatant) => {
|
|
11
|
-
const field = castKitField(kitEffectState, combatant.characterId, body.position, {
|
|
12
|
-
id: COLUMBINA_SKILL_FIELD_ID,
|
|
13
|
-
isFollowing: true,
|
|
14
|
-
nextTickSeconds: skillDotFirstTickSeconds,
|
|
15
|
-
onTick: ({ kitEffectState: tickKitEffectState }) => castKitSummon(tickKitEffectState, {
|
|
16
|
-
facing: 0,
|
|
17
|
-
height: 0,
|
|
18
|
-
position: field.centre
|
|
19
|
-
}, combatant, [skillDotHit]),
|
|
20
|
-
secondsRemaining: skillDurationSeconds,
|
|
21
|
-
tickIntervalSeconds: skillDotIntervalSeconds
|
|
22
|
-
});
|
|
23
|
-
};
|
|
24
|
-
return { skill: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => {
|
|
25
|
-
const standingField = kitEffectState.effects.find((effect) => effect.kind === "field" && effect.id === COLUMBINA_SKILL_FIELD_ID && effect.characterId === combatant.characterId);
|
|
26
|
-
if (standingField === void 0) castSkillField(kitEffectState, body, combatant);
|
|
27
|
-
else standingField.secondsRemaining = skillDurationSeconds;
|
|
28
|
-
} } };
|
|
29
|
-
};
|
|
30
|
-
//#endregion
|
|
31
|
-
export { createColumbinaKitBehaviour };
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { MmdBoneName } from "genshin-engine";
|
|
2
|
-
//#region src/services/character/avatar/constants.ts
|
|
3
|
-
const AVATAR_COMPONENT = "playergirl";
|
|
4
|
-
const AVATAR_TEXTURE_FOLDER = "Texture2D";
|
|
5
|
-
const AVATAR_TEXTURE_SLOTS = [
|
|
6
|
-
{
|
|
7
|
-
isColour: false,
|
|
8
|
-
slot: "_FaceMapTex"
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
isColour: false,
|
|
12
|
-
slot: "_LightMapTex"
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
isColour: true,
|
|
16
|
-
slot: "_MTMap"
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
isColour: true,
|
|
20
|
-
slot: "_MainTex"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
isColour: true,
|
|
24
|
-
slot: "_PackedShadowRampTex"
|
|
25
|
-
}
|
|
26
|
-
];
|
|
27
|
-
const AVATAR_HUMANOID_MMD_NAME_MAP = {
|
|
28
|
-
Chest: MmdBoneName.Upper2,
|
|
29
|
-
Head: MmdBoneName.Head,
|
|
30
|
-
Hips: MmdBoneName.Lower,
|
|
31
|
-
LeftFoot: MmdBoneName.LeftAnkle,
|
|
32
|
-
LeftHand: MmdBoneName.LeftWrist,
|
|
33
|
-
LeftLowerArm: MmdBoneName.LeftElbow,
|
|
34
|
-
LeftLowerLeg: MmdBoneName.LeftKnee,
|
|
35
|
-
LeftShoulder: MmdBoneName.LeftShoulder,
|
|
36
|
-
LeftUpperArm: MmdBoneName.LeftArm,
|
|
37
|
-
LeftUpperLeg: MmdBoneName.LeftLeg,
|
|
38
|
-
Neck: MmdBoneName.Neck,
|
|
39
|
-
RightFoot: MmdBoneName.RightAnkle,
|
|
40
|
-
RightHand: MmdBoneName.RightWrist,
|
|
41
|
-
RightLowerArm: MmdBoneName.RightElbow,
|
|
42
|
-
RightLowerLeg: MmdBoneName.RightKnee,
|
|
43
|
-
RightShoulder: MmdBoneName.RightShoulder,
|
|
44
|
-
RightUpperArm: MmdBoneName.RightArm,
|
|
45
|
-
RightUpperLeg: MmdBoneName.RightLeg,
|
|
46
|
-
Spine: MmdBoneName.Upper
|
|
47
|
-
};
|
|
48
|
-
//#endregion
|
|
49
|
-
export { AVATAR_TEXTURE_SLOTS as i, AVATAR_HUMANOID_MMD_NAME_MAP as n, AVATAR_TEXTURE_FOLDER as r, AVATAR_COMPONENT as t };
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import "./characterPack-zycIUHje.js";
|
|
2
|
-
import { t as ReactionType } from "./ReactionType-BBSdxyO3.js";
|
|
3
|
-
import { LocomotionState } from "genshin-engine";
|
|
4
|
-
//#region src/services/kit/constants.ts
|
|
5
|
-
const KIT_FRAMES_PER_SECOND = 60;
|
|
6
|
-
const STRIKE_TARGETING_AREA = Object.freeze({
|
|
7
|
-
angle: 2 * Math.PI,
|
|
8
|
-
height: 6,
|
|
9
|
-
radius: 5
|
|
10
|
-
});
|
|
11
|
-
const SKILL_TARGETING_AREA = Object.freeze({
|
|
12
|
-
angle: 2 * Math.PI,
|
|
13
|
-
height: 10,
|
|
14
|
-
radius: 15
|
|
15
|
-
});
|
|
16
|
-
const ON_FOOT_LOCOMOTION_STATES = [
|
|
17
|
-
LocomotionState.Idle,
|
|
18
|
-
LocomotionState.Run,
|
|
19
|
-
LocomotionState.Sprint,
|
|
20
|
-
LocomotionState.Walk
|
|
21
|
-
];
|
|
22
|
-
const AIRBORNE_LOCOMOTION_STATES = [LocomotionState.Fall, LocomotionState.Jump];
|
|
23
|
-
const CHARGED_ATTACK_HOLD_SECONDS = .3;
|
|
24
|
-
const NORMAL_ATTACK_RESET_SECONDS = .5;
|
|
25
|
-
const PLUNGE_COLLISION_SECONDS = .3;
|
|
26
|
-
const HIGH_PLUNGE_MIN_HEIGHT = 2.4;
|
|
27
|
-
const ALTITUDE_LIMIT = 2;
|
|
28
|
-
const ALTITUDE_COEFFICIENT = .2;
|
|
29
|
-
const TARGET_DISTANCE_WEIGHT = .7;
|
|
30
|
-
const TARGET_ANGLE_WEIGHT = .3;
|
|
31
|
-
const ENEMY_STRIKE_TALENT_MULTIPLIER = 1;
|
|
32
|
-
const SUMMON_LINGER_SECONDS = .1;
|
|
33
|
-
const UNBOUNDED_FIELD_RADIUS = Number.POSITIVE_INFINITY;
|
|
34
|
-
const ELECTRO_REACTION_TYPES = /* @__PURE__ */ new Set([
|
|
35
|
-
ReactionType.Aggravate,
|
|
36
|
-
ReactionType.ElectroCharged,
|
|
37
|
-
ReactionType.Hyperbloom,
|
|
38
|
-
ReactionType.Overloaded,
|
|
39
|
-
ReactionType.Quicken,
|
|
40
|
-
ReactionType.Superconduct
|
|
41
|
-
]);
|
|
42
|
-
const MELEE_WEAPON_TYPES = /* @__PURE__ */ new Set([
|
|
43
|
-
"WEAPON_CLAYMORE",
|
|
44
|
-
"WEAPON_POLE",
|
|
45
|
-
"WEAPON_SWORD_ONE_HAND"
|
|
46
|
-
]);
|
|
47
|
-
//#endregion
|
|
48
|
-
export { TARGET_DISTANCE_WEIGHT as _, ELECTRO_REACTION_TYPES as a, KIT_FRAMES_PER_SECOND as c, ON_FOOT_LOCOMOTION_STATES as d, PLUNGE_COLLISION_SECONDS as f, TARGET_ANGLE_WEIGHT as g, SUMMON_LINGER_SECONDS as h, CHARGED_ATTACK_HOLD_SECONDS as i, MELEE_WEAPON_TYPES as l, STRIKE_TARGETING_AREA as m, ALTITUDE_COEFFICIENT as n, ENEMY_STRIKE_TALENT_MULTIPLIER as o, SKILL_TARGETING_AREA as p, ALTITUDE_LIMIT as r, HIGH_PLUNGE_MIN_HEIGHT as s, AIRBORNE_LOCOMOTION_STATES as t, NORMAL_ATTACK_RESET_SECONDS as u, UNBOUNDED_FIELD_RADIUS as v };
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
//#region src/services/constants.ts
|
|
2
|
-
const TILE_SELECTION_CAPACITY = 512;
|
|
3
|
-
const TERRAIN_WORKER_COUNT = 2;
|
|
4
|
-
const MAX_PENDING_TILE_COUNT = 8;
|
|
5
|
-
const FINEST_TILE_LEVEL = 0;
|
|
6
|
-
const ORIGIN_SHIFT_THRESHOLD = 1024;
|
|
7
|
-
const ORIGIN_SHIFT_STEP = 512;
|
|
8
|
-
const WATER_SURFACE_SIZE = 3200;
|
|
9
|
-
const GRASS_CAPTURE_SIZE = 160;
|
|
10
|
-
const GRASS_CAPTURE_RESOLUTION = 512;
|
|
11
|
-
const GRASS_RECAPTURE_DISTANCE = 20;
|
|
12
|
-
const GRASS_BLADE_SEGMENT_COUNT = 3;
|
|
13
|
-
const CLOUD_DRIFT_PER_WIND = .012;
|
|
14
|
-
const REGION_REACH = 1500;
|
|
15
|
-
const REGION_RECHECK_DISTANCE = 64;
|
|
16
|
-
const AREA_WEATHER_CHANGE_SECONDS = 300;
|
|
17
|
-
const DATA_FETCH_TIMEOUT_MS = 1e4;
|
|
18
|
-
const DATA_FETCH_RETRY_MS = 5e3;
|
|
19
|
-
const TUNING_TINT_RANGE = .1;
|
|
20
|
-
const TUNING_TINT_CHANNELS = [
|
|
21
|
-
{
|
|
22
|
-
key: "0",
|
|
23
|
-
name: "red"
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
key: "1",
|
|
27
|
-
name: "green"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
key: "2",
|
|
31
|
-
name: "blue"
|
|
32
|
-
}
|
|
33
|
-
];
|
|
34
|
-
const FIXED_STEP_SECONDS = 1 / 60;
|
|
35
|
-
const WORLD_RANDOM_SEED = 1;
|
|
36
|
-
const CAMERA_FRAME_PRIORITY = -1;
|
|
37
|
-
const SHADOW_FRAME_PRIORITY = 1;
|
|
38
|
-
const BODY_SHADOW_CASCADES = 2;
|
|
39
|
-
const ENEMY_POSE_LENGTH = 3;
|
|
40
|
-
const CASTER_REDRAW_DISTANCE = .25;
|
|
41
|
-
const CASTER_REDRAW_ANGLE = .1;
|
|
42
|
-
const CHARACTER_PLACEHOLDER_COLOR = 15262420;
|
|
43
|
-
const UNDRAWN_EFFECTS_MESH_REGEX = /^Eff_/u;
|
|
44
|
-
const UNDRAWN_STAGE_PLANES_MESH_REGEX = /^Stages_(?:DecalCube|Plane)_/u;
|
|
45
|
-
//#endregion
|
|
46
|
-
export { WORLD_RANDOM_SEED as A, TERRAIN_WORKER_COUNT as C, UNDRAWN_EFFECTS_MESH_REGEX as D, TUNING_TINT_RANGE as E, UNDRAWN_STAGE_PLANES_MESH_REGEX as O, SHADOW_FRAME_PRIORITY as S, TUNING_TINT_CHANNELS as T, MAX_PENDING_TILE_COUNT as _, CASTER_REDRAW_DISTANCE as a, REGION_REACH as b, DATA_FETCH_RETRY_MS as c, FINEST_TILE_LEVEL as d, FIXED_STEP_SECONDS as f, GRASS_RECAPTURE_DISTANCE as g, GRASS_CAPTURE_SIZE as h, CASTER_REDRAW_ANGLE as i, WATER_SURFACE_SIZE as k, DATA_FETCH_TIMEOUT_MS as l, GRASS_CAPTURE_RESOLUTION as m, BODY_SHADOW_CASCADES as n, CHARACTER_PLACEHOLDER_COLOR as o, GRASS_BLADE_SEGMENT_COUNT as p, CAMERA_FRAME_PRIORITY as r, CLOUD_DRIFT_PER_WIND as s, AREA_WEATHER_CHANGE_SECONDS as t, ENEMY_POSE_LENGTH as u, ORIGIN_SHIFT_STEP as v, TILE_SELECTION_CAPACITY as w, REGION_RECHECK_DISTANCE as x, ORIGIN_SHIFT_THRESHOLD as y };
|