genshin-world 4.2.0 → 4.3.3

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 (171) hide show
  1. package/README.md +2 -2
  2. package/dist/ElementDamageBonusAttributeMap-Cf1kBcTu.js +12 -0
  3. package/dist/EnemyState-BdsrVDVv.js +13 -0
  4. package/dist/GameDataset-oS0Tc9KV.js +272 -0
  5. package/dist/KitEventKind-DinObjiq.js +33 -0
  6. package/dist/ReactionType-BTiek5WA.js +36 -0
  7. package/dist/TransformativeReactionType-DYhIEAoe.js +14 -0
  8. package/dist/addKitEffect-DEhZUuxo.js +19 -0
  9. package/dist/addKitStatus-CecgwPmO.js +8 -0
  10. package/dist/ainoKit-Z23iOdpE.js +110 -0
  11. package/dist/albedoKit-h6MSXqhl.js +132 -0
  12. package/dist/alhaithamKit-2VrwmZzn.js +225 -0
  13. package/dist/aloyKit-Dlk_fLbL.js +66 -0
  14. package/dist/alyoshaKit-3ky4aL_z.js +3 -0
  15. package/dist/amberKit-BuYU5ACZ.js +85 -0
  16. package/dist/arlecchinoKit-B2WJP5Y5.js +16 -0
  17. package/dist/ayakaKit-D7K6RdMw.js +84 -0
  18. package/dist/ayatoKit-qQp-Ayun.js +136 -0
  19. package/dist/baizhuKit-9i8Hvfeg.js +81 -0
  20. package/dist/barbaraKit-DMo_2qWo.js +122 -0
  21. package/dist/beidouKit-1lURCwhO.js +89 -0
  22. package/dist/bennettKit-B-ipp-MR.js +75 -0
  23. package/dist/candaceKit-oGYu9t5n.js +92 -0
  24. package/dist/castKitField-BhB1fy3l.js +21 -0
  25. package/dist/characterPack-B3e_YsdJ.d.ts +115 -0
  26. package/dist/characterPack-DzYMqBNM.js +697 -0
  27. package/dist/characterPack.d.ts +2 -0
  28. package/dist/characterPack.js +3 -0
  29. package/dist/charlotteKit-BjNvcN8w.js +103 -0
  30. package/dist/chascaKit-isny33W1.js +52 -0
  31. package/dist/checkIsKitShieldLive-DEn8yb0C.js +3 -0
  32. package/dist/chevreuseKit-BppMndmv.js +47 -0
  33. package/dist/chioriKit-CKfqMVtb.js +30 -0
  34. package/dist/chongyunKit-DeZG-qOb.js +99 -0
  35. package/dist/citlaliKit-BLY9P2cd.js +62 -0
  36. package/dist/clorindeKit-DGNp_1SZ.js +61 -0
  37. package/dist/collectKitEnergyDrops-4kTI3aGH.js +61 -0
  38. package/dist/colleiKit-CVBvP9-k.js +51 -0
  39. package/dist/columbinaKit-BqmNtRDK.js +279 -0
  40. package/dist/computeFacingAngle-DapXsgDc.js +7 -0
  41. package/dist/constants-6NEnGOni.js +186 -0
  42. package/dist/constants-BIXoNz1x.js +73 -0
  43. package/dist/constants-DWgLZz-I.js +45 -0
  44. package/dist/constants-jHIdcxxW.js +3 -0
  45. package/dist/constants-r10WzaUG.js +48 -0
  46. package/dist/consumeKitResource-DknosO6e.js +17 -0
  47. package/dist/countKitResource-CPve-dw2.js +4 -0
  48. package/dist/createWindriseGroundPaint-CtFTL5uW.js +293 -0
  49. package/dist/cynoKit-bhub8RfD.js +203 -0
  50. package/dist/dahliaKit-BeEPFn33.js +20 -0
  51. package/dist/dehyaKit-1qJYvLv-.js +23 -0
  52. package/dist/dilucKit-DslGKmxO.js +166 -0
  53. package/dist/dionaKit-B33zk3GI.js +68 -0
  54. package/dist/doriKit-BmYySQcG.js +24 -0
  55. package/dist/durinKit-CpCXxj-r.js +49 -0
  56. package/dist/emilieKit-BZqz4PVs.js +20 -0
  57. package/dist/emitKitEvent-Cb-ZHu50.js +11 -0
  58. package/dist/escoffierKit-DFRj0Hpo.js +95 -0
  59. package/dist/eulaKit-BzD8ye_S.js +144 -0
  60. package/dist/faruzanKit-C5WQz91G.js +72 -0
  61. package/dist/findKitStatus-Dj_zauGj.js +3 -0
  62. package/dist/fischlKit-e4xAt26v.js +95 -0
  63. package/dist/flinsKit-D82N06z5.js +30 -0
  64. package/dist/freminetKit-Dq9ebIts.js +20 -0
  65. package/dist/furinaKit-CzTKkE0N.js +289 -0
  66. package/dist/gainKitResource-3F1z8Aco.js +14 -0
  67. package/dist/gainPartyMemberEnergy-DUbIxe6i.js +10 -0
  68. package/dist/gamingKit-yxYvslgf.js +25 -0
  69. package/dist/ganyuKit-B2pxzHKL.js +84 -0
  70. package/dist/getActiveCharacterId-D9TtVSWj.js +9 -0
  71. package/dist/getBuffedCombatant-CwXmBrc6.js +94 -0
  72. package/dist/getDeployedCharacterIds-TuIRCNKb.js +3 -0
  73. package/dist/getDeployedCombatants-BQdLjZha.js +16 -0
  74. package/dist/getPartyMember-BAb9wUiz.js +8 -0
  75. package/dist/gorouKit--Luf6-WZ.js +153 -0
  76. package/dist/heizouKit-DRleoyzF.js +49 -0
  77. package/dist/huTaoKit-WDMpqAzD.js +146 -0
  78. package/dist/iansanKit-BPzX4C36.js +145 -0
  79. package/dist/ifaKit-Z57TFRSg.js +39 -0
  80. package/dist/illugaKit-86u4wqrU.js +111 -0
  81. package/dist/index-C5rNBYhp.d.ts +26017 -0
  82. package/dist/index.d.ts +4 -0
  83. package/dist/index.js +48495 -0
  84. package/dist/ineffaKit-D0SA01X2.js +154 -0
  85. package/dist/ittoKit-hM51Mywb.js +132 -0
  86. package/dist/jahodaKit-CqtBpzVS.js +344 -0
  87. package/dist/jeanKit-fwjmnF1v.js +89 -0
  88. package/dist/kachinaKit-Dyh5F-ob.js +6 -0
  89. package/dist/kaeyaKit-SBM0QxJ5.js +91 -0
  90. package/dist/kavehKit-1XyMxtUb.js +33 -0
  91. package/dist/kazuhaKit-C726LLZy.js +76 -0
  92. package/dist/keqingKit-O_V-tx1h.js +100 -0
  93. package/dist/kinichKit-DIVa0P5s.js +71 -0
  94. package/dist/kiraraKit-nS9iOECm.js +70 -0
  95. package/dist/kleeKit-DzbELTyN.js +95 -0
  96. package/dist/kokomiKit-BRzXNRVb.js +83 -0
  97. package/dist/kujouSaraKit-BpN3Ipay.js +95 -0
  98. package/dist/kukiKit-DRdmE41e.js +70 -0
  99. package/dist/lanYanKit-CRK1J-LX.js +26 -0
  100. package/dist/laumaKit-CRc88J5l.js +161 -0
  101. package/dist/laylaKit-B7Pjqgzw.js +180 -0
  102. package/dist/linneaKit-CVZeam_T.js +3 -0
  103. package/dist/lisaKit-BJqj8t7j.js +65 -0
  104. package/dist/lohenKit-BZk4IiPV.js +3 -0
  105. package/dist/lynetteKit-CfwhsLsJ.js +39 -0
  106. package/dist/lyneyKit-BQiI15dt.js +42 -0
  107. package/dist/mavuikaKit-MMBY1DJn.js +21 -0
  108. package/dist/mikaKit-BIMafqBI.js +20 -0
  109. package/dist/mizukiKit-CC34yGgJ.js +57 -0
  110. package/dist/monaKit-BlrXXHlB.js +145 -0
  111. package/dist/mualaniKit-BUTB11j2.js +6 -0
  112. package/dist/nahidaKit-ZHrD7-m7.js +112 -0
  113. package/dist/naviaKit-DDttg5Dp.js +139 -0
  114. package/dist/neferKit-Z-QBM46z.js +29 -0
  115. package/dist/neuvilletteKit-B4EhID2O.js +117 -0
  116. package/dist/nicoleKit-Dmrpe0yU.js +281 -0
  117. package/dist/nilouKit-CoztU-uZ.js +104 -0
  118. package/dist/ningguangKit-BGOXmwd-.js +112 -0
  119. package/dist/noelleKit-nl5ar8f1.js +147 -0
  120. package/dist/odetteKit-Bu1W8GX7.js +101 -0
  121. package/dist/ororonKit-CboDk9B8.js +91 -0
  122. package/dist/pruneKit-xgQ9cym6.js +34 -0
  123. package/dist/qiqiKit-lz_qLyLu.js +104 -0
  124. package/dist/raidenKit-CVTi4bpy.js +152 -0
  125. package/dist/razorKit-BHyrlVEl.js +121 -0
  126. package/dist/readCharacterAvatar-xauJoD8Q.js +291 -0
  127. package/dist/removeKitEffects-Csap9Xyn.js +5 -0
  128. package/dist/rosariaKit-DEpP8gj7.js +59 -0
  129. package/dist/sandroneKit-C7vjjwWY.js +3 -0
  130. package/dist/save-W-sjOoN_.js +2475 -0
  131. package/dist/save.d.ts +2 -0
  132. package/dist/save.js +1 -0
  133. package/dist/sayuKit-DQbPlL_6.js +67 -0
  134. package/dist/sceneExport-3Se7hlVa.js +26 -0
  135. package/dist/sceneExport-C-q_cRxm.d.ts +57 -0
  136. package/dist/sceneExport.d.ts +2 -0
  137. package/dist/sceneExport.js +1 -0
  138. package/dist/sethosKit-o-Tz2GFI.js +6 -0
  139. package/dist/shenheKit-Xu_rt5aN.js +152 -0
  140. package/dist/sigewinneKit-NOWCcIW4.js +21 -0
  141. package/dist/skirkKit-CK183sCe.js +9 -0
  142. package/dist/spendKitResource-CC5kZDgu.js +9 -0
  143. package/dist/style.css +4570 -0
  144. package/dist/sucroseKit-Brr_FwwP.js +124 -0
  145. package/dist/tartagliaKit-DQzYxDRn.js +136 -0
  146. package/dist/terrainTileWorker.d.ts +1 -0
  147. package/dist/terrainTileWorker.js +80 -0
  148. package/dist/thomaKit-CesNlmDH.js +95 -0
  149. package/dist/tighnariKit-B9BZlgE9.js +45 -0
  150. package/dist/varesaKit-D5iKxzdo.js +36 -0
  151. package/dist/varkaKit-CNpU_rb3.js +3 -0
  152. package/dist/ventiKit-CM94zgZy.js +52 -0
  153. package/dist/vesnaKit-DtGBZlNW.js +3 -0
  154. package/dist/vodyanitsaKit-BurO3Fqh.js +3 -0
  155. package/dist/wandererKit-CW3sLw53.js +8 -0
  156. package/dist/wriothesleyKit-CPwNVWnr.js +102 -0
  157. package/dist/xianglingKit-DAFhr2LW.js +113 -0
  158. package/dist/xianyunKit-G4ateSub.js +107 -0
  159. package/dist/xiaoKit-CQljYrZS.js +104 -0
  160. package/dist/xilonenKit-39u8vLuk.js +41 -0
  161. package/dist/xingqiuKit-nURrQ7vt.js +126 -0
  162. package/dist/xinyanKit-DU0WpVms.js +144 -0
  163. package/dist/yaeMikoKit-kSDqAFyn.js +56 -0
  164. package/dist/yanfeiKit-Cst973qA.js +118 -0
  165. package/dist/yaoyaoKit-6yjjf3np.js +201 -0
  166. package/dist/yelanKit-SSdzqMQa.js +78 -0
  167. package/dist/yoimiyaKit-DqiQvgAt.js +90 -0
  168. package/dist/yunjinKit-lCP6TTRP.js +86 -0
  169. package/dist/zhongliKit-CTjDWUoW.js +109 -0
  170. package/dist/zibaiKit-CatYt9BG.js +62 -0
  171. package/package.json +11 -14
