hella-types 0.0.6 → 0.0.7

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/dist/index.js CHANGED
@@ -1,7 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OperatorIO = exports.StageIO = exports.SkinIO = exports.SkillIO = exports.SandboxActIO = exports.RogueThemeIO = exports.ParadoxIO = exports.ModuleIO = exports.ItemIO = exports.GameEventIO = exports.EnemyIO = exports.DefinitionIO = exports.CCStageIO = exports.BaseIO = exports.SandboxStageIO = exports.RogueVariationIO = exports.RogueStageIO = exports.RogueRelicIO = exports.StageDataIO = exports.StageEffectIO = exports.StageDefinesIO = exports.LevelUpCostCondIO = exports.OperatorUnlockCondIO = exports.WorkshopFormulaIO = exports.ManufactFormulaIO = exports.LevelUpCostIO = exports.GridRangeIO = exports.EnemySpDataIO = exports.EnemySkillsIO = exports.EnemyAttributesIO = exports.BlackboardIO = exports.AttributesKeyFrameIO = void 0;
3
+ exports.OperatorIO = exports.StageIO = exports.SkinIO = exports.SkillIO = exports.SandboxActIO = exports.RogueThemeIO = exports.ParadoxIO = exports.ModuleIO = exports.ItemIO = exports.GameEventIO = exports.EnemyIO = exports.DefinitionIO = exports.CCStageIO = exports.BaseIO = exports.SandboxStageIO = exports.RogueVariationIO = exports.RogueStageIO = exports.RogueRelicIO = exports.StageDataIO = exports.StageActionIO = exports.StageEffectIO = exports.StageDefinesIO = exports.LevelUpCostCondIO = exports.OperatorUnlockCondIO = exports.WorkshopFormulaIO = exports.ManufactFormulaIO = exports.LevelUpCostIO = exports.GridRangeIO = exports.EnemyData = exports.EnemySpDataIO = exports.EnemySkillsIO = exports.EnemyAttributesIO = exports.BlackboardIO = exports.AttributesKeyFrameIO = void 0;
4
4
  var t = require("io-ts");
