fleethub-core 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,46 +3,6 @@
3
3
  /**
4
4
  */
5
5
  export function set_panic_hook(): void;
6
- export interface EBonuses {
7
- firepower: number;
8
- torpedo: number;
9
- anti_air: number;
10
- armor: number;
11
- evasion: number;
12
- asw: number;
13
- los: number;
14
- bombing: number;
15
- accuracy: number;
16
- range: number;
17
- }
18
-
19
- export interface ShipInput {
20
- ship_id: number;
21
- ctype: number;
22
- stype: number;
23
- yomi: string;
24
- }
25
-
26
- export interface GearInput {
27
- gear_id: number;
28
- types: GearTypeIdArray;
29
- firepower: number;
30
- torpedo: number;
31
- anti_air: number;
32
- armor: number;
33
- evasion: number;
34
- asw: number;
35
- los: number;
36
- bombing: number;
37
- accuracy: number;
38
- range: number;
39
- radius: number;
40
- stars: number;
41
- ace: number;
42
- }
43
-
44
- export type GearVecInput = GearInput[];
45
-
46
6
  export type ShipType =
47
7
  | "Unknown"
48
8
  | "DE"
@@ -78,46 +38,40 @@ export type ShipCategory =
78
38
  | "Submarine"
79
39
  | "AuxiliaryShip";
80
40
 
81
- export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
41
+ export type ShellingSpecialAttack =
42
+ | { DayCutin: DayCutin }
43
+ | { FleetCutin: FleetCutin };
82
44
 
83
- export type AirState =
84
- | "AirSupremacy"
85
- | "AirSuperiority"
86
- | "AirParity"
87
- | "AirDenial"
88
- | "AirIncapability";
45
+ export type DayCutin =
46
+ | "MainMain"
47
+ | "MainAp"
48
+ | "MainRadar"
49
+ | "MainSec"
50
+ | "DoubleAttack"
51
+ | "FBA"
52
+ | "BBA"
53
+ | "BA"
54
+ | "Zuiun"
55
+ | "AirSea";
89
56
 