@@ -0,0 +1,293 @@
1
+ import "vue";
2
+ import { Color, MathUtils, Matrix4, Quaternion, Vector2, Vector3 } from "three";
3
+ import { GroundLayer, computeScatterPoints, createSeededRandom, createTerrainShapeHeight, getTerrainTileColumn, getTerrainTileRow } from "genshin-engine/terrainWorker";
4
+ // src/services/windrise/constants.ts
5
+ const WINDRISE_SEED = 0;
6
+ const WINDRISE_SCENE_EXPORT_COMPONENT = "windrise";
7
+ const WATER_SHALLOW_COLOR = 6280136;
8
+ const WATER_DEEP_COLOR = 1925032;
9
+ const WATER_DEEP_DEPTH = 6;
10
+ const WATER_FOAM_DEPTH = .6;
11
+ const WATER_CAUSTIC_STRENGTH = .35;
12
+ const UNDERWATER_FOG_COLOR = 2062982;
13
+ const UNDERWATER_FOG_DENSITY = .08;
14
+ const SUN_DISTANCE = 120;
15
+ const RIM_STRENGTH = .55;
16
+ const WINDRISE_START_POINT = {
17
+ x: 36,
18
+ z: 12
19
+ };
20
+ const OAK_BARK_PART = "Stages_Unique_CyTree01_Bark_Lod1";
21
+ const OAK_LEAF_PART = "Stages_Unique_CyTree01_Leaf_Lod1";
22
+ const PLANT_DOME_SCALE = [
23
+ .4,
24
+ .3,
25
+ .4
26
+ ];
27
+ const TREE_PREFAB_NAME_PART = "Tree";
28
+ const PLANT_DRAW_DISTANCE = 120;
29
+ const WINDRISE_RAMP_OPTIONS = {
30
+ resolution: 64,
31
+ shade: 0,
32
+ softness: .08,
33
+ terminator: .52
34
+ };
35
+ const FOG_DENSITY = .0024;
36
+ const FOG_HEIGHT_FALLOFF = .02;
37
+ const FOG_START_DISTANCE = 60;
38
+ const SHADOW_MAX_FAR = 320;
39
+ const WINDRISE_GRADE_OPTIONS = {
40
+ contrast: 1.06,
41
+ highlightTint: [
42
+ .03,
43
+ .015,
44
+ -.015
45
+ ],
46
+ saturation: 1.12,
47
+ shadowTint: [
48
+ -.01,
49
+ 0,
50
+ .04
51
+ ],
52
+ size: 32
53
+ };
54
+ const WINDRISE_START_MINUTES = 900;
55
+ const SUN_TILT = .45;
56
+ const CLOUD_COVERAGE = .42;
57
+ const WIND_DIRECTION = new Vector2(.94, .34).normalize();
58
+ const WIND_STRENGTH = .3;
59
+ const WIND_GUST_STRENGTH = .45;
60
+ const WIND_GUST_WIDTH = 30;
61
+ const WIND_GUST_SPEED = 7;
62
+ const GRASS_BLADE_HEIGHT = .5;
63
+ const GRASS_BLADE_WIDTH = .08;
64
+ const NEAR_GRASS_RING = {
65
+ cellsPerSide: 256,
66
+ fadeEnd: 38,
67
+ fadeStart: 28,
68
+ innerRadius: 0,
69
+ scale: 1,
70
+ spacing: .3
71
+ };
72
+ const MIDDLE_GRASS_RING = {
73
+ cellsPerSide: 192,
74
+ fadeEnd: 76,
75
+ fadeStart: 56,
76
+ innerRadius: 30,
77
+ scale: 1.7,
78
+ spacing: .8
79
+ };
80
+ const FLOWER_SPACING = 2.5;
81
+ const FLOWER_CANDIDATE_COUNT = 48;
82
+ const FLOWER_MIN_GRASS = .9;
83
+ const FLOWER_MIN_SIZE = .12;
84
+ const FLOWER_MAX_SIZE = .2;
85
+ const FLOWER_COLORS = [
86
+ 16052710,
87
+ 15914571,
88
+ 12101352
89
+ ];
90
+ const SLOPE_REACH = .5;
91
+ const UP = new Vector3(0, 1, 0);
92
+ const WINDRISE_SKY_KEYFRAMES = [
93
+ {
94
+ cloudLitColor: new Color(3953288),
95
+ cloudShadeColor: new Color(1911372),
96
+ hemisphereGroundColor: new Color(1714730),
97
+ hemisphereIntensity: .7,
98
+ hemisphereSkyColor: new Color(2901112),
99
+ horizonColor: new Color(2046056),
100
+ lightColor: new Color(9414911),
101
+ lightIntensity: .45,
102
+ minutes: 0,
103
+ starIntensity: 1,
104
+ zenithColor: new Color(727610)
105
+ },
106
+ {
107
+ cloudLitColor: new Color(6974104),
108
+ cloudShadeColor: new Color(3028064),
109
+ hemisphereGroundColor: new Color(2240554),
110
+ hemisphereIntensity: .65,
111
+ hemisphereSkyColor: new Color(3690114),
112
+ horizonColor: new Color(5921418),
113
+ lightColor: new Color(9414911),
114
+ lightIntensity: .3,
115
+ minutes: 300,
116
+ starIntensity: .6,
117
+ zenithColor: new Color(1912158)
118
+ },
119
+ {
120
+ cloudLitColor: new Color(16763048),
121
+ cloudShadeColor: new Color(9075360),
122
+ hemisphereGroundColor: new Color(4872762),
123
+ hemisphereIntensity: .8,
124
+ hemisphereSkyColor: new Color(8031420),
125
+ horizonColor: new Color(15903114),
126
+ lightColor: new Color(16756864),
127
+ lightIntensity: .05,
128
+ minutes: 360,
129
+ starIntensity: .1,
130
+ zenithColor: new Color(4876968)
131
+ },
132
+ {
133
+ cloudLitColor: new Color(16770252),
134
+ cloudShadeColor: new Color(11049144),
135
+ hemisphereGroundColor: new Color(6978116),
136
+ hemisphereIntensity: 1,
137
+ hemisphereSkyColor: new Color(10139872),
138
+ horizonColor: new Color(16764832),
139
+ lightColor: new Color(16763024),
140
+ lightIntensity: 1.4,
141
+ minutes: 420,
142
+ starIntensity: 0,
143
+ zenithColor: new Color(6987480)
144
+ },
145
+ {
146
+ cloudLitColor: new Color(16777215),
147
+ cloudShadeColor: new Color(12110050),
148
+ hemisphereGroundColor: new Color(6127418),
149
+ hemisphereIntensity: 1.3,
150
+ hemisphereSkyColor: new Color(9357567),
151
+ horizonColor: new Color(13625599),
152
+ lightColor: new Color(16774888),
153
+ lightIntensity: 2.8,
154
+ minutes: 720,
155
+ starIntensity: 0,
156
+ zenithColor: new Color(4165606)
157
+ },
158
+ {
159
+ cloudLitColor: new Color(16777215),
160
+ cloudShadeColor: new Color(12372706),
161
+ hemisphereGroundColor: new Color(6127418),
162
+ hemisphereIntensity: 1.3,
163
+ hemisphereSkyColor: new Color(9357567),
164
+ horizonColor: new Color(13625599),
165
+ lightColor: new Color(16774368),
166
+ lightIntensity: 2.6,
167
+ minutes: 900,
168
+ starIntensity: 0,
169
+ zenithColor: new Color(5019884)
170
+ },
171
+ {
172
+ cloudLitColor: new Color(16765096),
173
+ cloudShadeColor: new Color(9074856),
174
+ hemisphereGroundColor: new Color(5922872),
175
+ hemisphereIntensity: 1.05,
176
+ hemisphereSkyColor: new Color(10130632),
177
+ horizonColor: new Color(16759416),
178
+ lightColor: new Color(16756326),
179
+ lightIntensity: 1.5,
180
+ minutes: 1020,
181
+ starIntensity: 0,
182
+ zenithColor: new Color(5929152)
183
+ },
184
+ {
185
+ cloudLitColor: new Color(15243944),
186
+ cloudShadeColor: new Color(5917320),
187
+ hemisphereGroundColor: new Color(3817522),
188
+ hemisphereIntensity: .8,
189
+ hemisphereSkyColor: new Color(6972584),
190
+ horizonColor: new Color(14256800),
191
+ lightColor: new Color(16747120),
192
+ lightIntensity: .05,
193
+ minutes: 1080,
194
+ starIntensity: .2,
195
+ zenithColor: new Color(3816582)
196
+ },
197
+ {
198
+ cloudLitColor: new Color(4872336),
199
+ cloudShadeColor: new Color(2239570),
200
+ hemisphereGroundColor: new Color(1977388),
201
+ hemisphereIntensity: .7,
202
+ hemisphereSkyColor: new Color(3425914),
203
+ horizonColor: new Color(3817336),
204
+ lightColor: new Color(9414911),
205
+ lightIntensity: .35,
206
+ minutes: 1140,
207
+ starIntensity: .8,
208
+ zenithColor: new Color(1450572)
209
+ }
210
+ ];
211
+ // src/models/world/TerrainWorkerMessageKind.ts
212
+ let TerrainWorkerMessageKind = /* @__PURE__ */ function(TerrainWorkerMessageKind) {
213
+ TerrainWorkerMessageKind["Failed"] = "failed";
214
+ TerrainWorkerMessageKind["Load"] = "load";
215
+ TerrainWorkerMessageKind["RegionGrounds"] = "regionGrounds";
216
+ TerrainWorkerMessageKind["Tile"] = "tile";
217
+ return TerrainWorkerMessageKind;
218
+ }({});
219
+ // src/services/world/createWorldHeight.ts
220
+ const createWorldHeight = (baseGrounds, regionGrounds) => createTerrainShapeHeight(...baseGrounds, ...regionGrounds);
221
+ // src/services/windrise/getSlope.ts
222
+ const getSlope = (getHeight, x, z) => {
223
+ const acrossX = getHeight(x - SLOPE_REACH, z) - getHeight(x + SLOPE_REACH, z);
224
+ const acrossZ = getHeight(x, z - SLOPE_REACH) - getHeight(x, z + SLOPE_REACH);
225
+ const up = SLOPE_REACH * 2;
226
+ return 1 - up / Math.hypot(acrossX, up, acrossZ);
227
+ };
228
+ // src/services/windrise/computeWindrisePlants.ts
229
+ const flowerColors = FLOWER_COLORS.map((flowerColor) => new Color(flowerColor));
230
+ const matrix = new Matrix4();
231
+ const rotation = new Quaternion();
232
+ const scale = new Vector3();
233
+ const translation = new Vector3();
234
+ const computeWindrisePlants = (key, size, { getHeight, getWeights, waterLevel }) => {
235
+ const left = getTerrainTileColumn(key) * size;
236
+ const back = getTerrainTileRow(key) * size;
237
+ const points = computeScatterPoints({
238
+ candidateCount: 48,
239
+ checkIsAccepted: (x, z) => {
240
+ const worldX = left + x;
241
+ const worldZ = back + z;
242
+ const height = getHeight(worldX, worldZ);
243
+ if (height < waterLevel) return false;
244
+ return getWeights(height, getSlope(getHeight, worldX, worldZ), worldX, worldZ)[GroundLayer.Grass] >= FLOWER_MIN_GRASS;
245
+ },
246
+ seed: key,
247
+ size,
248
+ spacing: FLOWER_SPACING
249
+ });
250
+ const plantCount = points.length / 2;
251
+ const plantMatrices = new Float32Array(plantCount * 16);
252
+ const plantColors = new Float32Array(plantCount * 3);
253
+ const random = createSeededRandom(key + 1);
254
+ for (let plantIndex = 0; plantIndex < plantCount; plantIndex++) {
255
+ const x = points[plantIndex * 2] ?? 0;
256
+ const z = points[plantIndex * 2 + 1] ?? 0;
257
+ translation.set(x, getHeight(left + x, back + z), z);
258
+ rotation.setFromAxisAngle(UP, random() * Math.PI * 2);
259
+ scale.setScalar(MathUtils.lerp(FLOWER_MIN_SIZE, FLOWER_MAX_SIZE, random()));
260
+ matrix.compose(translation, rotation, scale).toArray(plantMatrices, plantIndex * 16);
261
+ flowerColors[Math.floor(random() * flowerColors.length)]?.toArray(plantColors, plantIndex * 3);
262
+ }
263
+ return {
264
+ plantColors,
265
+ plantMatrices
266
+ };
267
+ };
268
+ // src/services/windrise/createWindriseGroundPaint.ts
269
+ const createWindriseGroundPaint = (groundLayers, surfaces) => {
270
+ const { color: groundColor, layers } = surfaces.Ground;
271
+ const getGroundLayerColors = (layer) => {
272
+ const color = new Color(layers[layer] ?? groundColor).getHex();
273
+ return {
274
+ color,
275
+ patchColor: color
276
+ };
277
+ };
278
+ return {
279
+ layerColors: {
280
+ [GroundLayer.Earth]: getGroundLayerColors(GroundLayer.Earth),
281
+ [GroundLayer.Grass]: getGroundLayerColors(GroundLayer.Grass),
282
+ [GroundLayer.Path]: getGroundLayerColors(GroundLayer.Path),
283
+ [GroundLayer.Rock]: getGroundLayerColors(GroundLayer.Rock),
284
+ [GroundLayer.Sand]: getGroundLayerColors(GroundLayer.Sand),
285
+ [GroundLayer.Snow]: getGroundLayerColors(GroundLayer.Snow)
286
+ },
287
+ layerField: groundLayers,
288
+ patchScale: 18,
289
+ pathFalloff: .6,
290
+ paths: []
291
+ };
292
+ };
293
+ export { UNDERWATER_FOG_COLOR as A, WINDRISE_SCENE_EXPORT_COMPONENT as B, PLANT_DRAW_DISTANCE as C, SUN_DISTANCE as D, SLOPE_REACH as E, WATER_DEEP_DEPTH as F, WIND_DIRECTION as G, WINDRISE_SKY_KEYFRAMES as H, WATER_FOAM_DEPTH as I, WIND_GUST_WIDTH as J, WIND_GUST_SPEED as K, WATER_SHALLOW_COLOR as L, UP as M, WATER_CAUSTIC_STRENGTH as N, SUN_TILT as O, WATER_DEEP_COLOR as P, WINDRISE_GRADE_OPTIONS as R, PLANT_DOME_SCALE as S, SHADOW_MAX_FAR as T, WINDRISE_START_MINUTES as U, WINDRISE_SEED as V, WINDRISE_START_POINT as W, WIND_STRENGTH as Y, GRASS_BLADE_WIDTH as _, TerrainWorkerMessageKind as a, OAK_BARK_PART as b, FLOWER_COLORS as c, FLOWER_MIN_SIZE as d, FLOWER_SPACING as f, GRASS_BLADE_HEIGHT as g, FOG_START_DISTANCE as h, createWorldHeight as i, UNDERWATER_FOG_DENSITY as j, TREE_PREFAB_NAME_PART as k, FLOWER_MAX_SIZE as l, FOG_HEIGHT_FALLOFF as m, computeWindrisePlants as n, CLOUD_COVERAGE as o, FOG_DENSITY as p, WIND_GUST_STRENGTH as q, getSlope as r, FLOWER_CANDIDATE_COUNT as s, createWindriseGroundPaint as t, FLOWER_MIN_GRASS as u, MIDDLE_GRASS_RING as v, RIM_STRENGTH as w, OAK_LEAF_PART as x, NEAR_GRASS_RING as y, WINDRISE_RAMP_OPTIONS as z };
@@ -0,0 +1,203 @@
1
+ import "./GameDataset-oS0Tc9KV.js";
2
+ import { t as gainPartyMemberEnergy } from "./gainPartyMemberEnergy-DUbIxe6i.js";
3
+ import { t as getDeployedCharacterIds } from "./getDeployedCharacterIds-TuIRCNKb.js";
4
+ import { t as ReactionType } from "./ReactionType-BTiek5WA.js";
5
+ import "./KitEventKind-DinObjiq.js";
6
+ import { t as findKitStatus } from "./findKitStatus-Dj_zauGj.js";
7
+ import { a as ELECTRO_REACTION_TYPES } from "./constants-BIXoNz1x.js";
8
+ import { t as addKitStatus } from "./addKitStatus-CecgwPmO.js";
9
+ import { t as castKitField } from "./castKitField-BhB1fy3l.js";
10
+ import { buffKitMember, castKitSummon, checkHasKitStatus, elementalMasteryMultiplier, enterKitStance, findKitStance, startKitCooldown } from "./index.js";
11
+ import { takeOne } from "@esposter/shared";
12
+ // src/services/kit/characters/cynoKit.ts
13
+ const BURST_EXTENSIONS_MAX = 2;
14
+ const BURST_EXTENSIONS_STATUS_ID = "cyno-burst-extensions";
15
+ const BURST_BUFF_SOURCE = "cyno-burst";
16
+ const ELEMENTAL_MASTERY_SHARE_ASCENSION_4_NORMAL_ATTACK = 1.5;
17
+ const ELEMENTAL_MASTERY_SHARE_ASCENSION_4_BOLT = 2.5;
18
+ const ASCENSION_1 = 1;
19
+ const ASCENSION_4 = 4;
20
+ const JUDICATION_FIELD_ID = "cyno-judication";
21
+ const ENDSEER_STATUS_ID = "cyno-endseer";
22
+ const JUDICATION_DAMAGE_BONUS = .35;
23
+ const JUDICATION_DAMAGE_SECONDS = 1;
24
+ const JUDICATION_DAMAGE_STATUS_ID = "cyno-judication-damage";
25
+ const CONSTELLATION_2 = 2;
26
+ const CONSTELLATION_4 = 4;
27
+ const CONSTELLATION_6 = 6;
28
+ const C2_STATUS_ID = "cyno-c2";
29
+ const C2_ICD_STATUS_ID = "cyno-c2-icd";
30
+ const C2_SECONDS = 4;
31
+ const C2_ICD_SECONDS = .1;
32
+ const C2_STACKS_MAX = 5;
33
+ const C2_ELECTRO_DAMAGE_BONUS_PER_STACK = .1;
34
+ const C4_STATUS_ID = "cyno-c4";
35
+ const C4_STACKS_MAX = 5;
36
+ const C4_ENERGY = 3;
37
+ const C6_STATUS_ID = "cyno-c6";
38
+ const C6_ICD_STATUS_ID = "cyno-c6-icd";
39
+ const C6_SECONDS = 8;
40
+ const C6_ICD_SECONDS = .4;
41
+ const C6_STACKS_PER_TRIGGER = 4;
42
+ const C6_STACKS_MAX = 8;
43
+ const createElementalMasteryShareBonus = (share) => (combatant) => combatant.ascension >= ASCENSION_4 ? elementalMasteryMultiplier(combatant, share) : 0;
44
+ const getPactswornNormalAttackBonus = createElementalMasteryShareBonus(ELEMENTAL_MASTERY_SHARE_ASCENSION_4_NORMAL_ATTACK);
45
+ const getDuststalkerBoltBonus = createElementalMasteryShareBonus(ELEMENTAL_MASTERY_SHARE_ASCENSION_4_BOLT);
46
+ const addDayOfTheJackal = (kitEffectState, characterId, stacks) => addKitStatus(kitEffectState, characterId, {
47
+ id: C6_STATUS_ID,
48
+ secondsRemaining: C6_SECONDS,
49
+ stacks
50
+ });
51
+ const findJudicationField = (effects, characterId) => effects.find((effect) => effect.kind === "field" && effect.characterId === characterId && effect.id === JUDICATION_FIELD_ID);
52
+ const checkIsC4Reaction = ({ element, reactionType }) => ELECTRO_REACTION_TYPES.has(reactionType) || reactionType === ReactionType.Swirl && element === "Electric";
53
+ const CONSTELLATION_1 = 1;
54
+ const WOLF_SWIFTNESS_NORMAL_ATTACK_SPEED_BONUS = .2;
55
+ const WOLF_SWIFTNESS_NORMAL_ATTACK_SPEED_SECONDS = 10;
56
+ const WOLF_SWIFTNESS_NORMAL_ATTACK_SPEED_STATUS_ID = "cyno-wolf-swiftness-attack-speed";
57
+ const createCynoKitBehaviour = ({ kit, readHit, readHits, readParameter, readSeconds, readStance }) => {
58
+ const extensionSeconds = readParameter("extensionSeconds");
59
+ const burstSeconds = readParameter("burstSeconds") + readSeconds("burstDurationCast");
60
+ const burstElementalMastery = readParameter("pactswornPathclearerElementalMastery");
61
+ const mortuaryRiteCooldownMultiplier = readParameter("mortuaryRiteCooldownSeconds") / kit.skillCooldownSeconds;
62
+ const judicationFirstSeconds = readSeconds("judicationFirst");
63
+ const judicationIntervalSeconds = readSeconds("judicationInterval");
64
+ const endseerSeconds = readSeconds("endseer");
65
+ const duststalkerBoltBehaviour = { additiveBaseDamageBonus: getDuststalkerBoltBonus };
66
+ const duststalkerBolt = readHit("duststalkerBolt", duststalkerBoltBehaviour);
67
+ const mortuaryRiteDuststalkerBolts = readHits("mortuaryRiteDuststalkerBolts", duststalkerBoltBehaviour);
68
+ const onNormalAttackStrike = ({ kitEffectState }, { body, combatant }) => {
69
+ const { characterId, constellationCount } = combatant;
70
+ if (constellationCount >= CONSTELLATION_2 && startKitCooldown(kitEffectState, characterId, C2_ICD_STATUS_ID, C2_ICD_SECONDS)) {
71
+ const stacks = Math.min(C2_STACKS_MAX, (findKitStatus(kitEffectState.effects, characterId, C2_STATUS_ID)?.stacks ?? 0) + 1);
72
+ addKitStatus(kitEffectState, characterId, {
73
+ id: C2_STATUS_ID,
74
+ secondsRemaining: C2_SECONDS,
75
+ stacks
76
+ });
77
+ buffKitMember(kitEffectState, characterId, {
78
+ amount: C2_ELECTRO_DAMAGE_BONUS_PER_STACK * stacks,
79
+ attribute: "FIGHT_PROP_ELEC_ADD_HURT",
80
+ secondsRemaining: C2_SECONDS,
81
+ source: C2_STATUS_ID
82
+ });
83
+ }
84
+ if (constellationCount >= CONSTELLATION_6 && findKitStance(kitEffectState.effects, characterId)) {
85
+ const day = findKitStatus(kitEffectState.effects, characterId, C6_STATUS_ID);
86
+ if (day && (day.stacks ?? 0) > 0 && startKitCooldown(kitEffectState, characterId, C6_ICD_STATUS_ID, C6_ICD_SECONDS)) {
87
+ day.stacks = (day.stacks ?? 0) - 1;
88
+ castKitSummon(kitEffectState, body, combatant, [duststalkerBolt], { attackTag: "ElementalSkill" });
89
+ }
90
+ }
91
+ };
92
+ const invokerStrikeHit = { onStrike: onNormalAttackStrike };
93
+ const pactswornStrikeHit = {
94
+ additiveBaseDamageBonus: getPactswornNormalAttackBonus,
95
+ onStrike: onNormalAttackStrike
96
+ };
97
+ const castJudication = (kitEffectState, { position }, characterId) => {
98
+ castKitField(kitEffectState, characterId, position, {
99
+ id: JUDICATION_FIELD_ID,
100
+ nextTickSeconds: judicationFirstSeconds,
101
+ onTick: ({ kitEffectState: tickKitEffectState }) => {
102
+ if (!findKitStance(tickKitEffectState.effects, characterId)) return;
103
+ addKitStatus(tickKitEffectState, characterId, {
104
+ id: ENDSEER_STATUS_ID,
105
+ secondsRemaining: endseerSeconds
106
+ });
107
+ },
108
+ secondsRemaining: burstSeconds,
109
+ tickIntervalSeconds: judicationIntervalSeconds
110
+ });
111
+ };
112
+ const pactswornPathclearer = readStance("pactswornPathclearer", {
113
+ normalAttacks: [
114
+ { hits: [pactswornStrikeHit] },
115
+ { hits: [pactswornStrikeHit] },
116
+ { hits: [pactswornStrikeHit] },
117
+ { hits: [pactswornStrikeHit, pactswornStrikeHit] },
118
+ { hits: [pactswornStrikeHit] }
119
+ ],
120
+ skill: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => {
121
+ const { characterId } = combatant;
122
+ const stance = findKitStance(kitEffectState.effects, characterId);
123
+ if (!stance) return;
124
+ const extensions = findKitStatus(kitEffectState.effects, characterId, BURST_EXTENSIONS_STATUS_ID)?.stacks ?? 0;
125
+ if (extensions < BURST_EXTENSIONS_MAX) {
126
+ stance.secondsRemaining += extensionSeconds;
127
+ const judication = findJudicationField(kitEffectState.effects, characterId);
128
+ if (judication) judication.secondsRemaining += extensionSeconds;
129
+ addKitStatus(kitEffectState, characterId, {
130
+ id: BURST_EXTENSIONS_STATUS_ID,
131
+ secondsRemaining: stance.secondsRemaining,
132
+ stacks: extensions + 1
133
+ });
134
+ }
135
+ if (!checkHasKitStatus(kitEffectState.effects, characterId, ENDSEER_STATUS_ID)) return;
136
+ addKitStatus(kitEffectState, characterId, {
137
+ id: JUDICATION_DAMAGE_STATUS_ID,
138
+ secondsRemaining: JUDICATION_DAMAGE_SECONDS
139
+ });
140
+ if (combatant.constellationCount >= CONSTELLATION_6) addDayOfTheJackal(kitEffectState, characterId, Math.min(C6_STACKS_MAX, (findKitStatus(kitEffectState.effects, characterId, C6_STATUS_ID)?.stacks ?? 0) + C6_STACKS_PER_TRIGGER));
141
+ castKitSummon(kitEffectState, body, combatant, mortuaryRiteDuststalkerBolts, { attackTag: "ElementalSkill" });
142
+ } }
143
+ });
144
+ const mortuaryRiteHit = takeOne(pactswornPathclearer.elementalSkill.hits);
145
+ return {
146
+ burst: { onStart: ({ activeCombatant: combatant, body, kitEffectState }) => {
147
+ const { ascension, characterId, constellationCount } = combatant;
148
+ enterKitStance(kitEffectState, combatant, pactswornPathclearer, burstSeconds, { isEndedOnSwap: true });
149
+ if (constellationCount >= CONSTELLATION_1) addKitStatus(kitEffectState, characterId, {
150
+ id: WOLF_SWIFTNESS_NORMAL_ATTACK_SPEED_STATUS_ID,
151
+ secondsRemaining: WOLF_SWIFTNESS_NORMAL_ATTACK_SPEED_SECONDS
152
+ });
153
+ buffKitMember(kitEffectState, characterId, {
154
+ amount: burstElementalMastery,
155
+ attribute: "FIGHT_PROP_ELEMENT_MASTERY",
156
+ secondsRemaining: burstSeconds,
157
+ source: BURST_BUFF_SOURCE
158
+ });
159
+ addKitStatus(kitEffectState, characterId, {
160
+ id: BURST_EXTENSIONS_STATUS_ID,
161
+ secondsRemaining: burstSeconds,
162
+ stacks: 0
163
+ });
164
+ if (constellationCount >= CONSTELLATION_4) addKitStatus(kitEffectState, characterId, {
165
+ id: C4_STATUS_ID,
166
+ secondsRemaining: burstSeconds,
167
+ stacks: 0
168
+ });
169
+ if (constellationCount >= CONSTELLATION_6) addDayOfTheJackal(kitEffectState, characterId, C6_STACKS_PER_TRIGGER);
170
+ if (ascension >= ASCENSION_1) castJudication(kitEffectState, body, characterId);
171
+ } },
172
+ getNormalAttackSpeedBonus: ({ activeCombatant, kitEffectState }) => checkHasKitStatus(kitEffectState.effects, activeCombatant.characterId, WOLF_SWIFTNESS_NORMAL_ATTACK_SPEED_STATUS_ID) ? WOLF_SWIFTNESS_NORMAL_ATTACK_SPEED_BONUS : 0,
173
+ getSkillCooldownMultiplier: ({ activeCombatant: combatant, kitEffectState }) => findKitStance(kitEffectState.effects, combatant.characterId) ? mortuaryRiteCooldownMultiplier : 1,
174
+ getStrikeDamageBonus: ({ combatant, hit }, _enemy, _party, effects) => hit === mortuaryRiteHit && checkHasKitStatus(effects, combatant.characterId, JUDICATION_DAMAGE_STATUS_ID) ? JUDICATION_DAMAGE_BONUS : 0,
175
+ normalAttacks: [
176
+ { hits: [invokerStrikeHit] },
177
+ { hits: [invokerStrikeHit] },
178
+ { hits: [invokerStrikeHit, invokerStrikeHit] },
179
+ { hits: [invokerStrikeHit] }
180
+ ],
181
+ onKitEvent: (event, { characterIdCombatantMap, kitEffectState, party }, combatant) => {
182
+ const { characterId } = combatant;
183
+ if (event.kind === "CharacterSwapped") {
184
+ if (event.previousCharacterId !== characterId) return;
185
+ const buff = kitEffectState.effects.find((effect) => effect.kind === "buff" && effect.characterId === characterId && effect.source === BURST_BUFF_SOURCE);
186
+ if (buff?.kind === "buff") buff.secondsRemaining = 0;
187
+ const judication = findJudicationField(kitEffectState.effects, characterId);
188
+ if (judication) judication.secondsRemaining = 0;
189
+ return;
190
+ }
191
+ if (event.kind !== "ReactionTriggered") return;
192
+ const counter = findKitStatus(kitEffectState.effects, characterId, C4_STATUS_ID);
193
+ if (combatant.constellationCount < CONSTELLATION_4 || event.striker.characterId !== characterId || !counter || (counter.stacks ?? 0) >= C4_STACKS_MAX || !findKitStance(kitEffectState.effects, characterId) || !event.reactions.some((reaction) => checkIsC4Reaction(reaction))) return;
194
+ counter.stacks = (counter.stacks ?? 0) + 1;
195
+ for (const memberId of getDeployedCharacterIds(party)) {
196
+ if (memberId === characterId) continue;
197
+ const member = characterIdCombatantMap.get(memberId);
198
+ if (member) gainPartyMemberEnergy(party, member, C4_ENERGY);
199
+ }
200
+ }
201
+ };
202
+ };
203
+ export { createCynoKitBehaviour };
@@ -0,0 +1,20 @@
1
+ import "./GameDataset-oS0Tc9KV.js";
2
+ import { castKitShield, getKitMaxHealth, scheduleKitTask } from "./index.js";
3
+ // src/services/kit/characters/dahliaKit.ts
4
+ const CONSTELLATION_4 = 4;
5
+ const FAVONIAN_FAVOR_EXTENSION_SECONDS = 3;
6
+ const createDahliaKitBehaviour = ({ readParameter, readSeconds }) => {
7
+ const shieldSeconds = readSeconds("radiantPsalterShield");
8
+ const burstShieldFlat = readParameter("radiantPsalterShieldFlatHealth");
9
+ const burstShieldShare = readParameter("radiantPsalterShieldMaxHealthShare");
10
+ const favonianFavorSeconds = readParameter("favonianFavorSeconds");
11
+ return { burst: { onStart: ({ activeCombatant: combatant, kitEffectState }) => scheduleKitTask(kitEffectState, combatant.characterId, shieldSeconds, (tick) => {
12
+ const maxHealth = getKitMaxHealth(combatant, tick.kitEffectState.effects, tick.party, tick.characterIdCombatantMap);
13
+ castKitShield(tick, combatant.characterId, {
14
+ element: "Water",
15
+ health: burstShieldShare * maxHealth + burstShieldFlat,
16
+ secondsRemaining: favonianFavorSeconds + (combatant.constellationCount >= CONSTELLATION_4 ? FAVONIAN_FAVOR_EXTENSION_SECONDS : 0)
17
+ });
18
+ }) } };
19
+ };
20
+ export { createDahliaKitBehaviour };
@@ -0,0 +1,23 @@
1
+ import { t as getPartyMember } from "./getPartyMember-BAb9wUiz.js";
2
+ import "./KitEventKind-DinObjiq.js";
3
+ import { changeKitMemberHealth, getKitMaxHealth, scheduleKitTask, startKitCooldown } from "./index.js";
4
+ // src/services/kit/characters/dehyaKit.ts
5
+ const ASCENSION_4 = 4;
6
+ const STALWART_AND_TRUE_THRESHOLD = .4;
7
+ const STALWART_AND_TRUE_COOLDOWN_SECONDS = 20;
8
+ const STALWART_AND_TRUE_COOLDOWN_STATUS_ID = "dehya-stalwart-and-true-cooldown";
9
+ const STALWART_AND_TRUE_INITIAL_HEAL_SHARE = .2;
10
+ const STALWART_AND_TRUE_TICK_HEAL_SHARE = .06;
11
+ const STALWART_AND_TRUE_TICK_INTERVAL_SECONDS = 2;
12
+ const STALWART_AND_TRUE_TICK_COUNT = 5;
13
+ const createDehyaKitBehaviour = () => ({ onKitEvent: (event, context, combatant) => {
14
+ if (event.kind !== "HealthChanged" || event.characterId !== combatant.characterId || event.healthShare >= 0 || combatant.ascension < ASCENSION_4) return;
15
+ const { characterId } = combatant;
16
+ const { characterIdCombatantMap, kitEffectState, party } = context;
17
+ if (getPartyMember(party, characterId).healthShare >= STALWART_AND_TRUE_THRESHOLD) return;
18
+ if (!startKitCooldown(kitEffectState, characterId, STALWART_AND_TRUE_COOLDOWN_STATUS_ID, STALWART_AND_TRUE_COOLDOWN_SECONDS)) return;
19
+ const maxHealth = getKitMaxHealth(combatant, kitEffectState.effects, party, characterIdCombatantMap);
20
+ changeKitMemberHealth(context, combatant, characterId, STALWART_AND_TRUE_INITIAL_HEAL_SHARE * maxHealth);
21
+ for (const tick of Array.from({ length: STALWART_AND_TRUE_TICK_COUNT }, (_value, index) => index + 1)) scheduleKitTask(kitEffectState, characterId, tick * STALWART_AND_TRUE_TICK_INTERVAL_SECONDS, (tickContext) => changeKitMemberHealth(tickContext, combatant, characterId, STALWART_AND_TRUE_TICK_HEAL_SHARE * getKitMaxHealth(combatant, tickContext.kitEffectState.effects, tickContext.party, tickContext.characterIdCombatantMap)));
22
+ } });
23
+ export { createDehyaKitBehaviour };