5
+ var stringIO = t.type({
6
+ m_defined: t.boolean,
7
+ m_value: t.union([t.string, t.null]),
8
+ });
9
+ var stringArrayIO = t.type({
10
+ m_defined: t.boolean,
11
+ m_value: t.union([t.array(t.string), t.null]),
12
+ });
13
+ var numberIO = t.type({
14
+ m_defined: t.boolean,
15
+ m_value: t.union([t.number, t.null]),
16
+ });
17
+ var booleanIO = t.type({
18
+ m_defined: t.boolean,
19
+ m_value: t.boolean,
20
+ });
5
21
  exports.AttributesKeyFrameIO = t.type({
6
22
  level: t.number,
7
23
  data: t.type({
@@ -31,94 +47,33 @@ exports.AttributesKeyFrameIO = t.type({
31
47
  });
32
48
  exports.BlackboardIO = t.type({
33
49
  key: t.string,
34
- value: t.union([t.number, t.undefined]),
35
- valueStr: t.union([t.string, t.undefined]),
50
+ value: t.union([t.number, t.null]),
51
+ valueStr: t.union([t.string, t.null, t.undefined]),
36
52
  });
37
53
  exports.EnemyAttributesIO = t.type({
38
- maxHp: t.type({
39
- m_defined: t.boolean,
40
- m_value: t.number,
41
- }),
42
- atk: t.type({
43
- m_defined: t.boolean,
44
- m_value: t.number,
45
- }),
46
- def: t.type({
47
- m_defined: t.boolean,
48
- m_value: t.number,
49
- }),
50
- magicResistance: t.type({
51
- m_defined: t.boolean,
52
- m_value: t.number,
53
- }),
54
- cost: t.type({
55
- m_defined: t.boolean,
56
- m_value: t.number,
57
- }),
58
- blockCnt: t.type({
59
- m_defined: t.boolean,
60
- m_value: t.number,
61
- }),
62
- moveSpeed: t.type({
63
- m_defined: t.boolean,
64
- m_value: t.number,
65
- }),
66
- attackSpeed: t.type({
67
- m_defined: t.boolean,
68
- m_value: t.number,
69
- }),
70
- baseAttackTime: t.type({
71
- m_defined: t.boolean,
72
- m_value: t.number,
73
- }),
74
- respawnTime: t.type({
75
- m_defined: t.boolean,
76
- m_value: t.number,
77
- }),
78
- hpRecoveryPerSec: t.type({
79
- m_defined: t.boolean,
80
- m_value: t.number,
81
- }),
82
- spRecoveryPerSec: t.type({
83
- m_defined: t.boolean,
84
- m_value: t.number,
85
- }),
86
- maxDeployCount: t.type({
87
- m_defined: t.boolean,
88
- m_value: t.number,
89
- }),
90
- massLevel: t.type({
91
- m_defined: t.boolean,
92
- m_value: t.number,
93
- }),
94
- baseForceLevel: t.type({
95
- m_defined: t.boolean,
96
- m_value: t.number,
97
- }),
98
- tauntLevel: t.type({
99
- m_defined: t.boolean,
100
- m_value: t.number,
101
- }),
102
- stunImmune: t.type({
103
- m_defined: t.boolean,
104
- m_value: t.boolean,
105
- }),
106
- silenceImmune: t.type({
107
- m_defined: t.boolean,
108
- m_value: t.boolean,
109
- }),
110
- sleepImmune: t.type({
111
- m_defined: t.boolean,
112
- m_value: t.boolean,
113
- }),
114
- frozenImmune: t.type({
115
- m_defined: t.boolean,
116
- m_value: t.boolean,
117
- }),
118
- levitateImmune: t.type({
119
- m_defined: t.boolean,
120
- m_value: t.boolean,
121
- }),
54
+ maxHp: numberIO,
55
+ atk: numberIO,
56
+ def: numberIO,
57
+ magicResistance: numberIO,
58
+ cost: numberIO,
59
+ blockCnt: numberIO,
60
+ moveSpeed: numberIO,
61
+ attackSpeed: numberIO,
62
+ baseAttackTime: numberIO,
63
+ respawnTime: numberIO,
64
+ hpRecoveryPerSec: numberIO,
65
+ spRecoveryPerSec: numberIO,
66
+ maxDeployCount: numberIO,
67
+ massLevel: numberIO,
68
+ baseForceLevel: numberIO,
69
+ tauntLevel: t.union([numberIO, t.undefined]), // legacy
70
+ epDamageResistance: t.union([numberIO, t.undefined]), // legacy
71
+ epResistance: t.union([numberIO, t.undefined]), // ~
72
+ stunImmune: booleanIO,
73
+ silenceImmune: booleanIO,
74
+ sleepImmune: t.union([booleanIO, t.undefined]),
75
+ frozenImmune: t.union([booleanIO, t.undefined]), // legacy
76
+ levitateImmune: t.union([booleanIO, t.undefined]), // legacy
122
77
  });
123
78
  exports.EnemySkillsIO = t.type({
124
79
  prefabKey: t.string,
@@ -126,14 +81,32 @@ exports.EnemySkillsIO = t.type({
126
81
  cooldown: t.number,
127
82
  initCooldown: t.number,
128
83
  spCost: t.number,
129
- blackboard: t.array(exports.BlackboardIO),
84
+ blackboard: t.union([t.array(exports.BlackboardIO), t.null]),
130
85
  });
131
86
  exports.EnemySpDataIO = t.type({
132
- spType: t.number,
87
+ spType: t.string,
133
88
  maxSp: t.number,
134
89
  initSp: t.number,
135
90
  increment: t.number,
136
91
  });
92
+ exports.EnemyData = t.type({
93
+ name: stringIO,
94
+ description: stringIO,
95
+ prefabKey: stringIO,
96
+ attributes: exports.EnemyAttributesIO,
97
+ applyWay: t.union([stringIO, t.undefined]), // legacy
98
+ motion: t.union([stringIO, t.undefined]), // legacy
99
+ enemyTags: t.union([stringArrayIO, t.undefined]), // legacy
100
+ lifePointReduce: numberIO,
101
+ levelType: t.union([stringIO, numberIO, t.undefined]), // legacy
102
+ rangeRadius: numberIO,
103
+ numOfExtraDrops: t.union([numberIO, t.undefined]), // legacy
104
+ viewRadius: t.union([numberIO, t.undefined]), // legacy
105
+ notCountInTotal: t.union([booleanIO, t.undefined]), // legacy
106
+ talentBlackboard: t.union([t.array(exports.BlackboardIO), t.null]),
107
+ skills: t.union([t.array(exports.EnemySkillsIO), t.null]),
108
+ spData: t.union([exports.EnemySpDataIO, t.null]),
109
+ });
137
110
  exports.GridRangeIO = t.type({
138
111
  id: t.string,
139
112
  direction: t.number,
@@ -194,13 +167,13 @@ exports.WorkshopFormulaIO = t.type({
194
167
  })),
195
168
  });
196
169
  exports.OperatorUnlockCondIO = t.type({
197
- phase: t.string,
170
+ phase: t.union([t.string, t.number]),
198
171
  level: t.number,
199
172
  });
200
173
  exports.LevelUpCostCondIO = t.type({
201
174
  unlockCond: exports.OperatorUnlockCondIO,
202
175
  lvlUpTime: t.number,
203
- levelUpCost: t.array(exports.LevelUpCostIO),
176
+ levelUpCost: t.union([t.array(exports.LevelUpCostIO), t.null]),
204
177
  });
205
178
  exports.StageDefinesIO = t.type({
206
179
  characterInsts: t.array(t.any),
@@ -209,25 +182,29 @@ exports.StageDefinesIO = t.type({
209
182
  row: t.number,
210
183
  col: t.number,
211
184
  }),
212
- direction: t.number,
185
+ direction: t.union([t.string, t.number]), // legacy
213
186
  hidden: t.boolean,
214
- alias: t.string,
215
- uniEquipIds: t.array(t.type({
216
- key: t.string,
217
- level: t.number,
218
- })),
187
+ alias: t.union([t.string, t.null]),
188
+ uniEquipIds: t.union([
189
+ t.array(t.type({
190
+ key: t.string,
191
+ level: t.number,
192
+ })),
193
+ t.null, t.undefined
194
+ ] // legacy
195
+ ),
219
196
  inst: t.type({
220
197
  characterKey: t.string,
221
198
  level: t.number,
222
- phase: t.number,
199
+ phase: t.union([t.string, t.number]), // legacy
223
200
  favorPoint: t.number,
224
201
  potentialRank: t.number,
225
202
  }),
226
203
  skillIndex: t.number,
227
204
  mainSkillLvl: t.number,
228
- skinId: t.string,
229
- tmplId: t.string,
230
- overrideSkillBlackboard: t.array(exports.BlackboardIO),
205
+ skinId: t.union([t.string, t.null]),
206
+ tmplId: t.union([t.string, t.null, t.undefined]),
207
+ overrideSkillBlackboard: t.union([t.array(exports.BlackboardIO), t.null, t.undefined]),
231
208
  })),
232
209
  characterCards: t.array(t.any),
233
210
  tokenCards: t.array(t.any),
@@ -239,7 +216,31 @@ exports.StageEffectIO = t.type({
239
216
  y: t.number,
240
217
  z: t.number,
241
218
  }),
242
- direction: t.number,
219
+ direction: t.union([t.string, t.number]), // legacy
220
+ });
221
+ exports.StageActionIO = t.type({
222
+ preDelay: t.number,
223
+ actions: t.array(t.type({
224
+ actionType: t.union([t.string, t.number]), // legacy
225
+ managedByScheduler: t.boolean,
226
+ key: t.string,
227
+ count: t.number,
228
+ preDelay: t.number,
229
+ interval: t.number,
230
+ routeIndex: t.number,
231
+ blockFragment: t.boolean,
232
+ autoPreviewRoute: t.boolean,
233
+ autoDisplayEnemyInfo: t.union([t.boolean, t.undefined]), // legacy
234
+ isUnharmfulAndAlwaysCountAsKilled: t.boolean,
235
+ hiddenGroup: t.union([t.string, t.null]),
236
+ randomSpawnGroupKey: t.union([t.string, t.null, t.undefined]), // legacy
237
+ randomSpawnGroupPackKey: t.union([t.string, t.null, t.undefined]), // legacy
238
+ randomType: t.union([t.string, t.number, t.undefined]), // legacy
239
+ weight: t.union([t.number, t.undefined]), // legacy
240
+ dontBlockWave: t.union([t.boolean, t.undefined]), // legacy
241
+ isValid: t.union([t.boolean, t.undefined]), // legacy
242
+ extraMeta: t.union([t.null, t.undefined]), // legacy
243
+ })),
243
244
  });
244
245
  exports.StageDataIO = t.type({
245
246
  options: t.type({
@@ -251,174 +252,128 @@ exports.StageDataIO = t.type({
251
252
  moveMultiplier: t.number,
252
253
  steeringEnabled: t.boolean,
253
254
  isTrainingLevel: t.boolean,
254
- isHardTrainingLevel: t.boolean,
255
- functionDisableMask: t.number,
256
- }),
257
- levelId: t.string,
258
- mapId: t.string,
259
- bgmEvent: t.string,
260
- environmentSe: t.string,
255
+ isHardTrainingLevel: t.union([t.boolean, t.undefined]), // legacy
256
+ isPredefinedCardsSelectable: t.union([t.boolean, t.undefined]), // legacy
257
+ maxPlayTime: t.union([t.number, t.undefined]), // legacy
258
+ functionDisableMask: t.union([t.string, t.number]),
259
+ configBlackBoard: t.union([t.array(exports.BlackboardIO), t.null, t.undefined]), // legacy
260
+ }),
261
+ levelId: t.union([t.string, t.null]),
262
+ mapId: t.union([t.string, t.null]),
263
+ bgmEvent: t.union([t.string, t.null]),
264
+ environmentSe: t.union([t.string, t.null]),
261
265
  mapData: t.type({
262
266
  map: t.array(t.array(t.number)),
263
267
  tiles: t.array(t.type({
264
268
  tileKey: t.string,
265
- heightType: t.number,
266
- buildableType: t.number,
267
- passableMask: t.number,
268
- playerSideMask: t.number,
269
- blackboard: exports.BlackboardIO,
270
- effects: t.array(exports.StageEffectIO),
269
+ heightType: t.union([t.string, t.number]), // keep number for legacy stages (monster hunter, vignettes, etc.)
270
+ buildableType: t.union([t.string, t.number]), // ~
271
+ passableMask: t.union([t.string, t.number]), // ~
272
+ playerSideMask: t.union([t.string, t.number, t.undefined]), // ~
273
+ blackboard: t.union([t.array(exports.BlackboardIO), t.null]),
274
+ effects: t.union([t.array(exports.StageEffectIO), t.null]),
271
275
  })),
272
- blockEdges: t.null,
273
- tags: t.array(t.string),
274
- effects: t.array(exports.StageEffectIO),
275
- layerRects: t.array(t.string),
276
- width: t.number,
277
- height: t.number,
276
+ blockEdges: t.union([t.array(t.any), t.null]),
277
+ tags: t.union([t.array(t.string), t.null]),
278
+ effects: t.union([t.array(exports.StageEffectIO), t.null]),
279
+ layerRects: t.union([t.null, t.undefined]),
278
280
  }),
279
281
  tilesDisallowToLocate: t.array(t.any),
280
- runes: t.array(t.type({
281
- difficultyMask: t.number,
282
- key: t.string,
283
- professionMask: t.number,
284
- buildableMask: t.number,
285
- blackboard: t.array(exports.BlackboardIO),
286
- })),
287
- globalBuffs: t.array(t.type({
288
- prefabKey: t.string,
289
- blackboard: t.array(exports.BlackboardIO),
290
- overrideCameraEffect: t.null,
291
- passProfessionMaskFlag: t.boolean,
292
- professionMask: t.number,
293
- })),
294
- routes: t.array(t.type({
295
- motionMode: t.number,
296
- startPosition: t.type({
297
- row: t.number,
298
- col: t.number,
299
- }),
300
- endPosition: t.type({
301
- row: t.number,
302
- col: t.number,
303
- }),
304
- spawnRandomRange: t.type({
305
- x: t.number,
306
- y: t.number,
307
- }),
308
- spawnOffset: t.type({
309
- x: t.number,
310
- y: t.number,
311
- }),
312
- checkpoints: t.array(t.type({
313
- type: t.number,
314
- time: t.number,
315
- position: t.type({
282
+ runes: t.union([
283
+ t.array(t.type({
284
+ difficultyMask: t.union([t.string, t.number]), // legacy
285
+ key: t.string,
286
+ professionMask: t.union([t.string, t.number, t.undefined]), // legacy
287
+ buildableMask: t.union([t.string, t.number]), // legacy
288
+ blackboard: t.array(exports.BlackboardIO),
289
+ })),
290
+ t.null
291
+ ]),
292
+ globalBuffs: t.union([
293
+ t.array(t.type({
294
+ prefabKey: t.string,
295
+ blackboard: t.union([t.array(exports.BlackboardIO), t.null]),
296
+ overrideCameraEffect: t.null,
297
+ passProfessionMaskFlag: t.union([t.boolean, t.undefined]),
298
+ professionMask: t.union([t.string, t.number, t.undefined]),
299
+ })),
300
+ t.null
301
+ ]),
302
+ routes: t.array(t.union([
303
+ t.type({
304
+ motionMode: t.union([t.string, t.number]), // keep number for legacy
305
+ startPosition: t.type({
316
306
  row: t.number,
317
307
  col: t.number,
318
308
  }),
319
- reachOffset: t.type({
309
+ endPosition: t.type({
310
+ row: t.number,
311
+ col: t.number,
312
+ }),
313
+ spawnRandomRange: t.type({
320
314
  x: t.number,
321
315
  y: t.number,
322
316
  }),
323
- randomizeReachOffset: t.boolean,
324
- reachDistance: t.number,
325
- })),
326
- allowDiagonalMove: t.boolean,
327
- visitEveryTileCenter: t.boolean,
328
- visitEveryNodeCenter: t.boolean,
329
- visitEveryCheckPoint: t.boolean,
330
- })),
331
- extraRoutes: t.array(t.any),
317
+ spawnOffset: t.type({
318
+ x: t.number,
319
+ y: t.number,
320
+ }),
321
+ checkpoints: t.union([
322
+ t.array(t.type({
323
+ type: t.union([t.string, t.number]), // keep number for legacy
324
+ time: t.number,
325
+ position: t.type({
326
+ row: t.number,
327
+ col: t.number,
328
+ }),
329
+ reachOffset: t.type({
330
+ x: t.number,
331
+ y: t.number,
332
+ }),
333
+ randomizeReachOffset: t.boolean,
334
+ reachDistance: t.number,
335
+ })),
336
+ t.null
337
+ ]),
338
+ allowDiagonalMove: t.boolean,
339
+ visitEveryTileCenter: t.boolean,
340
+ visitEveryNodeCenter: t.boolean,
341
+ visitEveryCheckPoint: t.union([t.boolean, t.undefined]), // legacy
342
+ }),
343
+ t.null // legacy
344
+ ])),
345
+ extraRoutes: t.union([t.array(t.any), t.undefined]),
332
346
  enemies: t.array(t.any),
333
347
  enemyDbRefs: t.array(t.type({
334
348
  useDb: t.boolean,
335
349
  id: t.string,
336
350
  level: t.number,
337
- overwrittenData: t.type({
338
- name: t.type({
339
- m_defined: t.boolean,
340
- m_value: t.number,
341
- }),
342
- description: t.type({
343
- m_defined: t.boolean,
344
- m_value: t.number,
345
- }),
346
- prefabKey: t.type({
347
- m_defined: t.boolean,
348
- m_value: t.number,
349
- }),
350
- attributes: exports.EnemyAttributesIO,
351
- lifePointReduce: t.type({
352
- m_defined: t.boolean,
353
- m_value: t.number,
354
- }),
355
- rangeRadius: t.type({
356
- m_defined: t.boolean,
357
- m_value: t.number,
358
- }),
359
- talentBlackboard: t.array(exports.BlackboardIO),
360
- skills: t.array(exports.EnemySkillsIO),
361
- spData: exports.EnemySpDataIO,
362
- }),
351
+ overwrittenData: t.union([exports.EnemyData, t.null]),
363
352
  })),
364
353
  waves: t.array(t.type({
365
354
  preDelay: t.number,
366
355
  postDelay: t.number,
367
356
  maxTimeWaitingForNextWave: t.number,
368
- fragments: t.array(t.type({
369
- preDelay: t.number,
370
- actions: t.array(t.type({
371
- actionType: t.number,
372
- managedByScheduler: t.boolean,
373
- key: t.string,
374
- count: t.number,
375
- preDelay: t.number,
376
- interval: t.number,
377
- routeIndex: t.number,
378
- blockFragment: t.boolean,
379
- autoPreviewRoute: t.boolean,
380
- isUnharmfulAndAlwaysCountAsKilled: t.boolean,
381
- hiddenGroup: t.string,
382
- randomSpawnGroupKey: t.string,
383
- weight: t.number,
384
- dontBlockWave: t.boolean,
385
- })),
386
- name: t.string,
387
- })),
357
+ fragments: t.array(exports.StageActionIO),
358
+ advancedWaveTag: t.union([t.string, t.null, t.undefined]), // legacy
388
359
  })),
389
- branches: t.type({
390
- frosts: t.type({
391
- phases: t.array(t.type({
392
- preDelay: t.number,
393
- actions: t.array(t.type({
394
- actionType: t.number,
395
- managedByScheduler: t.boolean,
396
- key: t.string,
397
- count: t.number,
398
- preDelay: t.number,
399
- interval: t.number,
400
- routeIndex: t.number,
401
- blockFragment: t.boolean,
402
- autoPreviewRoute: t.boolean,
403
- isUnharmfulAndAlwaysCountAsKilled: t.boolean,
404
- hiddenGroup: t.string,
405
- randomSpawnGroupKey: t.string,
406
- weight: t.number,
407
- weightValue: t.number,
408
- })),
409
- })),
410
- }),
411
- }),
412
- predefines: exports.StageDefinesIO,
413
- hardPredefines: exports.StageDefinesIO,
360
+ branches: t.union([
361
+ t.record(t.string, t.type({
362
+ phases: t.array(exports.StageActionIO),
363
+ })),
364
+ t.null
365
+ ]),
366
+ predefines: t.union([exports.StageDefinesIO, t.null]),
367
+ hardPredefines: t.union([exports.StageDefinesIO, t.null, t.undefined]),
414
368
  excludeCharIdList: t.null,
415
369
  randomSeed: t.number,
416
- operaConfig: t.string,
370
+ operaConfig: t.union([t.string, t.null, t.undefined]),
371
+ runtimeData: t.union([t.null, t.undefined]), // legacy
417
372
  });
418
373
  exports.RogueRelicIO = t.type({
419
374
  id: t.string,
420
375
  name: t.string,
421
- description: t.string,
376
+ description: t.union([t.string, t.null]),
422
377
  usage: t.string,
423
378
  obtainApproach: t.string,
424
379
  iconId: t.string,
@@ -428,7 +383,7 @@ exports.RogueRelicIO = t.type({
428
383
  value: t.number,
429
384
  sortId: t.number,
430
385
  canSacrifice: t.boolean,
431
- unlockCondDesc: t.string,
386
+ unlockCondDesc: t.union([t.string, t.null]),
432
387
  });
433
388
  exports.RogueStageIO = t.type({
434
389
  excel: t.type({
@@ -439,11 +394,11 @@ exports.RogueStageIO = t.type({
439
394
  name: t.string,
440
395
  loadingPicId: t.string,
441
396
  description: t.string,
442
- eliteDesc: t.string,
397
+ eliteDesc: t.union([t.string, t.null]),
443
398
  isBoss: t.number,
444
399
  isElite: t.number,
445
400
  difficulty: t.string,
446
- capsulePool: t.string,
401
+ capsulePool: t.union([t.string, t.null]),
447
402
  capsuleProb: t.number,
448
403
  vutresProb: t.array(t.number),
449
404
  boxProb: t.array(t.number),
@@ -457,8 +412,8 @@ exports.RogueVariationIO = t.type({
457
412
  innerName: t.string,
458
413
  functionDesc: t.string,
459
414
  desc: t.string,
460
- iconId: t.string,
461
- sound: t.string,
415
+ iconId: t.union([t.string, t.null]),
416
+ sound: t.union([t.string, t.null]),
462
417
  });
463
418
  exports.SandboxStageIO = t.type({
464
419
  excel: t.type({
@@ -503,18 +458,13 @@ exports.EnemyIO = t.type({
503
458
  excel: t.type({
504
459
  enemyId: t.string,
505
460
  enemyIndex: t.string,
506
- enemyTags: t.array(t.string),
461
+ enemyTags: t.union([t.array(t.string), t.null]),
507
462
  sortId: t.number,
508
463
  name: t.string,
509
- enemyRace: t.string,
510
464
  enemyLevel: t.string,
511
465
  description: t.string,
512
- attackType: t.string,
513
- endure: t.string,
514
- attack: t.string,
515
- defence: t.string,
516
- resistance: t.string,
517
- ability: t.string,
466
+ attackType: t.null,
467
+ ability: t.null,
518
468
  isInvalidKilled: t.boolean,
519
469
  overrideKillCntInfos: t.record(t.string, t.any),
520
470
  hideInHandbook: t.boolean,
@@ -523,40 +473,7 @@ exports.EnemyIO = t.type({
523
473
  Key: t.string,
524
474
  Value: t.array(t.type({
525
475
  level: t.number,
526
- enemyData: t.type({
527
- name: t.type({
528
- m_defined: t.boolean,
529
- m_value: t.string,
530
- }),
531
- description: t.type({
532
- m_defined: t.boolean,
533
- m_value: t.string,
534
- }),
535
- prefabKey: t.type({
536
- m_defined: t.boolean,
537
- m_value: t.string,
538
- }),
539
- attributes: exports.EnemyAttributesIO,
540
- lifePointReduce: t.type({
541
- m_defined: t.boolean,
542
- m_value: t.number,
543
- }),
544
- levelType: t.type({
545
- m_defined: t.boolean,
546
- m_value: t.number,
547
- }),
548
- rangeRadius: t.type({
549
- m_defined: t.boolean,
550
- m_value: t.number,
551
- }),
552
- numOfExtraDrops: t.type({
553
- m_defined: t.boolean,
554
- m_value: t.number,
555
- }),
556
- talentBlackboard: t.array(exports.BlackboardIO),
557
- skills: t.array(exports.EnemySkillsIO),
558
- spData: exports.EnemySpDataIO,
559
- }),
476
+ enemyData: exports.EnemyData,
560
477
  })),
561
478
  }),
562
479
  });
@@ -570,22 +487,22 @@ exports.GameEventIO = t.type({
570
487
  rewardEndTime: t.number,
571
488
  displayOnHome: t.boolean,
572
489
  hasStage: t.boolean,
573
- templateShopId: t.string,
574
- medalGroupId: t.string,
490
+ templateShopId: t.union([t.string, t.null]),
491
+ medalGroupId: t.union([t.string, t.null]),
575
492
  isReplicate: t.boolean,
576
493
  });
577
494
  exports.ItemIO = t.type({
578
495
  data: t.type({
579
496
  itemId: t.string,
580
497
  name: t.string,
581
- description: t.string,
582
- rarity: t.number,
498
+ description: t.union([t.string, t.null]),
499
+ rarity: t.string,
583
500
  iconId: t.string,
584
501
  overrideBkg: t.null,
585
- stackIconId: t.string,
502
+ stackIconId: t.union([t.string, t.null]),
586
503
  sortId: t.number,
587
- usage: t.string,
588
- obtainApproach: t.string,
504
+ usage: t.union([t.string, t.null]),
505
+ obtainApproach: t.union([t.string, t.null]),
589
506
  classifyType: t.string,
590
507
  itemType: t.string,
591
508
  stageDropList: t.array(t.type({
@@ -597,7 +514,7 @@ exports.ItemIO = t.type({
597
514
  formulaId: t.string,
598
515
  })),
599
516
  }),
600
- formula: t.union([exports.ManufactFormulaIO, exports.WorkshopFormulaIO]),
517
+ formula: t.union([exports.ManufactFormulaIO, exports.WorkshopFormulaIO, t.null]),
601
518
  });
602
519
  exports.ModuleIO = t.type({
603
520
  info: t.type({
@@ -607,58 +524,67 @@ exports.ModuleIO = t.type({
607
524
  uniEquipDesc: t.string,
608
525
  typeIcon: t.string,
609
526
  typeName1: t.string,
610
- typeName2: t.string,
527
+ typeName2: t.union([t.string, t.null]),
611
528
  equipShiningColor: t.string,
612
- showEvolvePhase: t.number,
613
- unlockEvolvePhase: t.number,
529
+ showEvolvePhase: t.string,
530
+ unlockEvolvePhase: t.string,
614
531
  charId: t.string,
615
- tmplId: t.string,
532
+ tmplId: t.union([t.string, t.null]),
616
533
  showLevel: t.number,
617
534
  unlockLevel: t.number,
618
535
  unlockFavorPoint: t.number,
619
536
  missionList: t.array(t.string),
620
- itemCost: t.record(t.string, t.array(exports.LevelUpCostIO)),
537
+ itemCost: t.union([t.record(t.string, t.array(exports.LevelUpCostIO)), t.null]),
621
538
  type: t.string,
622
539
  uniEquipGetTime: t.number,
623
540
  charEquipOrder: t.number,
624
541
  }),
625
- data: t.type({
626
- phases: t.array(t.type({
627
- equipLevel: t.number,
628
- parts: t.array(t.type({
629
- resKey: t.string,
630
- target: t.string,
631
- isToken: t.boolean,
632
- addOrOverrideTalentDataBundle: t.type({
633
- candidates: t.array(t.type({
634
- displayRangeId: t.boolean,
635
- upgradeDescription: t.string,
636
- talentIndex: t.number,
637
- unlockCondition: exports.OperatorUnlockCondIO,
638
- requiredPotentialRank: t.number,
639
- prefabKey: t.string,
640
- name: t.string,
641
- description: t.string,
642
- rangeId: t.string,
643
- blackboard: t.array(exports.BlackboardIO),
644
- })),
645
- }),
646
- overrideTraitDataBundle: t.type({
647
- candidates: t.array(t.type({
648
- additionalDescription: t.string,
649
- unlockCondition: exports.OperatorUnlockCondIO,
650
- requiredPotentialRank: t.number,
651
- blackboard: t.array(exports.BlackboardIO),
652
- overrideDescripton: t.string,
653
- prefabKey: t.string,
654
- rangeId: t.string,
655
- })),
656
- }),
542
+ data: t.union([
543
+ t.type({
544
+ phases: t.array(t.type({
545
+ equipLevel: t.number,
546
+ parts: t.array(t.type({
547
+ resKey: t.union([t.string, t.null]),
548
+ target: t.string,
549
+ isToken: t.boolean,
550
+ addOrOverrideTalentDataBundle: t.type({
551
+ candidates: t.union([
552
+ t.array(t.type({
553
+ displayRangeId: t.boolean,
554
+ upgradeDescription: t.string,
555
+ talentIndex: t.number,
556
+ unlockCondition: exports.OperatorUnlockCondIO,
557
+ requiredPotentialRank: t.number,
558
+ prefabKey: t.string,
559
+ name: t.union([t.string, t.null]),
560
+ description: t.union([t.string, t.null]),
561
+ rangeId: t.union([t.string, t.null]),
562
+ blackboard: t.array(exports.BlackboardIO),
563
+ })),
564
+ t.null
565
+ ]),
566
+ }),
567
+ overrideTraitDataBundle: t.type({
568
+ candidates: t.union([
569
+ t.array(t.type({
570
+ additionalDescription: t.union([t.string, t.null]),
571
+ unlockCondition: exports.OperatorUnlockCondIO,
572
+ requiredPotentialRank: t.number,
573
+ blackboard: t.array(exports.BlackboardIO),
574
+ overrideDescripton: t.union([t.string, t.null]),
575
+ prefabKey: t.union([t.string, t.null]),
576
+ rangeId: t.union([t.string, t.null]),
577
+ })),
578
+ t.null
579
+ ]),
580
+ }),
581
+ })),
582
+ attributeBlackboard: t.array(exports.BlackboardIO),
583
+ tokenAttributeBlackboard: t.record(t.string, t.array(exports.BlackboardIO)),
657
584
  })),
658
- attributeBlackboard: t.array(exports.BlackboardIO),
659
- tokenAttributeBlackboard: t.record(t.string, t.array(exports.BlackboardIO)),
660
- })),
661
- }),
585
+ }),
586
+ t.null
587
+ ]),
662
588
  });
663
589
  exports.ParadoxIO = t.type({
664
590
  excel: t.type({
@@ -671,7 +597,7 @@ exports.ParadoxIO = t.type({
671
597
  loadingPicId: t.string,
672
598
  description: t.string,
673
599
  unlockParam: t.array(t.type({
674
- unlockType: t.number,
600
+ unlockType: t.string,
675
601
  unlockParam1: t.string,
676
602
  unlockParam2: t.string,
677
603
  unlockParam3: t.null,
@@ -700,23 +626,23 @@ exports.SandboxActIO = t.type({
700
626
  });
701
627
  exports.SkillIO = t.type({
702
628
  skillId: t.string,
703
- iconId: t.string,
629
+ iconId: t.union([t.string, t.null]),
704
630
  hidden: t.boolean,
705
631
  levels: t.array(t.type({
706
632
  name: t.string,
707
- rangeId: t.string,
708
- description: t.string,
633
+ rangeId: t.union([t.string, t.null]),
634
+ description: t.union([t.string, t.null]),
709
635
  skillType: t.string,
710
- durationType: t.number,
636
+ durationType: t.string,
711
637
  spData: t.type({
712
- spType: t.string,
638
+ spType: t.union([t.string, t.number]),
713
639
  levelUpCost: t.null,
714
640
  maxChargeTime: t.number,
715
641
  spCost: t.number,
716
642
  initSp: t.number,
717
643
  increment: t.number,
718
644
  }),
719
- prefabId: t.string,
645
+ prefabId: t.union([t.string, t.null]),
720
646
  duration: t.number,
721
647
  blackboard: t.array(exports.BlackboardIO),
722
648
  })),
@@ -724,41 +650,43 @@ exports.SkillIO = t.type({
724
650
  exports.SkinIO = t.type({
725
651
  skinId: t.string,
726
652
  charId: t.string,
727
- tokenSkinMap: t.array(t.type({
728
- tokenId: t.string,
729
- tokenSkinId: t.string,
730
- })),
731
- illustId: t.string,
732
- dynIllustId: t.string,
653
+ tokenSkinMap: t.union([
654
+ t.array(t.type({
655
+ tokenId: t.string,
656
+ tokenSkinId: t.string,
657
+ })),
658
+ t.null
659
+ ]),
660
+ illustId: t.union([t.string, t.null]),
661
+ dynIllustId: t.union([t.string, t.null]),
733
662
  avatarId: t.string,
734
- portraitId: t.string,
735
- dynPortraitId: t.string,
736
- dynEntranceId: t.string,
737
- buildingId: t.string,
663
+ portraitId: t.union([t.string, t.null]),
664
+ dynPortraitId: t.union([t.string, t.null]),
665
+ dynEntranceId: t.union([t.string, t.null]),
666
+ buildingId: t.union([t.string, t.null]),
738
667
  battleSkin: t.type({
739
668
  overwritePrefab: t.boolean,
740
- skinOrPrefabId: t.string,
669
+ skinOrPrefabId: t.union([t.string, t.null]),
741
670
  }),
742
671
  isBuySkin: t.boolean,
743
- tmplId: t.string,
744
- voiceId: t.string,
672
+ tmplId: t.union([t.string, t.null]),
673
+ voiceId: t.union([t.string, t.null]),
745
674
  voiceType: t.string,
746
675
  displaySkin: t.type({
747
- skinName: t.string,
748
- colorList: t.tuple([t.string, t.string, t.string, t.string, t.string]),
749
- titleList: t.tuple([t.string, t.string]),
750
- modelName: t.string,
751
- drawerList: t.array(t.string),
752
- skinGroupId: t.string,
753
- skinGroupName: t.string,
676
+ skinName: t.union([t.string, t.null]),
677
+ colorList: t.union([t.tuple([t.string, t.string, t.string, t.string, t.string]), t.null]),
678
+ modelName: t.union([t.string, t.null]),
679
+ drawerList: t.union([t.array(t.string), t.null]),
680
+ skinGroupId: t.union([t.string, t.null]),
681
+ skinGroupName: t.union([t.string, t.null]),
754
682
  skinGroupSortIndex: t.number,
755
- content: t.string,
756
- dialog: t.string,
757
- usage: t.string,
758
- description: t.string,
759
- obtainApproach: t.string,
683
+ content: t.union([t.string, t.null]),
684
+ dialog: t.union([t.string, t.null]),
685
+ usage: t.union([t.string, t.null]),
686
+ description: t.union([t.string, t.null]),
687
+ obtainApproach: t.union([t.string, t.null]),
760
688
  sortId: t.number,
761
- displayTagId: t.string,
689
+ displayTagId: t.union([t.string, t.null]),
762
690
  getTime: t.number,
763
691
  onYear: t.number,
764
692
  onPeriod: t.number,
@@ -770,28 +698,31 @@ exports.StageIO = t.type({
770
698
  difficulty: t.string,
771
699
  performanceStageFlag: t.string,
772
700
  diffGroup: t.string,
773
- unlockCondition: t.array(t.type({
774
- stageId: t.string,
775
- completeState: t.number,
776
- })),
701
+ unlockCondition: t.array(t.union([
702
+ t.type({
703
+ stageId: t.string,
704
+ completeState: t.string,
705
+ }),
706
+ t.null
707
+ ])),
777
708
  stageId: t.string,
778
709
  levelId: t.string,
779
710
  zoneId: t.string,
780
711
  code: t.string,
781
712
  name: t.string,
782
713
  description: t.string,
783
- hardStagedId: t.string,
784
- dangerLevel: t.string,
714
+ hardStagedId: t.union([t.string, t.null]),
715
+ dangerLevel: t.union([t.string, t.null]),
785
716
  dangerPoint: t.number,
786
717
  loadingPicId: t.string,
787
718
  canPractice: t.boolean,
788
719
  canBattleReplay: t.boolean,
789
720
  apCost: t.number,
790
721
  apFailReturn: t.number,
791
- etItemId: t.string,
722
+ etItemId: t.union([t.string, t.null]),
792
723
  etCost: t.number,
793
724
  etFailReturn: t.number,
794
- etButtonStyle: t.string,
725
+ etButtonStyle: t.union([t.string, t.null]),
795
726
  apProtectTimes: t.number,
796
727
  diamondOnceDrop: t.number,
797
728
  practiceTicketCost: t.number,
@@ -803,14 +734,14 @@ exports.StageIO = t.type({
803
734
  passFavor: t.number,
804
735
  completeFavor: t.number,
805
736
  slProgress: t.number,
806
- displayMainItem: t.string,
737
+ displayMainItem: t.union([t.string, t.null]),
807
738
  hilightMark: t.boolean,
808
739
  bossMark: t.boolean,
809
740
  isPredefined: t.boolean,
810
741
  isHardPredefined: t.boolean,
811
742
  isSkillSelectablePredefined: t.boolean,
812
743
  isStoryOnly: t.boolean,
813
- appearanceStyle: t.number,
744
+ appearanceStyle: t.string,
814
745
  stageDropInfo: t.type({
815
746
  firstPassRewards: t.null,
816
747
  firstCompleteRewards: t.null,
@@ -822,15 +753,42 @@ exports.StageIO = t.type({
822
753
  dropType: t.string,
823
754
  })),
824
755
  displayDetailRewards: t.array(t.type({
825
- occPercent: t.number,
756
+ occPercent: t.string,
826
757
  type: t.string,
827
758
  id: t.string,
828
759
  dropType: t.string,
829
760
  })),
830
761
  }),
831
- startButtonOverrideId: t.string,
762
+ canUseCharm: t.boolean,
763
+ canUseTech: t.boolean,
764
+ canUseTrapTool: t.boolean,
765
+ canUseBattlePerformance: t.boolean,
766
+ startButtonOverrideId: t.union([t.string, t.null]),
832
767
  isStagePatch: t.boolean,
833
- mainStageId: t.string,
768
+ mainStageId: t.union([t.string, t.null]),
769
+ extraCondition: t.union([
770
+ t.array(t.type({
771
+ index: t.number,
772
+ template: t.string,
773
+ unlockParam: t.array(t.string),
774
+ })),
775
+ t.null
776
+ ]),
777
+ extraInfo: t.union([
778
+ t.array(t.type({
779
+ stageId: t.string,
780
+ rewards: t.array(t.type({
781
+ id: t.string,
782
+ count: t.number,
783
+ type: t.string,
784
+ })),
785
+ progressInfo: t.type({
786
+ progressType: t.string,
787
+ descList: t.record(t.string, t.string),
788
+ })
789
+ })),
790
+ t.null
791
+ ])
834
792
  }),
835
793
  levels: exports.StageDataIO,
836
794
  });
@@ -849,89 +807,98 @@ exports.OperatorIO = t.type({
849
807
  }),
850
808
  skill: exports.BaseIO,
851
809
  })),
852
- paradox: exports.ParadoxIO,
810
+ paradox: t.union([exports.ParadoxIO, t.null]),
853
811
  data: t.type({
854
812
  name: t.string,
855
813
  description: t.string,
856
814
  canUseGeneralPotentialItem: t.boolean,
857
- potentialItemId: t.string,
858
- nationId: t.string,
859
- groupId: t.string,
860
- teamId: t.string,
861
- displayNumber: t.string,
862
- tokenKey: t.string,
815
+ potentialItemId: t.union([t.string, t.null]),
816
+ nationId: t.union([t.string, t.null]),
817
+ groupId: t.union([t.string, t.null]),
818
+ teamId: t.union([t.string, t.null]),
819
+ displayNumber: t.union([t.string, t.null]),
820
+ // tokenKey: t.string,
863
821
  appellation: t.string,
864
822
  position: t.string,
865
823
  tagList: t.array(t.string),
866
- itemUsage: t.string,
867
- itemDesc: t.string,
868
- itemObtainApproach: t.string,
824
+ itemUsage: t.union([t.string, t.null]),
825
+ itemDesc: t.union([t.string, t.null]),
826
+ itemObtainApproach: t.union([t.string, t.null]),
869
827
  isNotObtainable: t.boolean,
870
828
  isSpChar: t.boolean,
871
829
  maxPotentialLevel: t.number,
872
830
  rarity: t.string,
873
831
  profession: t.string,
874
832
  subProfessionId: t.string,
875
- trait: t.type({
876
- candidates: t.array(t.type({
877
- unlockCondition: exports.OperatorUnlockCondIO,
878
- requiredPotentialRank: t.number,
879
- blackboard: t.array(exports.BlackboardIO),
880
- overrideDescripton: t.string,
881
- prefabKey: t.string,
882
- rangeId: t.string,
883
- })),
884
- }),
833
+ trait: t.union([
834
+ t.type({
835
+ candidates: t.array(t.type({
836
+ unlockCondition: exports.OperatorUnlockCondIO,
837
+ requiredPotentialRank: t.number,
838
+ blackboard: t.array(exports.BlackboardIO),
839
+ overrideDescripton: t.union([t.string, t.null]),
840
+ prefabKey: t.union([t.string, t.null]),
841
+ rangeId: t.union([t.string, t.null]),
842
+ })),
843
+ }),
844
+ t.null
845
+ ]),
885
846
  phases: t.array(t.type({
886
847
  characterPrefabKey: t.string,
887
848
  rangeId: t.string,
888
849
  maxLevel: t.number,
889
850
  attributesKeyFrames: t.array(exports.AttributesKeyFrameIO),
890
- evolveCost: t.array(exports.LevelUpCostIO),
851
+ evolveCost: t.union([t.array(exports.LevelUpCostIO), t.null]),
891
852
  })),
892
853
  skills: t.array(t.type({
893
854
  skillId: t.string,
894
- overridePrefabKey: t.string,
895
- overrideTokenKey: t.string,
855
+ overridePrefabKey: t.union([t.string, t.null]),
856
+ overrideTokenKey: t.union([t.string, t.null]),
896
857
  levelUpCostCond: t.array(exports.LevelUpCostCondIO),
897
858
  unlockCond: exports.OperatorUnlockCondIO,
898
859
  })),
899
- talents: t.array(t.type({
900
- candidates: t.array(t.type({
901
- unlockCondition: exports.OperatorUnlockCondIO,
902
- requiredPotentialRank: t.number,
903
- prefabKey: t.string,
904
- name: t.string,
905
- description: t.string,
906
- rangeId: t.string,
907
- blackboard: t.array(exports.BlackboardIO),
860
+ talents: t.union([
861
+ t.array(t.type({
862
+ candidates: t.array(t.type({
863
+ unlockCondition: exports.OperatorUnlockCondIO,
864
+ requiredPotentialRank: t.number,
865
+ prefabKey: t.string,
866
+ name: t.string,
867
+ description: t.string,
868
+ rangeId: t.union([t.string, t.null]),
869
+ blackboard: t.array(exports.BlackboardIO),
870
+ })),
908
871
  })),
909
- })),
872
+ t.null
873
+ ]),
910
874
  potentialRanks: t.array(t.type({
911
- type: t.number,
875
+ type: t.string,
912
876
  description: t.string,
913
- buff: t.type({
914
- attributes: t.type({
915
- abnormalFlags: t.null,
916
- abnormalImmunes: t.null,
917
- abnormalAntis: t.null,
918
- abnormalCombos: t.null,
919
- abnormalComboImmunes: t.null,
920
- attributeModifiers: t.array(t.type({
921
- attributeType: t.number,
922
- formulaItem: t.number,
923
- value: t.number,
924
- loadFromBlackboard: t.boolean,
925
- fetchBaseValueFromSourceEntity: t.boolean,
926
- })),
877
+ buff: t.union([
878
+ t.type({
879
+ attributes: t.type({
880
+ abnormalFlags: t.null,
881
+ abnormalImmunes: t.null,
882
+ abnormalAntis: t.null,
883
+ abnormalCombos: t.null,
884
+ abnormalComboImmunes: t.null,
885
+ attributeModifiers: t.array(t.type({
886
+ attributeType: t.string,
887
+ formulaItem: t.string,
888
+ value: t.number,
889
+ loadFromBlackboard: t.boolean,
890
+ fetchBaseValueFromSourceEntity: t.boolean,
891
+ })),
892
+ }),
927
893
  }),
928
- }),
894
+ t.null
895
+ ]),
929
896
  equivalentCost: t.null,
930
897
  })),
931
898
  favorKeyFrames: t.array(exports.AttributesKeyFrameIO),
932
899
  allSkillLvlup: t.array(t.type({
933
900
  unlockCond: exports.OperatorUnlockCondIO,
934
- lvlUpCost: t.array(exports.LevelUpCostIO),
901
+ lvlUpCost: t.union([t.array(exports.LevelUpCostIO), t.null]),
935
902
  })),
936
903
  }),
937
904
  });