hella-types 0.0.12 → 0.0.14

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/src/index.ts CHANGED
@@ -1,1043 +1,1116 @@
1
- import * as z from 'zod';
2
-
3
- const BlackboardZod = z.strictObject({
4
- key: z.string(),
5
- value: z.number().nullable(),
6
- valueStr: z.string().nullable().optional(),
7
- });
8
- const DefinedStringZod = z.strictObject({
9
- m_defined: z.boolean(),
10
- m_value: z.string().nullable(),
11
- });
12
- const DefinedStringArrayZod = z.strictObject({
13
- m_defined: z.boolean(),
14
- m_value: z.array(z.string()).nullable(),
15
- });
16
- const DefinedNumberZod = z.strictObject({
17
- m_defined: z.boolean(),
18
- m_value: z.number().nullable(),
19
- });
20
- const DefinedBooleanZod = z.strictObject({
21
- m_defined: z.boolean(),
22
- m_value: z.boolean().nullable(),
23
- });
24
-
25
- const AttributesKeyFrameZod = z.strictObject({
26
- level: z.number(),
27
- data: z.strictObject({
28
- maxHp: z.number(),
29
- atk: z.number(),
30
- def: z.number(),
31
- magicResistance: z.number(),
32
- cost: z.number(),
33
- blockCnt: z.number(),
34
- moveSpeed: z.number(),
35
- attackSpeed: z.number(),
36
- baseAttackTime: z.number(),
37
- respawnTime: z.number(),
38
- hpRecoveryPerSec: z.number(),
39
- spRecoveryPerSec: z.number(),
40
- maxDeployCount: z.number(),
41
- maxDeckStackCnt: z.number(),
42
- tauntLevel: z.number(),
43
- massLevel: z.number(),
44
- baseForceLevel: z.number(),
45
- stunImmune: z.boolean(),
46
- silenceImmune: z.boolean(),
47
- sleepImmune: z.boolean(),
48
- frozenImmune: z.boolean(),
49
- levitateImmune: z.boolean(),
50
- }),
51
- });
52
- const EnemyAttributesZod = z.strictObject({
53
- maxHp: DefinedNumberZod,
54
- atk: DefinedNumberZod,
55
- def: DefinedNumberZod,
56
- magicResistance: DefinedNumberZod,
57
- cost: DefinedNumberZod,
58
- blockCnt: DefinedNumberZod,
59
- moveSpeed: DefinedNumberZod,
60
- attackSpeed: DefinedNumberZod,
61
- baseAttackTime: DefinedNumberZod,
62
- respawnTime: DefinedNumberZod,
63
- hpRecoveryPerSec: DefinedNumberZod,
64
- spRecoveryPerSec: DefinedNumberZod,
65
- maxDeployCount: DefinedNumberZod,
66
- massLevel: DefinedNumberZod,
67
- baseForceLevel: DefinedNumberZod,
68
- tauntLevel: DefinedNumberZod.optional(),
69
- epDamageResistance: DefinedNumberZod.optional(),
70
- epResistance: DefinedNumberZod.optional(),
71
- stunImmune: DefinedBooleanZod,
72
- silenceImmune: DefinedBooleanZod,
73
- sleepImmune: DefinedBooleanZod.optional(),
74
- frozenImmune: DefinedBooleanZod.optional(),
75
- levitateImmune: DefinedBooleanZod.optional(),
76
- });
77
- const EnemySkillsZod = z.strictObject({
78
- prefabKey: z.string(),
79
- priority: z.number(),
80
- cooldown: z.number(),
81
- initCooldown: z.number(),
82
- spCost: z.number(),
83
- blackboard: z.array(BlackboardZod).nullable(),
84
- });
85
- const EnemySpDataZod = z.strictObject({
86
- spType: z.string(),
87
- maxSp: z.number(),
88
- initSp: z.number(),
89
- increment: z.number(),
90
- });
91
- const EnemyDataZod = z.strictObject({
92
- name: DefinedStringZod,
93
- description: DefinedStringZod,
94
- prefabKey: DefinedStringZod,
95
- attributes: EnemyAttributesZod,
96
- applyWay: DefinedStringZod.optional(),
97
- motion: DefinedStringZod.optional(),
98
- enemyTags: DefinedStringArrayZod.optional(),
99
- lifePointReduce: DefinedNumberZod,
100
- levelType: z.union([DefinedStringZod, DefinedNumberZod]).optional(),
101
- rangeRadius: DefinedNumberZod,
102
- numOfExtraDrops: DefinedNumberZod.optional(),
103
- viewRadius: DefinedNumberZod.optional(),
104
- notCountInTotal: DefinedBooleanZod.optional(),
105
- talentBlackboard: z.array(BlackboardZod).nullable(),
106
- skills: z.array(EnemySkillsZod).nullable(),
107
- spData: EnemySpDataZod.nullable(),
108
- });
109
- const LevelUpCostZod = z.strictObject({
110
- id: z.string(),
111
- count: z.number(),
112
- type: z.string(),
113
- });
114
- const ManufactFormulaZod = z.strictObject({
115
- formulaId: z.string(),
116
- itemId: z.string(),
117
- count: z.number(),
118
- weight: z.number(),
119
- costPoint: z.number(),
120
- formulaType: z.string(),
121
- buffType: z.string(),
122
- costs: z.array(LevelUpCostZod),
123
- requireRooms: z.array(
124
- z.strictObject({
125
- roomId: z.string(),
126
- roomLevel: z.number(),
127
- roomCount: z.number(),
128
- })
129
- ),
130
- requireStages: z.array(
131
- z.strictObject({
132
- stageId: z.string(),
133
- rank: z.number(),
134
- })
135
- ),
136
- });
137
- const WorkshopFormulaZod = z.strictObject({
138
- sortId: z.number(),
139
- formulaId: z.string(),
140
- rarity: z.number(),
141
- itemId: z.string(),
142
- count: z.number(),
143
- goldCost: z.number(),
144
- apCost: z.number(),
145
- formulaType: z.string(),
146
- buffType: z.string(),
147
- extraOutcomeRate: z.number(),
148
- extraOutcomeGroup: z.array(
149
- z.strictObject({
150
- weight: z.number(),
151
- itemId: z.string(),
152
- itemCount: z.number(),
153
- })
154
- ),
155
- costs: z.array(LevelUpCostZod),
156
- requireRooms: z.array(
157
- z.strictObject({
158
- roomId: z.string(),
159
- roomLevel: z.number(),
160
- roomCount: z.number(),
161
- })
162
- ),
163
- requireStages: z.array(
164
- z.strictObject({
165
- stageId: z.string(),
166
- rank: z.number(),
167
- })
168
- ),
169
- });
170
- const OperatorUnlockCondZod = z.strictObject({
171
- phase: z.union([z.string(), z.number()]),
172
- level: z.number(),
173
- });
174
- const LevelUpCostCondZod = z.strictObject({
175
- unlockCond: OperatorUnlockCondZod,
176
- lvlUpTime: z.number(),
177
- levelUpCost: z.array(LevelUpCostZod).nullable(),
178
- });
179
- const StageCardZod = z.strictObject({
180
- initialCnt: z.number().optional(),
181
- hidden: z.boolean(),
182
- alias: z.string().nullable(),
183
- uniEquipIds: z.array(
184
- z.strictObject({
185
- key: z.string(),
186
- level: z.number(),
187
- })
188
- ).nullable().optional(),
189
- inst: z.strictObject({
190
- characterKey: z.string(),
191
- level: z.number(),
192
- phase: z.union([z.string(), z.number()]).optional(),
193
- favorPoint: z.number(),
194
- potentialRank: z.number(),
195
- }),
196
- skillIndex: z.number(),
197
- mainSkillLvl: z.number(),
198
- skinId: z.string().nullable(),
199
- tmplId: z.string().nullable().optional(),
200
- overrideSkillBlackboard: z.array(BlackboardZod).nullable().optional(),
201
- });
202
- const StageInstZod = StageCardZod.extend({
203
- position: z.strictObject({
204
- row: z.number(),
205
- col: z.number(),
206
- }),
207
- direction: z.union([z.string(), z.number()]).optional(),
208
- });
209
- const StageDefinesZod = z.strictObject({
210
- characterInsts: z.array(StageInstZod),
211
- tokenInsts: z.array(StageInstZod),
212
- characterCards: z.array(StageCardZod),
213
- tokenCards: z.array(StageCardZod),
214
- });
215
- const StageEffectZod = z.strictObject({
216
- key: z.string(),
217
- offset: z.strictObject({
218
- x: z.number(),
219
- y: z.number(),
220
- z: z.number(),
221
- }),
222
- direction: z.union([z.string(), z.number()]),
223
- });
224
- const StageActionZod = z.strictObject({
225
- actionType: z.union([z.string(), z.number()]),
226
- managedByScheduler: z.boolean(),
227
- key: z.string(),
228
- count: z.number(),
229
- preDelay: z.number(),
230
- interval: z.number(),
231
- routeIndex: z.number(),
232
- blockFragment: z.boolean(),
233
- autoPreviewRoute: z.boolean(),
234
- autoDisplayEnemyInfo: z.boolean().optional(),
235
- isUnharmfulAndAlwaysCountAsKilled: z.boolean(),
236
- hiddenGroup: z.string().nullable(),
237
- randomSpawnGroupKey: z.string().nullable().optional(),
238
- randomSpawnGroupPackKey: z.string().nullable().optional(),
239
- randomType: z.union([z.string(), z.number()]).optional(),
240
- weight: z.number().optional(),
241
- dontBlockWave: z.boolean().optional(),
242
- isValid: z.boolean().optional(),
243
- extraMeta: z.null().optional(),
244
- });
245
- const StageRouteZod = z.strictObject({
246
- motionMode: z.union([z.string(), z.number()]),
247
- startPosition: z.strictObject({
248
- row: z.number(),
249
- col: z.number(),
250
- }),
251
- endPosition: z.strictObject({
252
- row: z.number(),
253
- col: z.number(),
254
- }),
255
- spawnRandomRange: z.strictObject({
256
- x: z.number(),
257
- y: z.number(),
258
- }),
259
- spawnOffset: z.strictObject({
260
- x: z.number(),
261
- y: z.number(),
262
- }),
263
- checkpoints: z.array(
264
- z.strictObject({
265
- type: z.union([z.string(), z.number()]),
266
- time: z.number(),
267
- position: z.strictObject({
268
- row: z.number(),
269
- col: z.number(),
270
- }),
271
- reachOffset: z.strictObject({
272
- x: z.number(),
273
- y: z.number(),
274
- }),
275
- randomizeReachOffset: z.boolean(),
276
- reachDistance: z.number(),
277
- }),
278
- ).nullable(),
279
- allowDiagonalMove: z.boolean(),
280
- visitEveryTileCenter: z.boolean(),
281
- visitEveryNodeCenter: z.boolean(),
282
- visitEveryCheckPoint: z.boolean().optional(),
283
- });
284
- const StageDataZod = z.strictObject({
285
- options: z.strictObject({
286
- characterLimit: z.number(),
287
- maxLifePoint: z.number(),
288
- initialCost: z.number(),
289
- maxCost: z.number(),
290
- costIncreaseTime: z.number(),
291
- moveMultiplier: z.number(),
292
- steeringEnabled: z.boolean(),
293
- isTrainingLevel: z.boolean(),
294
- isHardTrainingLevel: z.boolean().optional(),
295
- isPredefinedCardsSelectable: z.boolean().optional(),
296
- maxPlayTime: z.number().optional(),
297
- functionDisableMask: z.union([z.string(), z.number()]),
298
- configBlackBoard: z.array(BlackboardZod).nullable().optional(),
299
- }),
300
- levelId: z.string().nullable(),
301
- mapId: z.string().nullable(),
302
- bgmEvent: z.string().nullable(),
303
- environmentSe: z.string().nullable(),
304
- mapData: z.strictObject({
305
- map: z.array(z.array(z.number())),
306
- tiles: z.array(
307
- z.strictObject({
308
- tileKey: z.string(),
309
- heightType: z.union([z.string(), z.number()]),
310
- buildableType: z.union([z.string(), z.number()]),
311
- passableMask: z.union([z.string(), z.number()]),
312
- playerSideMask: z.union([z.string(), z.number()]).optional(),
313
- blackboard: z.array(BlackboardZod).nullable(),
314
- effects: z.array(StageEffectZod).nullable(),
315
- })
316
- ),
317
- blockEdges: z.array(z.strictObject({
318
- pos: z.strictObject({
319
- row: z.number(),
320
- col: z.number(),
321
- }),
322
- direction: z.union([z.string(), z.number()]),
323
- blockMask: z.union([z.string(), z.number()]),
324
- })).nullable(),
325
- tags: z.array(z.string()).nullable(),
326
- effects: z.array(StageEffectZod).nullable(),
327
- layerRects: z.null().optional(),
328
- width: z.number().optional(),
329
- height: z.number().optional(),
330
- }),
331
- tilesDisallowToLocate: z.tuple([]),
332
- runes: z.array(
333
- z.strictObject({
334
- difficultyMask: z.union([z.string(), z.number()]),
335
- key: z.string(),
336
- professionMask: z.union([z.string(), z.number()]).optional(),
337
- buildableMask: z.union([z.string(), z.number()]),
338
- blackboard: z.array(BlackboardZod),
339
- })
340
- ).nullable(),
341
- globalBuffs: z.array(
342
- z.strictObject({
343
- prefabKey: z.string(),
344
- blackboard: z.array(BlackboardZod).nullable(),
345
- overrideCameraEffect: z.null(),
346
- passProfessionMaskFlag: z.boolean().optional(),
347
- professionMask: z.union([z.string(), z.number()]).optional(),
348
- useExtraData: z.boolean().optional(),
349
- })
350
- ).nullable(),
351
- routes: z.array(StageRouteZod.nullable()),
352
- extraRoutes: z.array(StageRouteZod.nullable()).optional(),
353
- enemies: z.array(
354
- z.strictObject({
355
- name: z.null(),
356
- description: z.null(),
357
- key: z.string(),
358
- attributes: z.strictObject({
359
- maxHp: z.number(),
360
- atk: z.number(),
361
- def: z.number(),
362
- magicResistance: z.number(),
363
- cost: z.number(),
364
- blockCnt: z.number(),
365
- moveSpeed: z.number(),
366
- attackSpeed: z.number(),
367
- baseAttackTime: z.number(),
368
- respawnTime: z.number(),
369
- hpRecoveryPerSec: z.number(),
370
- spRecoveryPerSec: z.number(),
371
- maxDeployCount: z.number(),
372
- maxDeckStackCnt: z.number(),
373
- tauntLevel: z.number(),
374
- massLevel: z.number(),
375
- baseForceLevel: z.number(),
376
- stunImmune: z.boolean(),
377
- silenceImmune: z.boolean(),
378
- sleepImmune: z.boolean(),
379
- frozenImmune: z.boolean(),
380
- levitateImmune: z.boolean(),
381
- }),
382
- alias: z.null(),
383
- lifePointReduce: z.number(),
384
- rangeRadius: z.number(),
385
- numOfExtraDrops: z.number(),
386
- viewRadius: z.number(),
387
- levelType: z.number(),
388
- talentBlackboard: z.array(BlackboardZod).nullable(),
389
- skills: z.array(EnemySkillsZod).nullable(),
390
- spData: EnemySpDataZod.nullable(),
391
- })
392
- ),
393
- enemyDbRefs: z.array(
394
- z.strictObject({
395
- useDb: z.boolean(),
396
- id: z.string(),
397
- level: z.number(),
398
- overwrittenData: EnemyDataZod.nullable(),
399
- })
400
- ),
401
- waves: z.array(
402
- z.strictObject({
403
- preDelay: z.number(),
404
- postDelay: z.number(),
405
- maxTimeWaitingForNextWave: z.number(),
406
- fragments: z.array(z.strictObject({
407
- preDelay: z.number(),
408
- actions: z.array(StageActionZod),
409
- name: z.string().nullable().optional(),
410
- })),
411
- advancedWaveTag: z.string().nullable().optional(),
412
- name: z.string().nullable().optional(),
413
- })
414
- ),
415
- branches: z.record(
416
- z.string(),
417
- z.strictObject({
418
- phases: z.array(z.strictObject({
419
- preDelay: z.number(),
420
- actions: z.array(StageActionZod),
421
- m_randomActionGroups: z.null().optional(),
422
- m_actionWithRandomSpawn: z.null().optional(),
423
- m_validActionPackKeys: z.null().optional(),
424
- })),
425
- }),
426
- ).nullable(),
427
- predefines: StageDefinesZod.nullable(),
428
- hardPredefines: StageDefinesZod.nullable().optional(),
429
- excludeCharIdList: z.null(),
430
- randomSeed: z.number(),
431
- operaConfig: z.string().nullable().optional(),
432
- runtimeData: z.null().optional(),
433
- });
434
- const RogueRelicZod = z.strictObject({
435
- id: z.string(),
436
- name: z.string(),
437
- description: z.string().nullable(),
438
- usage: z.string(),
439
- obtainApproach: z.string(),
440
- iconId: z.string(),
441
- type: z.string(),
442
- subType: z.string(),
443
- rarity: z.string(),
444
- value: z.number(),
445
- sortId: z.number(),
446
- canSacrifice: z.boolean(),
447
- unlockCondDesc: z.string().nullable(),
448
- });
449
- const RogueStageZod = z.strictObject({
450
- excel: z.strictObject({
451
- id: z.string(),
452
- linkedStageId: z.string(),
453
- levelId: z.string(),
454
- code: z.string(),
455
- name: z.string(),
456
- loadingPicId: z.string(),
457
- description: z.string(),
458
- eliteDesc: z.string().nullable(),
459
- isBoss: z.number(),
460
- isElite: z.number(),
461
- difficulty: z.string(),
462
- capsulePool: z.string().nullable(),
463
- capsuleProb: z.number(),
464
- vutresProb: z.array(z.number()),
465
- boxProb: z.array(z.number()),
466
- specialNodeId: z.string().nullable(),
467
- }),
468
- levels: StageDataZod,
469
- });
470
- const RogueVariationZod = z.strictObject({
471
- id: z.string(),
472
- type: z.string(),
473
- outerName: z.string(),
474
- innerName: z.string(),
475
- functionDesc: z.string(),
476
- desc: z.string(),
477
- iconId: z.string().nullable(),
478
- sound: z.string().nullable(),
479
- });
480
- const SandboxStageZod = z.strictObject({
481
- excel: z.strictObject({
482
- stageId: z.string(),
483
- levelId: z.string(),
484
- code: z.string(),
485
- name: z.string(),
486
- loadingPicId: z.string(),
487
- description: z.string(),
488
- actionCost: z.number(),
489
- powerCost: z.number(),
490
- }),
491
- levels: StageDataZod,
492
- });
493
-
494
- export const BaseZod = z.strictObject({
495
- buffId: z.string(),
496
- buffName: z.string(),
497
- buffIcon: z.string(),
498
- skillIcon: z.string(),
499
- sortId: z.number(),
500
- buffColor: z.string(),
501
- textColor: z.string(),
502
- buffCategory: z.string(),
503
- roomType: z.string(),
504
- description: z.string(),
505
- });
506
- export const CCStageZod = z.strictObject({
507
- const: z.strictObject({
508
- levelId: z.string(),
509
- location: z.string(),
510
- name: z.string(),
511
- description: z.string(),
512
- }),
513
- levels: StageDataZod,
514
- });
515
- export const DefinitionZod = z.strictObject({
516
- termId: z.string(),
517
- termName: z.string(),
518
- description: z.string(),
519
- });
520
- export const EnemyZod = z.strictObject({
521
- excel: z.strictObject({
522
- enemyId: z.string(),
523
- enemyIndex: z.string(),
524
- enemyTags: z.array(z.string()).nullable(),
525
- sortId: z.number(),
526
- name: z.string(),
527
- enemyLevel: z.enum(['NORMAL', 'ELITE', 'BOSS']),
528
- description: z.string(),
529
- attackType: z.null(),
530
- ability: z.null(),
531
- isInvalidKilled: z.boolean(),
532
- overrideKillCntInfos: z.record(z.string(), z.number()),
533
- hideInHandbook: z.boolean(),
534
- hideInStage: z.boolean(),
535
- abilityList: z.array(
536
- z.strictObject({
537
- text: z.string(),
538
- textFormat: z.enum(['NORMAL', 'SILENCE', 'TITLE'])
539
- })
540
- ),
541
- linkEnemies: z.array(z.string()),
542
- damageType: z.array(z.enum(['PHYSIC', 'MAGIC', 'NO_DAMAGE', 'HEAL'])),
543
- invisibleDetail: z.boolean(),
544
- }),
545
- levels: z.strictObject({
546
- Key: z.string(),
547
- Value: z.array(
548
- z.strictObject({
549
- level: z.number(),
550
- enemyData: EnemyDataZod,
551
- })
552
- ),
553
- }),
554
- });
555
- export const GameEventZod = z.strictObject({
556
- id: z.string(),
557
- type: z.string(),
558
- displayType: z.string(),
559
- name: z.string(),
560
- startTime: z.number(),
561
- endTime: z.number(),
562
- rewardEndTime: z.number(),
563
- displayOnHome: z.boolean(),
564
- hasStage: z.boolean(),
565
- templateShopId: z.string().nullable(),
566
- medalGroupId: z.string().nullable(),
567
- ungroupedMedalIds: z.array(z.string()).nullable(),
568
- isReplicate: z.boolean(),
569
- needFixedSync: z.boolean(),
570
- });
571
- export const GridRangeZod = z.strictObject({
572
- id: z.string(),
573
- direction: z.number(),
574
- grids: z.array(
575
- z.strictObject({
576
- row: z.number(),
577
- col: z.number(),
578
- })
579
- ),
580
- });
581
- export const ItemZod = z.strictObject({
582
- data: z.strictObject({
583
- itemId: z.string(),
584
- name: z.string(),
585
- description: z.string().nullable(),
586
- rarity: z.string(),
587
- iconId: z.string(),
588
- overrideBkg: z.null(),
589
- stackIconId: z.string().nullable(),
590
- sortId: z.number(),
591
- usage: z.string().nullable(),
592
- obtainApproach: z.string().nullable(),
593
- hideInItemGet: z.boolean(),
594
- classifyType: z.string(),
595
- itemType: z.string(),
596
- stageDropList: z.array(
597
- z.strictObject({
598
- stageId: z.string(),
599
- occPer: z.string(),
600
- })
601
- ),
602
- buildingProductList: z.array(
603
- z.strictObject({
604
- roomType: z.string(),
605
- formulaId: z.string(),
606
- })
607
- ),
608
- voucherRelateList: z.array(
609
- z.strictObject({
610
- voucherId: z.string(),
611
- voucherItemType: z.string(),
612
- })
613
- ).nullable(),
614
- }),
615
- formula: z.union([ManufactFormulaZod, WorkshopFormulaZod]).nullable(),
616
- });
617
- export const ModuleZod = z.strictObject({
618
- info: z.strictObject({
619
- uniEquipId: z.string(),
620
- uniEquipName: z.string(),
621
- uniEquipIcon: z.string(),
622
- uniEquipDesc: z.string(),
623
- typeIcon: z.string(),
624
- typeName1: z.string(),
625
- typeName2: z.string().nullable(),
626
- equipShiningColor: z.string(),
627
- showEvolvePhase: z.string(),
628
- unlockEvolvePhase: z.string(),
629
- charId: z.string(),
630
- tmplId: z.string().nullable(),
631
- showLevel: z.number(),
632
- unlockLevel: z.number(),
633
- unlockFavorPoint: z.number(),
634
- missionList: z.array(z.string()),
635
- itemCost: z.record(z.string(), z.array(LevelUpCostZod)).nullable(),
636
- type: z.string(),
637
- uniEquipGetTime: z.number(),
638
- charEquipOrder: z.number(),
639
- }),
640
- data: z.strictObject({
641
- phases: z.array(
642
- z.strictObject({
643
- equipLevel: z.number(),
644
- parts: z.array(
645
- z.strictObject({
646
- resKey: z.string().nullable(),
647
- target: z.string(),
648
- isToken: z.boolean(),
649
- addOrOverrideTalentDataBundle: z.strictObject({
650
- candidates: z.array(
651
- z.strictObject({
652
- displayRangeId: z.boolean(),
653
- upgradeDescription: z.string(),
654
- talentIndex: z.number(),
655
- unlockCondition: OperatorUnlockCondZod,
656
- requiredPotentialRank: z.number(),
657
- prefabKey: z.string(),
658
- name: z.string().nullable(),
659
- description: z.string().nullable(),
660
- rangeId: z.string().nullable(),
661
- blackboard: z.array(BlackboardZod),
662
- tokenKey: z.string().optional(),
663
- }),
664
- ).nullable(),
665
- }),
666
- overrideTraitDataBundle: z.strictObject({
667
- candidates: z.array(
668
- z.strictObject({
669
- additionalDescription: z.string().nullable(),
670
- unlockCondition: OperatorUnlockCondZod,
671
- requiredPotentialRank: z.number(),
672
- blackboard: z.array(BlackboardZod),
673
- overrideDescripton: z.string().nullable(),
674
- prefabKey: z.string().nullable(),
675
- rangeId: z.string().nullable(),
676
- })
677
- ).nullable(),
678
- }),
679
- })
680
- ),
681
- attributeBlackboard: z.array(BlackboardZod),
682
- tokenAttributeBlackboard: z.record(z.string(), z.array(BlackboardZod)),
683
- })
684
- ),
685
- }).nullable(),
686
- });
687
- export const ParadoxZod = z.strictObject({
688
- excel: z.strictObject({
689
- charId: z.string(),
690
- stageId: z.string(),
691
- levelId: z.string(),
692
- zoneId: z.string(),
693
- code: z.string(),
694
- name: z.string(),
695
- loadingPicId: z.string(),
696
- description: z.string(),
697
- unlockParam: z.array(
698
- z.strictObject({
699
- unlockType: z.string(),
700
- unlockParam1: z.string(),
701
- unlockParam2: z.string(),
702
- unlockParam3: z.null(),
703
- })
704
- ),
705
- rewardItem: z.array(
706
- z.strictObject({
707
- id: z.string(),
708
- count: z.number(),
709
- type: z.string(),
710
- })
711
- ),
712
- stageNameForShow: z.string(),
713
- zoneNameForShow: z.string(),
714
- picId: z.string(),
715
- stageGetTime: z.number(),
716
- }),
717
- levels: StageDataZod,
718
- });
719
- export const RogueThemeZod = z.strictObject({
720
- name: z.string(),
721
- stageDict: z.record(z.string(), RogueStageZod),
722
- toughStageDict: z.record(z.string(), RogueStageZod),
723
- relicDict: z.record(z.string(), RogueRelicZod),
724
- variationDict: z.record(z.string(), RogueVariationZod),
725
- });
726
- export const SandboxActZod = z.strictObject({
727
- stageDict: z.record(z.string(), SandboxStageZod),
728
- });
729
- export const SkillZod = z.strictObject({
730
- skillId: z.string(),
731
- iconId: z.string().nullable(),
732
- hidden: z.boolean(),
733
- levels: z.array(
734
- z.strictObject({
735
- name: z.string(),
736
- rangeId: z.string().nullable(),
737
- description: z.string().nullable(),
738
- skillType: z.string(),
739
- durationType: z.string(),
740
- spData: z.strictObject({
741
- spType: z.union([z.string(), z.number()]),
742
- levelUpCost: z.null(),
743
- maxChargeTime: z.number(),
744
- spCost: z.number(),
745
- initSp: z.number(),
746
- increment: z.number(),
747
- }),
748
- prefabId: z.string().nullable(),
749
- duration: z.number(),
750
- blackboard: z.array(BlackboardZod),
751
- })
752
- ),
753
- });
754
- export const SkinZod = z.strictObject({
755
- skinId: z.string(),
756
- charId: z.string(),
757
- tokenSkinMap: z.array(
758
- z.strictObject({
759
- tokenId: z.string(),
760
- tokenSkinId: z.string(),
761
- })
762
- ).nullable(),
763
- illustId: z.string().nullable(),
764
- dynIllustId: z.string().nullable(),
765
- avatarId: z.string(),
766
- portraitId: z.string().nullable(),
767
- dynPortraitId: z.string().nullable(),
768
- dynEntranceId: z.string().nullable(),
769
- buildingId: z.string().nullable(),
770
- battleSkin: z.strictObject({
771
- overwritePrefab: z.boolean(),
772
- skinOrPrefabId: z.string().nullable(),
773
- }),
774
- isBuySkin: z.boolean(),
775
- tmplId: z.string().nullable(),
776
- voiceId: z.string().nullable(),
777
- voiceType: z.string(),
778
- displaySkin: z.strictObject({
779
- skinName: z.string().nullable(),
780
- colorList: z.array(z.string()).nullable(),
781
- titleList: z.array(z.string()).nullable(),
782
- modelName: z.string().nullable(),
783
- drawerList: z.array(z.string()).nullable(),
784
- designerList: z.array(z.string()).nullable(),
785
- skinGroupId: z.string().nullable(),
786
- skinGroupName: z.string().nullable(),
787
- skinGroupSortIndex: z.number(),
788
- content: z.string().nullable(),
789
- dialog: z.string().nullable(),
790
- usage: z.string().nullable(),
791
- description: z.string().nullable(),
792
- obtainApproach: z.string().nullable(),
793
- sortId: z.number(),
794
- displayTagId: z.string().nullable(),
795
- getTime: z.number(),
796
- onYear: z.number(),
797
- onPeriod: z.number(),
798
- }),
799
- });
800
- export const StageZod = z.strictObject({
801
- excel: z.strictObject({
802
- stageType: z.string(),
803
- difficulty: z.string(),
804
- performanceStageFlag: z.string(),
805
- diffGroup: z.string(),
806
- unlockCondition: z.strictObject({
807
- stageId: z.string(),
808
- completeState: z.string(),
809
- }).nullable(),
810
- stageId: z.string(),
811
- levelId: z.string(),
812
- zoneId: z.string(),
813
- code: z.string(),
814
- name: z.string(),
815
- description: z.string(),
816
- hardStagedId: z.string().nullable(),
817
- dangerLevel: z.string().nullable(),
818
- dangerPoint: z.number(),
819
- loadingPicId: z.string(),
820
- canPractice: z.boolean(),
821
- canBattleReplay: z.boolean(),
822
- apCost: z.number(),
823
- apFailReturn: z.number(),
824
- etItemId: z.string().nullable(),
825
- etCost: z.number(),
826
- etFailReturn: z.number(),
827
- etButtonStyle: z.string().nullable(),
828
- apProtectTimes: z.number(),
829
- diamondOnceDrop: z.number(),
830
- practiceTicketCost: z.number(),
831
- dailyStageDifficulty: z.number(),
832
- expGain: z.number(),
833
- goldGain: z.number(),
834
- loseExpGain: z.number(),
835
- loseGoldGain: z.number(),
836
- passFavor: z.number(),
837
- completeFavor: z.number(),
838
- slProgress: z.number(),
839
- displayMainItem: z.string().nullable(),
840
- hilightMark: z.boolean(),
841
- bossMark: z.boolean(),
842
- isPredefined: z.boolean(),
843
- isHardPredefined: z.boolean(),
844
- isSkillSelectablePredefined: z.boolean(),
845
- isStoryOnly: z.boolean(),
846
- appearanceStyle: z.string(),
847
- stageDropInfo: z.strictObject({
848
- firstPassRewards: z.null(),
849
- firstCompleteRewards: z.null(),
850
- passRewards: z.null(),
851
- completeRewards: z.null(),
852
- displayRewards: z.array(
853
- z.strictObject({
854
- type: z.string(),
855
- id: z.string(),
856
- dropType: z.string(),
857
- })
858
- ),
859
- displayDetailRewards: z.array(
860
- z.strictObject({
861
- occPercent: z.string(),
862
- type: z.string(),
863
- id: z.string(),
864
- dropType: z.string(),
865
- })
866
- ),
867
- }),
868
- canUseCharm: z.boolean(),
869
- canUseTech: z.boolean(),
870
- canUseTrapTool: z.boolean(),
871
- canUseBattlePerformance: z.boolean(),
872
- startButtonOverrideId: z.string().nullable(),
873
- isStagePatch: z.boolean(),
874
- mainStageId: z.string().nullable(),
875
- extraCondition: z.strictObject({
876
- index: z.number(),
877
- template: z.string(),
878
- unlockParam: z.array(z.string()),
879
- }).nullable(),
880
- extraInfo: z.array(
881
- z.strictObject({
882
- stageId: z.string(),
883
- rewards: z.array(
884
- z.strictObject({
885
- id: z.string(),
886
- count: z.number(),
887
- type: z.string(),
888
- })
889
- ),
890
- progressInfo: z.strictObject({
891
- progressType: z.string(),
892
- descList: z.record(z.string(), z.string()),
893
- })
894
- })
895
- ).nullable(),
896
- }),
897
- levels: StageDataZod,
898
- });
899
- export const OperatorZod = z.strictObject({
900
- id: z.string(),
901
- recruit: z.number(),
902
- archetype: z.string(),
903
- range: GridRangeZod,
904
- skills: z.array(SkillZod),
905
- modules: z.array(ModuleZod),
906
- skins: z.array(SkinZod),
907
- bases: z.array(
908
- z.strictObject({
909
- condition: z.strictObject({
910
- buffId: z.string(),
911
- cond: OperatorUnlockCondZod,
912
- }),
913
- skill: BaseZod,
914
- })
915
- ),
916
- paradox: ParadoxZod.nullable(),
917
- data: z.strictObject({
918
- name: z.string(),
919
- description: z.string(),
920
- canUseGeneralPotentialItem: z.boolean(),
921
- canUseActivityPotentialItem: z.boolean(),
922
- potentialItemId: z.string().nullable(),
923
- activityPotentialItemId: z.string().nullable(),
924
- classicPotentialItemId: z.string().nullable(),
925
- nationId: z.string().nullable(),
926
- groupId: z.string().nullable(),
927
- teamId: z.string().nullable(),
928
- displayNumber: z.string().nullable(),
929
- appellation: z.string(),
930
- position: z.string(),
931
- tagList: z.array(z.string()),
932
- itemUsage: z.string().nullable(),
933
- itemDesc: z.string().nullable(),
934
- itemObtainApproach: z.string().nullable(),
935
- isNotObtainable: z.boolean(),
936
- isSpChar: z.boolean(),
937
- maxPotentialLevel: z.number(),
938
- rarity: z.string(),
939
- profession: z.string(),
940
- subProfessionId: z.string(),
941
- trait: z.strictObject({
942
- candidates: z.array(
943
- z.strictObject({
944
- unlockCondition: OperatorUnlockCondZod,
945
- requiredPotentialRank: z.number(),
946
- blackboard: z.array(BlackboardZod),
947
- overrideDescripton: z.string().nullable(),
948
- prefabKey: z.string().nullable(),
949
- rangeId: z.string().nullable(),
950
- })
951
- ),
952
- }).nullable(),
953
- phases: z.array(
954
- z.strictObject({
955
- characterPrefabKey: z.string(),
956
- rangeId: z.string(),
957
- maxLevel: z.number(),
958
- attributesKeyFrames: z.array(AttributesKeyFrameZod),
959
- evolveCost: z.union([z.array(LevelUpCostZod), z.null()]),
960
- })
961
- ),
962
- skills: z.array(
963
- z.strictObject({
964
- skillId: z.string(),
965
- overridePrefabKey: z.string().nullable(),
966
- overrideTokenKey: z.string().nullable(),
967
- levelUpCostCond: z.array(LevelUpCostCondZod),
968
- unlockCond: OperatorUnlockCondZod,
969
- })
970
- ),
971
- displayTokenDict: z.record(z.boolean()).nullable(),
972
- talents: z.array(
973
- z.strictObject({
974
- candidates: z.array(
975
- z.strictObject({
976
- unlockCondition: OperatorUnlockCondZod,
977
- requiredPotentialRank: z.number(),
978
- prefabKey: z.string(),
979
- name: z.string(),
980
- description: z.string(),
981
- rangeId: z.string().nullable(),
982
- blackboard: z.array(BlackboardZod),
983
- tokenKey: z.string().nullable(),
984
- })
985
- ),
986
- })
987
- ).nullable(),
988
- potentialRanks: z.array(
989
- z.strictObject({
990
- type: z.string(),
991
- description: z.string(),
992
- buff: z.strictObject({
993
- attributes: z.strictObject({
994
- abnormalFlags: z.null(),
995
- abnormalImmunes: z.null(),
996
- abnormalAntis: z.null(),
997
- abnormalCombos: z.null(),
998
- abnormalComboImmunes: z.null(),
999
- attributeModifiers: z.array(
1000
- z.strictObject({
1001
- attributeType: z.string(),
1002
- formulaItem: z.string(),
1003
- value: z.number(),
1004
- loadFromBlackboard: z.boolean(),
1005
- fetchBaseValueFromSourceEntity: z.boolean(),
1006
- })
1007
- ),
1008
- }),
1009
- }).nullable(),
1010
- equivalentCost: z.null(),
1011
- })
1012
- ),
1013
- favorKeyFrames: z.array(AttributesKeyFrameZod),
1014
- allSkillLvlup: z.array(
1015
- z.strictObject({
1016
- unlockCond: OperatorUnlockCondZod,
1017
- lvlUpCost: z.array(LevelUpCostZod).nullable(),
1018
- })
1019
- ),
1020
- }),
1021
- });
1022
- export type Blackboard = z.infer<typeof BlackboardZod>;
1023
- export type Base = z.infer<typeof BaseZod>;
1024
- export type CCStage = z.infer<typeof CCStageZod>;
1025
- export type Definition = z.infer<typeof DefinitionZod>;
1026
- export type Enemy = z.infer<typeof EnemyZod>;
1027
- export type GameEvent = z.infer<typeof GameEventZod>;
1028
- export type GridRange = z.infer<typeof GridRangeZod>;
1029
- export type Item = z.infer<typeof ItemZod>;
1030
- export type LevelUpCost = z.infer<typeof LevelUpCostZod>;
1031
- export type Module = z.infer<typeof ModuleZod>;
1032
- export type Operator = z.infer<typeof OperatorZod>;
1033
- export type Paradox = z.infer<typeof ParadoxZod>;
1034
- export type RogueTheme = z.infer<typeof RogueThemeZod>;
1035
- export type RogueRelic = z.infer<typeof RogueRelicZod>;
1036
- export type RogueStage = z.infer<typeof RogueStageZod>;
1037
- export type RogueVariation = z.infer<typeof RogueVariationZod>;
1038
- export type SandboxAct = z.infer<typeof SandboxActZod>;
1039
- export type SandboxStage = z.infer<typeof SandboxStageZod>;
1040
- export type Skill = z.infer<typeof SkillZod>;
1041
- export type Skin = z.infer<typeof SkinZod>;
1042
- export type Stage = z.infer<typeof StageZod>;
1
+ import * as z from 'zod';
2
+
3
+ const BlackboardZod = z.strictObject({
4
+ key: z.string(),
5
+ value: z.number().nullable(),
6
+ valueStr: z.string().nullable().optional(),
7
+ });
8
+ const DefinedStringZod = z.strictObject({
9
+ m_defined: z.boolean(),
10
+ m_value: z.string().nullable(),
11
+ });
12
+ const DefinedStringArrayZod = z.strictObject({
13
+ m_defined: z.boolean(),
14
+ m_value: z.array(z.string()).nullable(),
15
+ });
16
+ const DefinedNumberZod = z.strictObject({
17
+ m_defined: z.boolean(),
18
+ m_value: z.number().nullable(),
19
+ });
20
+ const DefinedBooleanZod = z.strictObject({
21
+ m_defined: z.boolean(),
22
+ m_value: z.boolean().nullable(),
23
+ });
24
+
25
+ const AttributesKeyFrameZod = z.strictObject({
26
+ level: z.number(),
27
+ data: z.strictObject({
28
+ maxHp: z.number(),
29
+ atk: z.number(),
30
+ def: z.number(),
31
+ magicResistance: z.number(),
32
+ cost: z.number(),
33
+ blockCnt: z.number(),
34
+ moveSpeed: z.number(),
35
+ attackSpeed: z.number(),
36
+ baseAttackTime: z.number(),
37
+ respawnTime: z.number(),
38
+ hpRecoveryPerSec: z.number(),
39
+ spRecoveryPerSec: z.number(),
40
+ maxDeployCount: z.number(),
41
+ maxDeckStackCnt: z.number(),
42
+ tauntLevel: z.number(),
43
+ massLevel: z.number(),
44
+ baseForceLevel: z.number(),
45
+ stunImmune: z.boolean(),
46
+ silenceImmune: z.boolean(),
47
+ sleepImmune: z.boolean(),
48
+ frozenImmune: z.boolean(),
49
+ levitateImmune: z.boolean(),
50
+ disarmedCombatImmune: z.boolean(),
51
+ }),
52
+ });
53
+ const EnemyAttributesZod = z.strictObject({
54
+ maxHp: DefinedNumberZod,
55
+ atk: DefinedNumberZod,
56
+ def: DefinedNumberZod,
57
+ magicResistance: DefinedNumberZod,
58
+ cost: DefinedNumberZod,
59
+ blockCnt: DefinedNumberZod,
60
+ moveSpeed: DefinedNumberZod,
61
+ attackSpeed: DefinedNumberZod,
62
+ baseAttackTime: DefinedNumberZod,
63
+ respawnTime: DefinedNumberZod,
64
+ hpRecoveryPerSec: DefinedNumberZod,
65
+ spRecoveryPerSec: DefinedNumberZod,
66
+ maxDeployCount: DefinedNumberZod,
67
+ massLevel: DefinedNumberZod,
68
+ baseForceLevel: DefinedNumberZod,
69
+ tauntLevel: DefinedNumberZod.optional(),
70
+ epDamageResistance: DefinedNumberZod.optional(),
71
+ epResistance: DefinedNumberZod.optional(),
72
+ damageHitratePhysical: DefinedNumberZod.optional(),
73
+ damageHitrateMagical: DefinedNumberZod.optional(),
74
+ stunImmune: DefinedBooleanZod,
75
+ silenceImmune: DefinedBooleanZod,
76
+ sleepImmune: DefinedBooleanZod.optional(),
77
+ frozenImmune: DefinedBooleanZod.optional(),
78
+ levitateImmune: DefinedBooleanZod.optional(),
79
+ disarmedCombatImmune: DefinedBooleanZod.optional(),
80
+ });
81
+ const EnemySkillsZod = z.strictObject({
82
+ prefabKey: z.string(),
83
+ priority: z.number(),
84
+ cooldown: z.number(),
85
+ initCooldown: z.number(),
86
+ spCost: z.number(),
87
+ blackboard: z.array(BlackboardZod).nullable(),
88
+ });
89
+ const EnemySpDataZod = z.strictObject({
90
+ spType: z.string(),
91
+ maxSp: z.number(),
92
+ initSp: z.number(),
93
+ increment: z.number(),
94
+ });
95
+ const EnemyDataZod = z.strictObject({
96
+ name: DefinedStringZod,
97
+ description: DefinedStringZod,
98
+ prefabKey: DefinedStringZod,
99
+ attributes: EnemyAttributesZod,
100
+ applyWay: DefinedStringZod.optional(),
101
+ motion: DefinedStringZod.optional(),
102
+ enemyTags: DefinedStringArrayZod.optional(),
103
+ lifePointReduce: DefinedNumberZod,
104
+ levelType: z.union([DefinedStringZod, DefinedNumberZod]).optional(),
105
+ rangeRadius: DefinedNumberZod,
106
+ numOfExtraDrops: DefinedNumberZod.optional(),
107
+ viewRadius: DefinedNumberZod.optional(),
108
+ notCountInTotal: DefinedBooleanZod.optional(),
109
+ talentBlackboard: z.array(BlackboardZod).nullable(),
110
+ skills: z.array(EnemySkillsZod).nullable(),
111
+ spData: EnemySpDataZod.nullable(),
112
+ });
113
+ const LevelUpCostZod = z.strictObject({
114
+ id: z.string(),
115
+ count: z.number(),
116
+ type: z.string(),
117
+ });
118
+ const ManufactFormulaZod = z.strictObject({
119
+ formulaId: z.string(),
120
+ itemId: z.string(),
121
+ count: z.number(),
122
+ weight: z.number(),
123
+ costPoint: z.number(),
124
+ formulaType: z.string(),
125
+ buffType: z.string(),
126
+ costs: z.array(LevelUpCostZod),
127
+ requireRooms: z.array(
128
+ z.strictObject({
129
+ roomId: z.string(),
130
+ roomLevel: z.number(),
131
+ roomCount: z.number(),
132
+ })
133
+ ),
134
+ requireStages: z.array(
135
+ z.strictObject({
136
+ stageId: z.string(),
137
+ rank: z.number(),
138
+ })
139
+ ),
140
+ });
141
+ const WorkshopFormulaZod = z.strictObject({
142
+ sortId: z.number(),
143
+ formulaId: z.string(),
144
+ rarity: z.number(),
145
+ itemId: z.string(),
146
+ count: z.number(),
147
+ goldCost: z.number(),
148
+ apCost: z.number(),
149
+ formulaType: z.string(),
150
+ buffType: z.string(),
151
+ extraOutcomeRate: z.number(),
152
+ extraOutcomeGroup: z.array(
153
+ z.strictObject({
154
+ weight: z.number(),
155
+ itemId: z.string(),
156
+ itemCount: z.number(),
157
+ })
158
+ ),
159
+ costs: z.array(LevelUpCostZod),
160
+ requireRooms: z.array(
161
+ z.strictObject({
162
+ roomId: z.string(),
163
+ roomLevel: z.number(),
164
+ roomCount: z.number(),
165
+ })
166
+ ),
167
+ requireStages: z.array(
168
+ z.strictObject({
169
+ stageId: z.string(),
170
+ rank: z.number(),
171
+ })
172
+ ),
173
+ });
174
+ const OperatorUnlockCondZod = z.strictObject({
175
+ phase: z.union([z.string(), z.number()]),
176
+ level: z.number(),
177
+ });
178
+ const LevelUpCostCondZod = z.strictObject({
179
+ unlockCond: OperatorUnlockCondZod,
180
+ lvlUpTime: z.number(),
181
+ levelUpCost: z.array(LevelUpCostZod).nullable(),
182
+ });
183
+ const StageCardZod = z.strictObject({
184
+ initialCnt: z.number().optional(),
185
+ hidden: z.boolean(),
186
+ alias: z.string().nullable(),
187
+ uniEquipIds: z.array(
188
+ z.strictObject({
189
+ key: z.string(),
190
+ level: z.number(),
191
+ })
192
+ ).nullable().optional(),
193
+ inst: z.strictObject({
194
+ characterKey: z.string(),
195
+ level: z.number(),
196
+ phase: z.union([z.string(), z.number()]).optional(),
197
+ favorPoint: z.number(),
198
+ potentialRank: z.number(),
199
+ }),
200
+ skillIndex: z.number(),
201
+ mainSkillLvl: z.number(),
202
+ skinId: z.string().nullable(),
203
+ tmplId: z.string().nullable().optional(),
204
+ overrideSkillBlackboard: z.array(BlackboardZod).nullable().optional(),
205
+ });
206
+ const StageInstZod = StageCardZod.extend({
207
+ position: z.strictObject({
208
+ row: z.number(),
209
+ col: z.number(),
210
+ }),
211
+ direction: z.union([z.string(), z.number()]).optional(),
212
+ });
213
+ const StageDefinesZod = z.strictObject({
214
+ characterInsts: z.array(StageInstZod),
215
+ tokenInsts: z.array(StageInstZod),
216
+ characterCards: z.array(StageCardZod),
217
+ tokenCards: z.array(StageCardZod),
218
+ });
219
+ const StageEffectZod = z.strictObject({
220
+ key: z.string(),
221
+ offset: z.strictObject({
222
+ x: z.number(),
223
+ y: z.number(),
224
+ z: z.number(),
225
+ }),
226
+ direction: z.union([z.string(), z.number()]),
227
+ });
228
+ const StageActionZod = z.strictObject({
229
+ actionType: z.union([z.string(), z.number()]),
230
+ managedByScheduler: z.boolean(),
231
+ key: z.string(),
232
+ count: z.number(),
233
+ preDelay: z.number(),
234
+ interval: z.number(),
235
+ routeIndex: z.number(),
236
+ blockFragment: z.boolean(),
237
+ autoPreviewRoute: z.boolean(),
238
+ autoDisplayEnemyInfo: z.boolean().optional(),
239
+ isUnharmfulAndAlwaysCountAsKilled: z.boolean(),
240
+ hiddenGroup: z.string().nullable(),
241
+ randomSpawnGroupKey: z.string().nullable().optional(),
242
+ randomSpawnGroupPackKey: z.string().nullable().optional(),
243
+ randomType: z.union([z.string(), z.number()]).optional(),
244
+ refreshType: z.string().optional(),
245
+ weight: z.number().optional(),
246
+ dontBlockWave: z.boolean().optional(),
247
+ isValid: z.boolean().optional(),
248
+ extraMeta: z.null().optional(),
249
+ actionId: z.null().optional(),
250
+ });
251
+ const StageRouteZod = z.strictObject({
252
+ motionMode: z.union([z.string(), z.number()]),
253
+ startPosition: z.strictObject({
254
+ row: z.number(),
255
+ col: z.number(),
256
+ }),
257
+ endPosition: z.strictObject({
258
+ row: z.number(),
259
+ col: z.number(),
260
+ }),
261
+ spawnRandomRange: z.strictObject({
262
+ x: z.number(),
263
+ y: z.number(),
264
+ }),
265
+ spawnOffset: z.strictObject({
266
+ x: z.number(),
267
+ y: z.number(),
268
+ }),
269
+ checkpoints: z.array(
270
+ z.strictObject({
271
+ type: z.union([z.string(), z.number()]),
272
+ time: z.number(),
273
+ position: z.strictObject({
274
+ row: z.number(),
275
+ col: z.number(),
276
+ }),
277
+ reachOffset: z.strictObject({
278
+ x: z.number(),
279
+ y: z.number(),
280
+ }),
281
+ randomizeReachOffset: z.boolean(),
282
+ reachDistance: z.number(),
283
+ }),
284
+ ).nullable(),
285
+ allowDiagonalMove: z.boolean(),
286
+ visitEveryTileCenter: z.boolean(),
287
+ visitEveryNodeCenter: z.boolean(),
288
+ visitEveryCheckPoint: z.boolean().optional(),
289
+ });
290
+ const StageDataZod = z.strictObject({
291
+ options: z.strictObject({
292
+ characterLimit: z.number(),
293
+ maxLifePoint: z.number(),
294
+ initialCost: z.number(),
295
+ maxCost: z.number(),
296
+ costIncreaseTime: z.number(),
297
+ moveMultiplier: z.number(),
298
+ steeringEnabled: z.boolean(),
299
+ isTrainingLevel: z.boolean(),
300
+ isHardTrainingLevel: z.boolean().optional(),
301
+ isPredefinedCardsSelectable: z.boolean().optional(),
302
+ maxPlayTime: z.number().optional(),
303
+ functionDisableMask: z.union([z.string(), z.number()]),
304
+ configBlackBoard: z.array(BlackboardZod).nullable().optional(),
305
+ }),
306
+ levelId: z.string().nullable(),
307
+ mapId: z.string().nullable(),
308
+ bgmEvent: z.string().nullable(),
309
+ environmentSe: z.string().nullable(),
310
+ mapData: z.strictObject({
311
+ map: z.array(z.array(z.number())),
312
+ tiles: z.array(
313
+ z.strictObject({
314
+ tileKey: z.string(),
315
+ heightType: z.union([z.string(), z.number()]),
316
+ buildableType: z.union([z.string(), z.number()]),
317
+ passableMask: z.union([z.string(), z.number()]),
318
+ playerSideMask: z.union([z.string(), z.number()]).optional(),
319
+ blackboard: z.array(BlackboardZod).nullable(),
320
+ effects: z.array(StageEffectZod).nullable(),
321
+ })
322
+ ),
323
+ blockEdges: z.array(z.strictObject({
324
+ pos: z.strictObject({
325
+ row: z.number(),
326
+ col: z.number(),
327
+ }),
328
+ direction: z.union([z.string(), z.number()]),
329
+ blockMask: z.union([z.string(), z.number()]),
330
+ })).nullable(),
331
+ tags: z.array(z.string()).nullable(),
332
+ effects: z.array(StageEffectZod).nullable(),
333
+ layerRects: z.null().optional(),
334
+ width: z.number().optional(),
335
+ height: z.number().optional(),
336
+ }),
337
+ tilesDisallowToLocate: z.tuple([]),
338
+ runes: z.array(
339
+ z.strictObject({
340
+ difficultyMask: z.union([z.string(), z.number()]),
341
+ key: z.string(),
342
+ professionMask: z.union([z.string(), z.number()]).optional(),
343
+ buildableMask: z.union([z.string(), z.number()]),
344
+ blackboard: z.array(BlackboardZod),
345
+ })
346
+ ).nullable(),
347
+ globalBuffs: z.array(
348
+ z.strictObject({
349
+ prefabKey: z.string(),
350
+ blackboard: z.array(BlackboardZod).nullable(),
351
+ overrideCameraEffect: z.null(),
352
+ passProfessionMaskFlag: z.boolean().optional(),
353
+ professionMask: z.union([z.string(), z.number()]).optional(),
354
+ useExtraData: z.boolean().optional(),
355
+ })
356
+ ).nullable(),
357
+ routes: z.array(StageRouteZod.nullable()),
358
+ extraRoutes: z.array(StageRouteZod.nullable()).optional(),
359
+ enemies: z.array(
360
+ z.strictObject({
361
+ name: z.null(),
362
+ description: z.null(),
363
+ key: z.string(),
364
+ attributes: z.strictObject({
365
+ maxHp: z.number(),
366
+ atk: z.number(),
367
+ def: z.number(),
368
+ magicResistance: z.number(),
369
+ cost: z.number(),
370
+ blockCnt: z.number(),
371
+ moveSpeed: z.number(),
372
+ attackSpeed: z.number(),
373
+ baseAttackTime: z.number(),
374
+ respawnTime: z.number(),
375
+ hpRecoveryPerSec: z.number(),
376
+ spRecoveryPerSec: z.number(),
377
+ maxDeployCount: z.number(),
378
+ maxDeckStackCnt: z.number(),
379
+ tauntLevel: z.number(),
380
+ massLevel: z.number(),
381
+ baseForceLevel: z.number(),
382
+ stunImmune: z.boolean(),
383
+ silenceImmune: z.boolean(),
384
+ sleepImmune: z.boolean(),
385
+ frozenImmune: z.boolean(),
386
+ levitateImmune: z.boolean(),
387
+ disarmedCombatImmune: z.boolean(),
388
+ }),
389
+ alias: z.null(),
390
+ lifePointReduce: z.number(),
391
+ rangeRadius: z.number(),
392
+ numOfExtraDrops: z.number(),
393
+ viewRadius: z.number(),
394
+ levelType: z.number(),
395
+ talentBlackboard: z.array(BlackboardZod).nullable(),
396
+ skills: z.array(EnemySkillsZod).nullable(),
397
+ spData: EnemySpDataZod.nullable(),
398
+ })
399
+ ),
400
+ enemyDbRefs: z.array(
401
+ z.strictObject({
402
+ useDb: z.boolean(),
403
+ id: z.string(),
404
+ level: z.number(),
405
+ overwrittenData: EnemyDataZod.nullable(),
406
+ })
407
+ ),
408
+ waves: z.array(
409
+ z.strictObject({
410
+ preDelay: z.number(),
411
+ postDelay: z.number(),
412
+ maxTimeWaitingForNextWave: z.number(),
413
+ fragments: z.array(z.strictObject({
414
+ preDelay: z.number(),
415
+ actions: z.array(StageActionZod),
416
+ name: z.string().nullable().optional(),
417
+ })),
418
+ advancedWaveTag: z.string().nullable().optional(),
419
+ name: z.string().nullable().optional(),
420
+ })
421
+ ),
422
+ branches: z.record(
423
+ z.string(),
424
+ z.strictObject({
425
+ phases: z.array(z.strictObject({
426
+ preDelay: z.number(),
427
+ actions: z.array(StageActionZod),
428
+ m_randomActionGroups: z.null().optional(),
429
+ m_actionWithRandomSpawn: z.null().optional(),
430
+ m_validActionPackKeys: z.null().optional(),
431
+ })),
432
+ }),
433
+ ).nullable(),
434
+ predefines: StageDefinesZod.nullable(),
435
+ hardPredefines: StageDefinesZod.nullable().optional(),
436
+ excludeCharIdList: z.null(),
437
+ randomSeed: z.number(),
438
+ operaConfig: z.string().nullable().optional(),
439
+ runtimeData: z.null().optional(),
440
+ });
441
+ const RogueRelicZod = z.strictObject({
442
+ id: z.string(),
443
+ name: z.string(),
444
+ description: z.string().nullable(),
445
+ usage: z.string(),
446
+ obtainApproach: z.string(),
447
+ iconId: z.string(),
448
+ type: z.string(),
449
+ subType: z.string(),
450
+ rarity: z.string(),
451
+ value: z.number(),
452
+ sortId: z.number(),
453
+ canSacrifice: z.boolean(),
454
+ unlockCondDesc: z.string().nullable(),
455
+ });
456
+ const RogueStageZod = z.strictObject({
457
+ excel: z.strictObject({
458
+ id: z.string(),
459
+ linkedStageId: z.string(),
460
+ levelId: z.string(),
461
+ code: z.string(),
462
+ name: z.string(),
463
+ loadingPicId: z.string(),
464
+ description: z.string(),
465
+ eliteDesc: z.string().nullable(),
466
+ isBoss: z.number(),
467
+ isElite: z.number(),
468
+ difficulty: z.string(),
469
+ capsulePool: z.string().nullable(),
470
+ capsuleProb: z.number(),
471
+ vutresProb: z.array(z.number()),
472
+ boxProb: z.array(z.number()),
473
+ specialNodeId: z.string().nullable(),
474
+ }),
475
+ levels: StageDataZod,
476
+ });
477
+ const RogueVariationZod = z.strictObject({
478
+ id: z.string(),
479
+ type: z.string(),
480
+ outerName: z.string(),
481
+ innerName: z.string(),
482
+ functionDesc: z.string(),
483
+ desc: z.string(),
484
+ iconId: z.string().nullable(),
485
+ sound: z.string().nullable(),
486
+ });
487
+ const SandboxItemZod = z.strictObject({
488
+ craft: z.strictObject({
489
+ itemId: z.string(),
490
+ type: z.string(),
491
+ buildingUnlockDesc: z.string(),
492
+ materialItems: z.record(z.string(), z.number()),
493
+ upgradeItems: z.record(z.string(), z.number()).nullable(),
494
+ withdrawRatio: z.number(),
495
+ repairCost: z.number(),
496
+ isHidden: z.boolean(),
497
+ craftGroupId: z.string(),
498
+ recipeLevel: z.number(),
499
+ }).nullable(),
500
+ drink: z.strictObject({
501
+ id: z.string(),
502
+ type: z.string(),
503
+ count: z.number(),
504
+ }).nullable(),
505
+ foodMat: z.strictObject({
506
+ id: z.string(),
507
+ type: z.string(),
508
+ attribute: z.string(),
509
+ buffDesc: z.string().nullable(),
510
+ sortId: z.number(),
511
+ }).nullable(),
512
+ food: z.strictObject({
513
+ id: z.string(),
514
+ attributes: z.array(z.string()),
515
+ recipes: z.array(z.strictObject({
516
+ foodId: z.string(),
517
+ mats: z.array(z.string()),
518
+ })).nullable(),
519
+ duration: z.number(),
520
+ itemName: z.string(),
521
+ generalName: z.string().nullable(),
522
+ enhancedName: z.string().nullable(),
523
+ itemUsage: z.string(),
524
+ enhancedUsage: z.string().nullable(),
525
+ sortId: z.number(),
526
+ }).nullable(),
527
+ data: z.strictObject({
528
+ itemId: z.string(),
529
+ itemType: z.string(),
530
+ itemName: z.string(),
531
+ itemUsage: z.string(),
532
+ itemDesc: z.string(),
533
+ itemRarity: z.number(),
534
+ sortId: z.number(),
535
+ obtainApproach: z.string(),
536
+ })
537
+ });
538
+ const SandboxStageZod = z.strictObject({
539
+ excel: z.strictObject({
540
+ stageId: z.string(),
541
+ levelId: z.string(),
542
+ code: z.string(),
543
+ name: z.string(),
544
+ description: z.string(),
545
+ actionCost: z.number(),
546
+ actionCostEnemyRush: z.number(),
547
+ }),
548
+ levels: StageDataZod,
549
+ });
550
+ const SandboxWeatherZod = z.strictObject({
551
+ weatherId: z.string(),
552
+ name: z.string(),
553
+ weatherLevel: z.number(),
554
+ weatherType: z.string(),
555
+ weatherTypeName: z.string(),
556
+ weatherIconId: z.string(),
557
+ functionDesc: z.string(),
558
+ description: z.string(),
559
+ buffId: z.string().nullable(),
560
+ });
561
+
562
+ export const BaseZod = z.strictObject({
563
+ buffId: z.string(),
564
+ buffName: z.string(),
565
+ buffIcon: z.string(),
566
+ skillIcon: z.string(),
567
+ sortId: z.number(),
568
+ buffColor: z.string(),
569
+ textColor: z.string(),
570
+ buffCategory: z.string(),
571
+ roomType: z.string(),
572
+ description: z.string(),
573
+ });
574
+ export const CCStageZod = z.strictObject({
575
+ const: z.strictObject({
576
+ levelId: z.string(),
577
+ location: z.string(),
578
+ name: z.string(),
579
+ description: z.string(),
580
+ }),
581
+ levels: StageDataZod,
582
+ });
583
+ export const DefinitionZod = z.strictObject({
584
+ termId: z.string(),
585
+ termName: z.string(),
586
+ description: z.string(),
587
+ });
588
+ export const EnemyZod = z.strictObject({
589
+ excel: z.strictObject({
590
+ enemyId: z.string(),
591
+ enemyIndex: z.string(),
592
+ enemyTags: z.array(z.string()).nullable(),
593
+ sortId: z.number(),
594
+ name: z.string(),
595
+ enemyLevel: z.enum(['NORMAL', 'ELITE', 'BOSS']),
596
+ description: z.string(),
597
+ attackType: z.null(),
598
+ ability: z.null(),
599
+ isInvalidKilled: z.boolean(),
600
+ overrideKillCntInfos: z.record(z.string(), z.number()),
601
+ hideInHandbook: z.boolean(),
602
+ hideInStage: z.boolean(),
603
+ abilityList: z.array(
604
+ z.strictObject({
605
+ text: z.string(),
606
+ textFormat: z.enum(['NORMAL', 'SILENCE', 'TITLE'])
607
+ })
608
+ ),
609
+ linkEnemies: z.array(z.string()),
610
+ damageType: z.array(z.enum(['PHYSIC', 'MAGIC', 'NO_DAMAGE', 'HEAL'])),
611
+ invisibleDetail: z.boolean(),
612
+ }),
613
+ levels: z.strictObject({
614
+ Key: z.string(),
615
+ Value: z.array(
616
+ z.strictObject({
617
+ level: z.number(),
618
+ enemyData: EnemyDataZod,
619
+ })
620
+ ),
621
+ }),
622
+ });
623
+ export const GameEventZod = z.strictObject({
624
+ id: z.string(),
625
+ type: z.string(),
626
+ displayType: z.string(),
627
+ name: z.string(),
628
+ startTime: z.number(),
629
+ endTime: z.number(),
630
+ rewardEndTime: z.number(),
631
+ displayOnHome: z.boolean(),
632
+ hasStage: z.boolean(),
633
+ templateShopId: z.string().nullable(),
634
+ medalGroupId: z.string().nullable(),
635
+ ungroupedMedalIds: z.array(z.string()).nullable(),
636
+ isReplicate: z.boolean(),
637
+ needFixedSync: z.boolean(),
638
+ });
639
+ export const GridRangeZod = z.strictObject({
640
+ id: z.string(),
641
+ direction: z.number(),
642
+ grids: z.array(
643
+ z.strictObject({
644
+ row: z.number(),
645
+ col: z.number(),
646
+ })
647
+ ),
648
+ });
649
+ export const ItemZod = z.strictObject({
650
+ data: z.strictObject({
651
+ itemId: z.string(),
652
+ name: z.string(),
653
+ description: z.string().nullable(),
654
+ rarity: z.string(),
655
+ iconId: z.string(),
656
+ overrideBkg: z.null(),
657
+ stackIconId: z.string().nullable(),
658
+ sortId: z.number(),
659
+ usage: z.string().nullable(),
660
+ obtainApproach: z.string().nullable(),
661
+ hideInItemGet: z.boolean(),
662
+ classifyType: z.string(),
663
+ itemType: z.string(),
664
+ stageDropList: z.array(
665
+ z.strictObject({
666
+ stageId: z.string(),
667
+ occPer: z.string(),
668
+ })
669
+ ),
670
+ buildingProductList: z.array(
671
+ z.strictObject({
672
+ roomType: z.string(),
673
+ formulaId: z.string(),
674
+ })
675
+ ),
676
+ voucherRelateList: z.array(
677
+ z.strictObject({
678
+ voucherId: z.string(),
679
+ voucherItemType: z.string(),
680
+ })
681
+ ).nullable(),
682
+ }),
683
+ formula: z.union([ManufactFormulaZod, WorkshopFormulaZod]).nullable(),
684
+ });
685
+ export const ModuleZod = z.strictObject({
686
+ info: z.strictObject({
687
+ uniEquipId: z.string(),
688
+ uniEquipName: z.string(),
689
+ uniEquipIcon: z.string(),
690
+ uniEquipDesc: z.string(),
691
+ typeIcon: z.string(),
692
+ typeName1: z.string(),
693
+ typeName2: z.string().nullable(),
694
+ equipShiningColor: z.string(),
695
+ showEvolvePhase: z.string(),
696
+ unlockEvolvePhase: z.string(),
697
+ charId: z.string(),
698
+ tmplId: z.string().nullable(),
699
+ showLevel: z.number(),
700
+ unlockLevel: z.number(),
701
+ unlockFavorPoint: z.number(),
702
+ missionList: z.array(z.string()),
703
+ itemCost: z.record(z.string(), z.array(LevelUpCostZod)).nullable(),
704
+ type: z.string(),
705
+ uniEquipGetTime: z.number(),
706
+ charEquipOrder: z.number(),
707
+ }),
708
+ data: z.strictObject({
709
+ phases: z.array(
710
+ z.strictObject({
711
+ equipLevel: z.number(),
712
+ parts: z.array(
713
+ z.strictObject({
714
+ resKey: z.string().nullable(),
715
+ target: z.string(),
716
+ isToken: z.boolean(),
717
+ addOrOverrideTalentDataBundle: z.strictObject({
718
+ candidates: z.array(
719
+ z.strictObject({
720
+ displayRangeId: z.boolean(),
721
+ upgradeDescription: z.string(),
722
+ talentIndex: z.number(),
723
+ unlockCondition: OperatorUnlockCondZod,
724
+ requiredPotentialRank: z.number(),
725
+ prefabKey: z.string(),
726
+ name: z.string().nullable(),
727
+ description: z.string().nullable(),
728
+ rangeId: z.string().nullable(),
729
+ blackboard: z.array(BlackboardZod),
730
+ tokenKey: z.string().optional(),
731
+ }),
732
+ ).nullable(),
733
+ }),
734
+ overrideTraitDataBundle: z.strictObject({
735
+ candidates: z.array(
736
+ z.strictObject({
737
+ additionalDescription: z.string().nullable(),
738
+ unlockCondition: OperatorUnlockCondZod,
739
+ requiredPotentialRank: z.number(),
740
+ blackboard: z.array(BlackboardZod),
741
+ overrideDescripton: z.string().nullable(),
742
+ prefabKey: z.string().nullable(),
743
+ rangeId: z.string().nullable(),
744
+ })
745
+ ).nullable(),
746
+ }),
747
+ })
748
+ ),
749
+ attributeBlackboard: z.array(BlackboardZod),
750
+ tokenAttributeBlackboard: z.record(z.string(), z.array(BlackboardZod)),
751
+ })
752
+ ),
753
+ }).nullable(),
754
+ });
755
+ export const ParadoxZod = z.strictObject({
756
+ excel: z.strictObject({
757
+ charId: z.string(),
758
+ stageId: z.string(),
759
+ levelId: z.string(),
760
+ zoneId: z.string(),
761
+ code: z.string(),
762
+ name: z.string(),
763
+ loadingPicId: z.string(),
764
+ description: z.string(),
765
+ unlockParam: z.array(
766
+ z.strictObject({
767
+ unlockType: z.string(),
768
+ unlockParam1: z.string(),
769
+ unlockParam2: z.string(),
770
+ unlockParam3: z.null(),
771
+ })
772
+ ),
773
+ rewardItem: z.array(
774
+ z.strictObject({
775
+ id: z.string(),
776
+ count: z.number(),
777
+ type: z.string(),
778
+ })
779
+ ),
780
+ stageNameForShow: z.string(),
781
+ zoneNameForShow: z.string(),
782
+ picId: z.string(),
783
+ stageGetTime: z.number(),
784
+ }),
785
+ levels: StageDataZod,
786
+ });
787
+ export const RogueThemeZod = z.strictObject({
788
+ name: z.string(),
789
+ stageDict: z.record(z.string(), RogueStageZod),
790
+ toughStageDict: z.record(z.string(), RogueStageZod),
791
+ relicDict: z.record(z.string(), RogueRelicZod),
792
+ variationDict: z.record(z.string(), RogueVariationZod),
793
+ });
794
+ export const SandboxActZod = z.strictObject({
795
+ name: z.string(),
796
+ itemDict: z.record(z.string(), SandboxItemZod),
797
+ weatherDict: z.record(z.string(), SandboxWeatherZod),
798
+ stageDict: z.record(z.string(), SandboxStageZod),
799
+ });
800
+ export const SkillZod = z.strictObject({
801
+ skillId: z.string(),
802
+ iconId: z.string().nullable(),
803
+ hidden: z.boolean(),
804
+ levels: z.array(
805
+ z.strictObject({
806
+ name: z.string(),
807
+ rangeId: z.string().nullable(),
808
+ description: z.string().nullable(),
809
+ skillType: z.string(),
810
+ durationType: z.string(),
811
+ spData: z.strictObject({
812
+ spType: z.union([z.string(), z.number()]),
813
+ levelUpCost: z.null(),
814
+ maxChargeTime: z.number(),
815
+ spCost: z.number(),
816
+ initSp: z.number(),
817
+ increment: z.number(),
818
+ }),
819
+ prefabId: z.string().nullable(),
820
+ duration: z.number(),
821
+ blackboard: z.array(BlackboardZod),
822
+ })
823
+ ),
824
+ });
825
+ export const SkinZod = z.strictObject({
826
+ skinId: z.string(),
827
+ charId: z.string(),
828
+ tokenSkinMap: z.array(
829
+ z.strictObject({
830
+ tokenId: z.string(),
831
+ tokenSkinId: z.string(),
832
+ })
833
+ ).nullable(),
834
+ illustId: z.string().nullable(),
835
+ dynIllustId: z.string().nullable(),
836
+ avatarId: z.string(),
837
+ portraitId: z.string().nullable(),
838
+ dynPortraitId: z.string().nullable(),
839
+ dynEntranceId: z.string().nullable(),
840
+ buildingId: z.string().nullable(),
841
+ battleSkin: z.strictObject({
842
+ overwritePrefab: z.boolean(),
843
+ skinOrPrefabId: z.string().nullable(),
844
+ }),
845
+ isBuySkin: z.boolean(),
846
+ tmplId: z.string().nullable(),
847
+ voiceId: z.string().nullable(),
848
+ voiceType: z.string(),
849
+ displaySkin: z.strictObject({
850
+ skinName: z.string().nullable(),
851
+ colorList: z.array(z.string()).nullable(),
852
+ titleList: z.array(z.string()).nullable(),
853
+ modelName: z.string().nullable(),
854
+ drawerList: z.array(z.string()).nullable(),
855
+ designerList: z.array(z.string()).nullable(),
856
+ skinGroupId: z.string().nullable(),
857
+ skinGroupName: z.string().nullable(),
858
+ skinGroupSortIndex: z.number(),
859
+ content: z.string().nullable(),
860
+ dialog: z.string().nullable(),
861
+ usage: z.string().nullable(),
862
+ description: z.string().nullable(),
863
+ obtainApproach: z.string().nullable(),
864
+ sortId: z.number(),
865
+ displayTagId: z.string().nullable(),
866
+ getTime: z.number(),
867
+ onYear: z.number(),
868
+ onPeriod: z.number(),
869
+ }),
870
+ });
871
+ export const StageZod = z.strictObject({
872
+ excel: z.strictObject({
873
+ stageType: z.string(),
874
+ difficulty: z.string(),
875
+ performanceStageFlag: z.string(),
876
+ diffGroup: z.string(),
877
+ unlockCondition: z.array(
878
+ z.strictObject({
879
+ stageId: z.string(),
880
+ completeState: z.string(),
881
+ })
882
+ ),
883
+ stageId: z.string(),
884
+ levelId: z.string(),
885
+ zoneId: z.string(),
886
+ code: z.string(),
887
+ name: z.string(),
888
+ description: z.string(),
889
+ hardStagedId: z.string().nullable(),
890
+ dangerLevel: z.string().nullable(),
891
+ dangerPoint: z.number(),
892
+ loadingPicId: z.string(),
893
+ canPractice: z.boolean(),
894
+ canBattleReplay: z.boolean(),
895
+ apCost: z.number(),
896
+ apFailReturn: z.number(),
897
+ etItemId: z.string().nullable(),
898
+ etCost: z.number(),
899
+ etFailReturn: z.number(),
900
+ etButtonStyle: z.string().nullable(),
901
+ apProtectTimes: z.number(),
902
+ diamondOnceDrop: z.number(),
903
+ practiceTicketCost: z.number(),
904
+ dailyStageDifficulty: z.number(),
905
+ expGain: z.number(),
906
+ goldGain: z.number(),
907
+ loseExpGain: z.number(),
908
+ loseGoldGain: z.number(),
909
+ passFavor: z.number(),
910
+ completeFavor: z.number(),
911
+ slProgress: z.number(),
912
+ displayMainItem: z.string().nullable(),
913
+ hilightMark: z.boolean(),
914
+ bossMark: z.boolean(),
915
+ isPredefined: z.boolean(),
916
+ isHardPredefined: z.boolean(),
917
+ isSkillSelectablePredefined: z.boolean(),
918
+ isStoryOnly: z.boolean(),
919
+ appearanceStyle: z.string(),
920
+ stageDropInfo: z.strictObject({
921
+ firstPassRewards: z.null(),
922
+ firstCompleteRewards: z.null(),
923
+ passRewards: z.null(),
924
+ completeRewards: z.null(),
925
+ displayRewards: z.array(
926
+ z.strictObject({
927
+ type: z.string(),
928
+ id: z.string(),
929
+ dropType: z.string(),
930
+ })
931
+ ),
932
+ displayDetailRewards: z.array(
933
+ z.strictObject({
934
+ occPercent: z.string(),
935
+ type: z.string(),
936
+ id: z.string(),
937
+ dropType: z.string(),
938
+ })
939
+ ),
940
+ }),
941
+ canUseCharm: z.boolean(),
942
+ canUseTech: z.boolean(),
943
+ canUseTrapTool: z.boolean(),
944
+ canUseBattlePerformance: z.boolean(),
945
+ startButtonOverrideId: z.string().nullable(),
946
+ isStagePatch: z.boolean(),
947
+ mainStageId: z.string().nullable(),
948
+ extraCondition: z.strictObject({
949
+ index: z.number(),
950
+ template: z.string(),
951
+ unlockParam: z.array(z.string()),
952
+ }).nullable(),
953
+ extraInfo: z.array(
954
+ z.strictObject({
955
+ stageId: z.string(),
956
+ rewards: z.array(
957
+ z.strictObject({
958
+ id: z.string(),
959
+ count: z.number(),
960
+ type: z.string(),
961
+ })
962
+ ),
963
+ progressInfo: z.strictObject({
964
+ progressType: z.string(),
965
+ descList: z.record(z.string(), z.string()),
966
+ })
967
+ })
968
+ ).nullable(),
969
+ }),
970
+ levels: StageDataZod,
971
+ });
972
+ export const OperatorZod = z.strictObject({
973
+ id: z.string(),
974
+ recruit: z.number(),
975
+ archetype: z.string(),
976
+ range: GridRangeZod,
977
+ skills: z.array(SkillZod),
978
+ modules: z.array(ModuleZod),
979
+ skins: z.array(SkinZod),
980
+ bases: z.array(
981
+ z.strictObject({
982
+ condition: z.strictObject({
983
+ buffId: z.string(),
984
+ cond: OperatorUnlockCondZod,
985
+ }),
986
+ skill: BaseZod,
987
+ })
988
+ ),
989
+ paradox: ParadoxZod.nullable(),
990
+ data: z.strictObject({
991
+ name: z.string(),
992
+ description: z.string(),
993
+ canUseGeneralPotentialItem: z.boolean(),
994
+ canUseActivityPotentialItem: z.boolean(),
995
+ potentialItemId: z.string().nullable(),
996
+ activityPotentialItemId: z.string().nullable(),
997
+ classicPotentialItemId: z.string().nullable(),
998
+ nationId: z.string().nullable(),
999
+ groupId: z.string().nullable(),
1000
+ teamId: z.string().nullable(),
1001
+ displayNumber: z.string().nullable(),
1002
+ appellation: z.string(),
1003
+ position: z.string(),
1004
+ tagList: z.array(z.string()),
1005
+ itemUsage: z.string().nullable(),
1006
+ itemDesc: z.string().nullable(),
1007
+ itemObtainApproach: z.string().nullable(),
1008
+ isNotObtainable: z.boolean(),
1009
+ isSpChar: z.boolean(),
1010
+ maxPotentialLevel: z.number(),
1011
+ rarity: z.string(),
1012
+ profession: z.string(),
1013
+ subProfessionId: z.string(),
1014
+ trait: z.strictObject({
1015
+ candidates: z.array(
1016
+ z.strictObject({
1017
+ unlockCondition: OperatorUnlockCondZod,
1018
+ requiredPotentialRank: z.number(),
1019
+ blackboard: z.array(BlackboardZod),
1020
+ overrideDescripton: z.string().nullable(),
1021
+ prefabKey: z.string().nullable(),
1022
+ rangeId: z.string().nullable(),
1023
+ })
1024
+ ),
1025
+ }).nullable(),
1026
+ phases: z.array(
1027
+ z.strictObject({
1028
+ characterPrefabKey: z.string(),
1029
+ rangeId: z.string(),
1030
+ maxLevel: z.number(),
1031
+ attributesKeyFrames: z.array(AttributesKeyFrameZod),
1032
+ evolveCost: z.union([z.array(LevelUpCostZod), z.null()]),
1033
+ })
1034
+ ),
1035
+ skills: z.array(
1036
+ z.strictObject({
1037
+ skillId: z.string(),
1038
+ overridePrefabKey: z.string().nullable(),
1039
+ overrideTokenKey: z.string().nullable(),
1040
+ levelUpCostCond: z.array(LevelUpCostCondZod),
1041
+ unlockCond: OperatorUnlockCondZod,
1042
+ })
1043
+ ),
1044
+ displayTokenDict: z.record(z.boolean()).nullable(),
1045
+ talents: z.array(
1046
+ z.strictObject({
1047
+ candidates: z.array(
1048
+ z.strictObject({
1049
+ unlockCondition: OperatorUnlockCondZod,
1050
+ requiredPotentialRank: z.number(),
1051
+ prefabKey: z.string(),
1052
+ name: z.string(),
1053
+ description: z.string(),
1054
+ rangeId: z.string().nullable(),
1055
+ blackboard: z.array(BlackboardZod),
1056
+ tokenKey: z.string().nullable(),
1057
+ })
1058
+ ),
1059
+ })
1060
+ ).nullable(),
1061
+ potentialRanks: z.array(
1062
+ z.strictObject({
1063
+ type: z.string(),
1064
+ description: z.string(),
1065
+ buff: z.strictObject({
1066
+ attributes: z.strictObject({
1067
+ abnormalFlags: z.null(),
1068
+ abnormalImmunes: z.null(),
1069
+ abnormalAntis: z.null(),
1070
+ abnormalCombos: z.null(),
1071
+ abnormalComboImmunes: z.null(),
1072
+ attributeModifiers: z.array(
1073
+ z.strictObject({
1074
+ attributeType: z.string(),
1075
+ formulaItem: z.string(),
1076
+ value: z.number(),
1077
+ loadFromBlackboard: z.boolean(),
1078
+ fetchBaseValueFromSourceEntity: z.boolean(),
1079
+ })
1080
+ ),
1081
+ }),
1082
+ }).nullable(),
1083
+ equivalentCost: z.null(),
1084
+ })
1085
+ ),
1086
+ favorKeyFrames: z.array(AttributesKeyFrameZod),
1087
+ allSkillLvlup: z.array(
1088
+ z.strictObject({
1089
+ unlockCond: OperatorUnlockCondZod,
1090
+ lvlUpCost: z.array(LevelUpCostZod).nullable(),
1091
+ })
1092
+ ),
1093
+ }),
1094
+ });
1095
+ export type Blackboard = z.infer<typeof BlackboardZod>;
1096
+ export type Base = z.infer<typeof BaseZod>;
1097
+ export type CCStage = z.infer<typeof CCStageZod>;
1098
+ export type Definition = z.infer<typeof DefinitionZod>;
1099
+ export type Enemy = z.infer<typeof EnemyZod>;
1100
+ export type GameEvent = z.infer<typeof GameEventZod>;
1101
+ export type GridRange = z.infer<typeof GridRangeZod>;
1102
+ export type Item = z.infer<typeof ItemZod>;
1103
+ export type LevelUpCost = z.infer<typeof LevelUpCostZod>;
1104
+ export type Module = z.infer<typeof ModuleZod>;
1105
+ export type Operator = z.infer<typeof OperatorZod>;
1106
+ export type Paradox = z.infer<typeof ParadoxZod>;
1107
+ export type RogueTheme = z.infer<typeof RogueThemeZod>;
1108
+ export type RogueRelic = z.infer<typeof RogueRelicZod>;
1109
+ export type RogueStage = z.infer<typeof RogueStageZod>;
1110
+ export type RogueVariation = z.infer<typeof RogueVariationZod>;
1111
+ export type SandboxAct = z.infer<typeof SandboxActZod>;
1112
+ export type SandboxStage = z.infer<typeof SandboxStageZod>;
1113
+ export type Skill = z.infer<typeof SkillZod>;
1114
+ export type Skin = z.infer<typeof SkinZod>;
1115
+ export type Stage = z.infer<typeof StageZod>;
1043
1116
  export type StageData = z.infer<typeof StageDataZod>;