90
- export interface FleetCutinAnalysis {
91
- shelling: FleetCutinInfo[];
92
- night: FleetCutinInfo[];
57
+ export interface ShellingSupportSimulatorParams {
58
+ attacker_formation: Formation;
59
+ target_formation: Formation;
60
+ engagement: Engagement;
61
+ custom_mods: CustomModifiers;
93
62
  }
94
63
 
95
- export interface FleetCutinInfo {
96
- cutin: FleetCutin;
97
- rate: number | null;
98
- formation: Formation;
99
- items: FleetCutinInfoItem[];
100
- }
64
+ export type ShellingAttackType = "Normal" | "Carrier";
101
65
 
102
- export interface FleetCutinInfoItem {
103
- ship_id: number;
104
- cutin: FleetCutin;
105
- fleet_cutin_mod: number;
106
- stats: AttackStats;
107
- }
66
+ export type AirWaveType = "Jet" | "LandBase" | "Carrier";
108
67
 
109
- export interface DamageInfo {
110
- miss_damage_min: number;
111
- miss_damage_max: number;
112
- normal_damage_min: number;
113
- normal_damage_max: number;
114
- critical_damage_min: number;
115
- critical_damage_max: number;
116
- normal_scratch_rate: number;
117
- critical_scratch_rate: number;
118
- damage_map: NumMap<number, number>;
119
- damage_state_map: NumMap<DamageState, number>;
120
- }
68
+ export type OrgType =
69
+ | "Single"
70
+ | "CarrierTaskForce"
71
+ | "SurfaceTaskForce"
72
+ | "TransportEscort"
73
+ | "EnemySingle"
74
+ | "EnemyCombined";
121
75
 
122
76
  export interface WarfareContext {
123
77
  attacker_env: WarfareShipEnvironment;
@@ -136,14 +90,6 @@ export interface WarfareShipEnvironment {
136
90
  fleet_los_mod: number | null;
137
91
  }
138
92
 
139
- export type OrgType =
140
- | "Single"
141
- | "CarrierTaskForce"
142
- | "SurfaceTaskForce"
143
- | "TransportEscort"
144
- | "EnemySingle"
145
- | "EnemyCombined";
146
-
147
93
  export interface CompMeta {
148
94
  fleets: Record<FleetType, FleetMeta>;
149
95
  }
@@ -159,32 +105,6 @@ export interface ShipMeta {
159
105
  ship_id: number;
160
106
  }
161
107
 
162
- export interface MasterData {
163
- gears: MasterGear[];
164
- gear_attrs: MasterAttrRule<GearAttr>[];
165
- ships: MasterShip[];
166
- ship_attrs: MasterAttrRule<ShipAttr>[];
167
- ibonuses: MasterIBonuses;
168
- equippable: MasterEquippable;
169
- formation: NestedFormationDef[];
170
- anti_air_cutin: AntiAirCutinDef[];
171
- day_cutin: DayCutinDef[];
172
- night_cutin: NightCutinDef[];
173
- }
174
-
175
- export interface MasterConfig {
176
- formation: NestedFormationDef[];
177
- anti_air_cutin: AntiAirCutinDef[];
178
- day_cutin: DayCutinDef[];
179
- night_cutin: NightCutinDef[];
180
- }
181
-
182
- export interface MasterAttrRule<T> {
183
- tag: T;
184
- name: string;
185
- expr: string;
186
- }
187
-
188
108
  export interface AttackPower {
189
109
  precap: number;
190
110
  is_capped: boolean;
@@ -210,8 +130,9 @@ export interface AttackPowerParams {
210
130
  }
211
131
 
212
132
  export interface CustomModifiers {
213
- precap_mod: AttackPowerModifier;
214
- postcap_mod: AttackPowerModifier;
133
+ precap_mod?: AttackPowerModifier;
134
+ postcap_mod?: AttackPowerModifier;
135
+ basic_power_mod?: AttackPowerModifier;
215
136
  }
216
137
 
217
138
  export interface SpecialEnemyModifiers {
@@ -232,23 +153,33 @@ export interface AttackPowerModifier {
232
153
 
233
154
  export type NumMap<K, V> = Partial<Record<K, V>>;
234
155
 
235
- export type ShellingSpecialAttack =
236
- | { DayCutin: DayCutin }
237
- | { FleetCutin: FleetCutin };
156
+ export type Role = "Main" | "Escort";
238
157
 
239
- export type DayCutin =
240
- | "MainMain"
241
- | "MainAp"
242
- | "MainRadar"
243
- | "MainSec"
244
- | "DoubleAttack"
245
- | "FBA"
246
- | "BBA"
247
- | "BA"
248
- | "Zuiun"
249
- | "AirSea";
158
+ export interface MasterData {
159
+ gears: MasterGear[];
160
+ gear_attrs: MasterAttrRule<GearAttr>[];
161
+ ships: MasterShip[];
162
+ ship_attrs: MasterAttrRule<ShipAttr>[];
163
+ ibonuses: MasterIBonuses;
164
+ equippable: MasterEquippable;
165
+ formation: NestedFormationDef[];
166
+ anti_air_cutin: AntiAirCutinDef[];
167
+ day_cutin: DayCutinDef[];
168
+ night_cutin: NightCutinDef[];
169
+ }
250
170
 
251
- export type Role = "Main" | "Escort";
171
+ export interface MasterConfig {
172
+ formation: NestedFormationDef[];
173
+ anti_air_cutin: AntiAirCutinDef[];
174
+ day_cutin: DayCutinDef[];
175
+ night_cutin: NightCutinDef[];
176
+ }
177
+
178
+ export interface MasterAttrRule<T> {
179
+ tag: T;
180
+ name: string;
181
+ expr: string;
182
+ }
252
183
 
253
184
  export type GearCategory =
254
185
  | "Fighter"
@@ -327,13 +258,6 @@ export type GearType =
327
258
 
328
259
  export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
329
260
 
330
- export interface ShellingSupportSimulatorParams {
331
- attacker_formation: Formation;
332
- target_formation: Formation;
333
- engagement: Engagement;
334
- custom_mods: CustomModifiers;
335
- }
336
-
337
261
  export interface CompDayCutinRateInfo {
338
262
  main: FleetDayCutinRateInfo;
339
263
  escort: FleetDayCutinRateInfo | null;
@@ -356,6 +280,46 @@ export interface DayCutinRateInfo {
356
280
  total_cutin_rate: number | null;
357
281
  }
358
282
 
283
+ export interface EBonuses {
284
+ firepower: number;
285
+ torpedo: number;
286
+ anti_air: number;
287
+ armor: number;
288
+ evasion: number;
289
+ asw: number;
290
+ los: number;
291
+ bombing: number;
292
+ accuracy: number;
293
+ range: number;
294
+ }
295
+
296
+ export interface ShipInput {
297
+ ship_id: number;
298
+ ctype: number;
299
+ stype: number;
300
+ yomi: string;
301
+ }
302
+
303
+ export interface GearInput {
304
+ gear_id: number;
305
+ types: GearTypeIdArray;
306
+ firepower: number;
307
+ torpedo: number;
308
+ anti_air: number;
309
+ armor: number;
310
+ evasion: number;
311
+ asw: number;
312
+ los: number;
313
+ bombing: number;
314
+ accuracy: number;
315
+ range: number;
316
+ radius: number;
317
+ stars: number;
318
+ ace: number;
319
+ }
320
+
321
+ export type GearVecInput = GearInput[];
322
+
359
323
  export type ShipAttr =
360
324
  | "Unknown"
361
325
  | "Abyssal"
@@ -372,6 +336,15 @@ export type ShipAttr =
372
336
  | "BattleshipSummerPrincess"
373
337
  | "HeavyCruiserSummerPrincess";
374
338
 
339
+ export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
340
+
341
+ export type AirState =
342
+ | "AirSupremacy"
343
+ | "AirSuperiority"
344
+ | "AirParity"
345
+ | "AirDenial"
346
+ | "AirIncapability";
347
+
375
348
  export interface MasterIBonuses {
376
349
  shelling_power: MasterIBonusRule[];
377
350
  carrier_shelling_power: MasterIBonusRule[];
@@ -396,30 +369,46 @@ export interface MasterIBonusRule {
396
369
  formula: CompiledEvaler;
397
370
  }
398
371
 
399
- export type ShellingAttackType = "Normal" | "Carrier";
400
-
401
372
  export interface NightSituation {
402
373
  night_contact_rank: ContactRank | null;
403
374
  starshell: boolean;
404
375
  searchlight: boolean;
405
376
  }
406
377
 
407
- export interface CompContactChanceInfo {
408
- single: AirstrikeContactChance[] | null;
409
- combined: AirstrikeContactChance[] | null;
378
+ export interface FleetCutinAnalysis {
379
+ shelling: FleetCutinInfo[];
380
+ night: FleetCutinInfo[];
410
381
  }
411
382
 
412
- export interface AirstrikeContactChance {
413
- air_state: AirState;
414
- trigger_rate: number;
415
- rank3: number;
416
- rank2: number;
417
- rank1: number;
418
- total: number;
383
+ export interface FleetCutinInfo {
384
+ cutin: FleetCutin;
385
+ rate: number | null;
386
+ formation: Formation;
387
+ items: FleetCutinInfoItem[];
419
388
  }
420
389
 
421
- export type GearAttr =
422
- | "Unknown"
390
+ export interface FleetCutinInfoItem {
391
+ ship_id: number;
392
+ cutin: FleetCutin;
393
+ fleet_cutin_mod: number;
394
+ stats: AttackStats;
395
+ }
396
+
397
+ export interface DamageInfo {
398
+ miss_damage_min: number;
399
+ miss_damage_max: number;
400
+ normal_damage_min: number;
401
+ normal_damage_max: number;
402
+ critical_damage_min: number;
403
+ critical_damage_max: number;
404
+ normal_scratch_rate: number;
405
+ critical_scratch_rate: number;
406
+ damage_map: NumMap<number, number>;
407
+ damage_state_map: NumMap<DamageState, number>;
408
+ }
409
+
410
+ export type GearAttr =
411
+ | "Unknown"
423
412
  | "Abyssal"
424
413
  | "HighAngleMount"
425
414
  | "NightFighter"
@@ -467,6 +456,131 @@ export type SingleFormation =
467
456
 
468
457
  export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
469
458
 
459
+ export interface CompAntiAirInfo {
460
+ fleet_adjusted_anti_air: number;
461
+ ships: ShipAntiAirInfo[];
462
+ anti_air_cutin_chance: [number, number][];
463
+ }
464
+
465
+ export interface ShipAntiAirInfo {
466
+ ship_id: number;
467
+ adjusted_anti_air: number | null;
468
+ proportional_shotdown_rate: number | null;
469
+ fixed_shotdown_number: number | null;
470
+ guaranteed: number | null;
471
+ anti_air_cutin_chance: [number, number][];
472
+ anti_air_propellant_barrage_chance: number | null;
473
+ }
474
+
475
+ export interface CompContactChanceInfo {
476
+ single: AirstrikeContactChance[] | null;
477
+ combined: AirstrikeContactChance[] | null;
478
+ }
479
+
480
+ export interface AirstrikeContactChance {
481
+ air_state: AirState;
482
+ trigger_rate: number;
483
+ rank3: number;
484
+ rank2: number;
485
+ rank1: number;
486
+ total: number;
487
+ }
488
+
489
+ export type SlotSizeVec = (number | null)[];
490
+
491
+ export type NightAttackType = "Normal" | "ArkRoyal" | "Carrier";
492
+
493
+ export type NightSpecialAttack =
494
+ | { NightCutin: NightCutin }
495
+ | { FleetCutin: FleetCutin };
496
+
497
+ export type NightCutin =
498
+ | "MainTorpRadar"
499
+ | "TorpLookoutRadar"
500
+ | "TorpTsloTorp"
501
+ | "TorpTsloDrum"
502
+ | "DoubleAttack"
503
+ | "TorpTorpMain"
504
+ | "TorpTorpTorp"
505
+ | "MainMainSec"
506
+ | "MainMainMain"
507
+ | "SubTorpTorp"
508
+ | "SubRadarTorp"
509
+ | "Cvci1_25"
510
+ | "Cvci1_20"
511
+ | "Cvci1_18"
512
+ | "Photobomber";
513
+
514
+ export interface MasterGear {
515
+ gear_id: number;
516
+ name: string;
517
+ types: GearTypeIdArray;
518
+ special_type?: number;
519
+ max_hp?: number;
520
+ firepower?: number;
521
+ armor?: number;
522
+ torpedo?: number;
523
+ anti_air?: number;
524
+ speed?: number;
525
+ bombing?: number;
526
+ asw?: number;
527
+ los?: number;
528
+ luck?: number;
529
+ accuracy?: number;
530
+ evasion?: number;
531
+ range?: number;
532
+ radius?: number;
533
+ cost?: number;
534
+ improvable?: boolean;
535
+ ship_anti_air_resistance?: number;
536
+ fleet_anti_air_resistance?: number;
537
+ }
538
+
539
+ export interface MasterEquippable {
540
+ equip_stype: EquipStype[];
541
+ equip_exslot: number[];
542
+ equip_ship: MstEquipShip[];
543
+ equip_exslot_ship: MstEquipExslotShip[];
544
+ }
545
+
546
+ export interface MstEquipExslotShip {
547
+ api_slotitem_id: number;
548
+ api_ship_ids: number[];
549
+ }
550
+
551
+ export interface MstEquipShip {
552
+ api_ship_id: number;
553
+ api_equip_type: number[];
554
+ }
555
+
556
+ export interface EquipStype {
557
+ id: number;
558
+ equip_type: number[];
559
+ }
560
+
561
+ export interface HitRate {
562
+ total: number;
563
+ normal: number;
564
+ critical: number;
565
+ }
566
+
567
+ export interface HitRateParams {
568
+ accuracy_term: number;
569
+ evasion_term: number;
570
+ target_morale_mod: number;
571
+ critical_rate_constant: number;
572
+ critical_percentage_bonus: number;
573
+ hit_percentage_bonus: number;
574
+ }
575
+
576
+ export type NightBattleAttackType =
577
+ | { t: "NightAttack"; c: NightAttackType }
578
+ | { t: "Asw"; c: AswAttackType };
579
+
580
+ export type DayBattleAttackType =
581
+ | { t: "Shelling"; c: ShellingAttackType }
582
+ | { t: "Asw"; c: AswAttackType };
583
+
470
584
  export interface AttackInfo<AttackType, Cutin> {
471
585
  attack_type: AttackType;
472
586
  items: AttackInfoItem<Cutin>[];
@@ -488,22 +602,6 @@ export interface AttackStats {
488
602
  damage: DamageInfo | null;
489
603
  }
490
604
 
491
- export interface CompAntiAirInfo {
492
- fleet_adjusted_anti_air: number;
493
- ships: ShipAntiAirInfo[];
494
- anti_air_cutin_chance: [number, number][];
495
- }
496
-
497
- export interface ShipAntiAirInfo {
498
- ship_id: number;
499
- adjusted_anti_air: number | null;
500
- proportional_shotdown_rate: number | null;
501
- fixed_shotdown_number: number | null;
502
- guaranteed: number | null;
503
- anti_air_cutin_chance: [number, number][];
504
- anti_air_propellant_barrage_chance: number | null;
505
- }
506
-
507
605
  export type ShipStateMap = Record<ShipKey, ShipState>;
508
606
 
509
607
  export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
@@ -554,7 +652,7 @@ export interface FleetState {
554
652
  s7?: ShipState;
555
653
  }
556
654
 
557
- export interface ShipState {
655
+ export interface ShipState extends GearVecState, SlotSizeVecState {
558
656
  id?: string;
559
657
  ship_id: number;
560
658
  level?: number;
@@ -571,26 +669,23 @@ export interface ShipState {
571
669
  asw_mod?: number;
572
670
  los_mod?: number;
573
671
  luck_mod?: number;
574
- g1?: GearState;
575
- g2?: GearState;
576
- g3?: GearState;
577
- g4?: GearState;
578
- g5?: GearState;
579
- gx?: GearState;
672
+ }
673
+
674
+ export interface SlotSizeVecState {
580
675
  ss1?: number;
581
676
  ss2?: number;
582
677
  ss3?: number;
583
678
  ss4?: number;
584
679
  ss5?: number;
585
- overrides?: ShipOverrides;
586
680
  }
587
681
 
588
- export interface ShipOverrides {
589
- naked_max_hp?: number;
590
- naked_luck?: number;
591
- naked_evasion?: number;
592
- naked_asw?: number;
593
- naked_los?: number;
682
+ export interface GearVecState {
683
+ g1?: GearState;
684
+ g2?: GearState;
685
+ g3?: GearState;
686
+ g4?: GearState;
687
+ g5?: GearState;
688
+ gx?: GearState;
594
689
  }
595
690
 
596
691
  export interface GearState {
@@ -600,155 +695,6 @@ export interface GearState {
600
695
  stars?: number;
601
696
  }
602
697
 
603
- export interface MasterEquippable {
604
- equip_stype: EquipStype[];
605
- equip_exslot: number[];
606
- equip_ship: MstEquipShip[];
607
- equip_exslot_ship: MstEquipExslotShip[];
608
- }
609
-
610
- export interface MstEquipExslotShip {
611
- api_slotitem_id: number;
612
- api_ship_ids: number[];
613
- }
614
-
615
- export interface MstEquipShip {
616
- api_ship_id: number;
617
- api_equip_type: number[];
618
- }
619
-
620
- export interface EquipStype {
621
- id: number;
622
- equip_type: number[];
623
- }
624
-
625
- export type NightBattleAttackType =
626
- | { t: "NightAttack"; c: NightAttackType }
627
- | { t: "Asw"; c: AswAttackType };
628
-
629
- export type DayBattleAttackType =
630
- | { t: "Shelling"; c: ShellingAttackType }
631
- | { t: "Asw"; c: AswAttackType };
632
-
633
- export type SlotSizeVec = (number | null)[];
634
-
635
- export type Side = "Player" | "Enemy";
636
-
637
- export type NightAttackType = "Normal" | "ArkRoyal" | "Carrier";
638
-
639
- export type NightSpecialAttack =
640
- | { NightCutin: NightCutin }
641
- | { FleetCutin: FleetCutin };
642
-
643
- export type NightCutin =
644
- | "MainTorpRadar"
645
- | "TorpLookoutRadar"
646
- | "TorpTsloTorp"
647
- | "TorpTsloDrum"
648
- | "DoubleAttack"
649
- | "TorpTorpMain"
650
- | "TorpTorpTorp"
651
- | "MainMainSec"
652
- | "MainMainMain"
653
- | "SubTorpTorp"
654
- | "SubRadarTorp"
655
- | "Cvci1_25"
656
- | "Cvci1_20"
657
- | "Cvci1_18"
658
- | "Photobomber";
659
-
660
- export interface BattleConfig {
661
- formation: Record<Formation, NestedFormationDef>;
662
- anti_air_cutin: Record<number, AntiAirCutinDef>;
663
- day_cutin: Record<DayCutin, DayCutinDef>;
664
- night_cutin: Record<NightCutin, NightCutinDef>;
665
- }
666
-
667
- export interface NightCutinDef {
668
- tag: NightCutin;
669
- hits: number;
670
- type_factor: number | null;
671
- power_mod: number | null;
672
- accuracy_mod: number | null;
673
- }
674
-
675
- export interface DayCutinDef {
676
- tag: DayCutin;
677
- hits: number;
678
- type_factor: number | null;
679
- power_mod: number | null;
680
- accuracy_mod: number | null;
681
- }
682
-
683
- export interface AntiAirCutinDef {
684
- id: number;
685
- type_factor: number | null;
686
- multiplier: number | null;
687
- guaranteed: number | null;
688
- sequential: boolean | null;
689
- }
690
-
691
- export type NestedFormationDef =
692
- | FormationDef
693
- | { top_half: FormationDef; bottom_half: FormationDef };
694
-
695
- export interface FormationDef {
696
- tag: Formation;
697
- protection_rate: number | null;
698
- fleet_anti_air_mod: number;
699
- shelling: FormationWarfareDef;
700
- torpedo: FormationWarfareDef;
701
- asw: FormationWarfareDef;
702
- night: FormationWarfareDef;
703
- shelling_support: FormationWarfareDef;
704
- }
705
-
706
- export interface FormationWarfareDef {
707
- power_mod: number | null;
708
- accuracy_mod: number | null;
709
- evasion_mod: number | null;
710
- }
711
-
712
- export interface MasterGear {
713
- gear_id: number;
714
- name: string;
715
- types: GearTypeIdArray;
716
- special_type?: number;
717
- max_hp?: number;
718
- firepower?: number;
719
- armor?: number;
720
- torpedo?: number;
721
- anti_air?: number;
722
- speed?: number;
723
- bombing?: number;
724
- asw?: number;
725
- los?: number;
726
- luck?: number;
727
- accuracy?: number;
728
- evasion?: number;
729
- range?: number;
730
- radius?: number;
731
- cost?: number;
732
- improvable?: boolean;
733
- ship_anti_air_resistance?: number;
734
- fleet_anti_air_resistance?: number;
735
- }
736
-
737
- export interface HitRate {
738
- total: number;
739
- normal: number;
740
- critical: number;
741
- }
742
-
743
- export interface HitRateParams {
744
- accuracy_term: number;
745
- evasion_term: number;
746
- target_morale_mod: number;
747
- critical_rate_constant: number;
748
- critical_percentage_bonus: number;
749
- hit_percentage_bonus: number;
750
- }
751
-
752
698
  export interface MasterShip {
753
699
  ship_id: number;
754
700
  name: string;
@@ -766,6 +712,7 @@ export interface MasterShip {
766
712
  los: StatInterval;
767
713
  luck: StatInterval;
768
714
  torpedo_accuracy?: number;
715
+ basic_evasion_term?: number;
769
716
  speed: number;
770
717
  range?: number;
771
718
  fuel?: number;
@@ -807,30 +754,61 @@ export interface WarfareAnalyzerShipEnvironment {
807
754
  custom_mods: CustomModifiers;
808
755
  }
809
756
 
810
- export interface FleetNightCutinRateInfo {
811
- night_contact_chance: NightContactChance;
812
- ships: ShipNightCutinRateInfo[];
757
+ export type GearTypeIdArray = [number, number, number, number, number];
758
+
759
+ export type Side = "Player" | "Enemy";
760
+
761
+ export interface BattleConfig {
762
+ formation: Record<Formation, NestedFormationDef>;
763
+ anti_air_cutin: Record<number, AntiAirCutinDef>;
764
+ day_cutin: Record<DayCutin, DayCutinDef>;
765
+ night_cutin: Record<NightCutin, NightCutinDef>;
813
766
  }
814
767
 
815
- export interface ShipNightCutinRateInfo {
816
- ship_id: number;
817
- normal: NightCutinRateInfo;
818
- chuuha: NightCutinRateInfo;
768
+ export interface NightCutinDef {
769
+ tag: NightCutin;
770
+ hits: number;
771
+ type_factor: number | null;
772
+ power_mod: number | null;
773
+ accuracy_mod: number | null;
819
774
  }
820
775
 
821
- export interface NightCutinRateInfo {
822
- cutin_term: number | null;
823
- rates: [NightCutin | null, number | null][];
776
+ export interface DayCutinDef {
777
+ tag: DayCutin;
778
+ hits: number;
779
+ type_factor: number | null;
780
+ power_mod: number | null;
781
+ accuracy_mod: number | null;
824
782
  }
825
783
 
826
- export interface NightContactChance {
827
- rank1: number;
828
- rank2: number;
829
- rank3: number;
830
- total: number;
784
+ export interface AntiAirCutinDef {
785
+ id: number;
786
+ type_factor: number | null;
787
+ multiplier: number | null;
788
+ guaranteed: number | null;
789
+ sequential: boolean | null;
831
790
  }
832
791
 
833
- export type GearTypeIdArray = [number, number, number, number, number];
792
+ export type NestedFormationDef =
793
+ | FormationDef
794
+ | { top_half: FormationDef; bottom_half: FormationDef };
795
+
796
+ export interface FormationDef {
797
+ tag: Formation;
798
+ protection_rate: number | null;
799
+ fleet_anti_air_mod: number;
800
+ shelling: FormationWarfareDef;
801
+ torpedo: FormationWarfareDef;
802
+ asw: FormationWarfareDef;
803
+ night: FormationWarfareDef;
804
+ shelling_support: FormationWarfareDef;
805
+ }
806
+
807
+ export interface FormationWarfareDef {
808
+ power_mod: number | null;
809
+ accuracy_mod: number | null;
810
+ evasion_mod: number | null;
811
+ }
834
812
 
835
813
  export type SpecialEnemyType =
836
814
  | "None"
@@ -857,8 +835,6 @@ export type FleetCutin =
857
835
 
858
836
  export type ContactRank = "Rank1" | "Rank2" | "Rank3";
859
837
 
860
- export type AirWaveType = "Jet" | "LandBase" | "Carrier";
861
-
862
838
  export interface SimulatorResult {
863
839
  items: SimulatorResultItem[];
864
840
  sunk_vec: [number, number, number][];
@@ -873,6 +849,29 @@ export interface SimulatorResultItem {
873
849
 
874
850
  export type AswAttackType = "DepthCharge" | "Aircraft";
875
851
 
852
+ export interface FleetNightCutinRateInfo {
853
+ night_contact_chance: NightContactChance;
854
+ ships: ShipNightCutinRateInfo[];
855
+ }
856
+
857
+ export interface ShipNightCutinRateInfo {
858
+ ship_id: number;
859
+ normal: NightCutinRateInfo;
860
+ chuuha: NightCutinRateInfo;
861
+ }
862
+
863
+ export interface NightCutinRateInfo {
864
+ cutin_term: number | null;
865
+ rates: [NightCutin | null, number | null][];
866
+ }
867
+
868
+ export interface NightContactChance {
869
+ rank1: number;
870
+ rank2: number;
871
+ rank3: number;
872
+ total: number;
873
+ }
874
+
876
875
  /**
877
876
  */
878
877
  export class AirSquadron {