fleethub-core 1.12.17 → 1.12.18

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.
@@ -58,6 +58,8 @@ export type ShipAttr =
58
58
 
59
59
  export type Histogram<K extends keyof any, V> = Partial<Record<K, V>>;
60
60
 
61
+ export type AswAttackType = "DepthCharge" | "Aerial";
62
+
61
63
  export type AttackType =
62
64
  | { t: "Asw"; c: AswAttackType }
63
65
  | { t: "Shelling"; c: ShellingType }
@@ -65,36 +67,24 @@ export type AttackType =
65
67
  | { t: "Torpedo" }
66
68
  | { t: "SupportShelling"; c: SupportShellingType };
67
69
 
68
- export type SupportShellingType = ShellingType;
69
-
70
70
  export type DayPhaseAttackType =
71
71
  | { t: "Shelling"; c: ShellingType }
72
72
  | { t: "Asw"; c: AswAttackType };
73
73
 
74
- export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
74
+ export type TorpedoAttackType = null;
75
75
 
76
- export type ShellingType = "Normal" | "Aerial";
76
+ export type SupportShellingType = ShellingType;
77
77
 
78
- export type TorpedoAttackType = null;
78
+ export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
79
79
 
80
80
  export type NightPhaseAttackType =
81
81
  | { t: "Night"; c: NightAttackType }
82
82
  | { t: "Asw"; c: AswAttackType };
83
83
 
84
- export type AswAttackType = "DepthCharge" | "Aerial";
84
+ export type ShellingType = "Normal" | "Aerial";
85
85
 
86
86
  export type GearTypeIdArray = [number, number, number, number, number];
87
87
 
88
- export type FleetCutin =
89
- | "NelsonTouch"
90
- | "NagatoClassCutin"
91
- | "ColoradoClassCutin"
92
- | "KongouClassCutin"
93
- | "Yamato2ShipCutin"
94
- | "Yamato3ShipCutin"
95
- | "QueenElizabethClassCutin"
96
- | "RichelieuClassCutin";
97
-
98
88
  export type NightCutinLike = NightCutin | FleetCutin;
99
89
 
100
90
  export type DayCutin =
@@ -133,6 +123,16 @@ export type NightCutin =
133
123
  | "Photobomber"
134
124
  | "Cvci1_18";
135
125
 
126
+ export type FleetCutin =
127
+ | "NelsonTouch"
128
+ | "NagatoClassCutin"
129
+ | "ColoradoClassCutin"
130
+ | "KongouClassCutin"
131
+ | "Yamato2ShipCutin"
132
+ | "Yamato3ShipCutin"
133
+ | "QueenElizabethClassCutin"
134
+ | "RichelieuClassCutin";
135
+
136
136
  export type DayCutinLike = DayCutin | FleetCutin;
137
137
 
138
138
  export interface AttackReport<T> {
@@ -159,6 +159,10 @@ export interface DamageReport {
159
159
  damage_state_density: Histogram<DamageState, number>;
160
160
  }
161
161
 
162
+ export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
163
+ observation_term: number | null;
164
+ }
165
+
162
166
  export interface ShipDayCutinAnalysis {
163
167
  ship_id: number;
164
168
  role: Role;
@@ -167,10 +171,6 @@ export interface ShipDayCutinAnalysis {
167
171
  rank2: DayCutinReport;
168
172
  }
169
173
 
170
- export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
171
- observation_term: number | null;
172
- }
173
-
174
174
  export interface CompDayCutinAnalysis {
175
175
  rank3_air_state: AirState;
176
176
  rank2_air_state: AirState;
@@ -179,9 +179,11 @@ export interface CompDayCutinAnalysis {
179
179
  ships: ShipDayCutinAnalysis[];
180
180
  }
181
181
 
182
- export interface CompNightCutinAnalysis {
183
- night_contact_chance: NightContactChance;
184
- ships: ShipNightCutinAnalysis[];
182
+ export interface ShipNightCutinAnalysis {
183
+ ship_id: number;
184
+ index: number;
185
+ normal: NightCutinActionReport;
186
+ chuuha: NightCutinActionReport;
185
187
  }
186
188
 
187
189
  export interface NightContactChance {
@@ -190,17 +192,17 @@ export interface NightContactChance {
190
192
  rank3: number;
191
193
  }
192
194
 
195
+ export interface CompNightCutinAnalysis {
196
+ night_contact_chance: NightContactChance;
197
+ ships: ShipNightCutinAnalysis[];
198
+ }
199
+
193
200
  export interface NightCutinActionReport
194
201
  extends ActionReport<NightPhaseAttackStyle> {
195
202
  cutin_term: number | null;
196
203
  }
197
204
 
198
- export interface ShipNightCutinAnalysis {
199
- ship_id: number;
200
- index: number;
201
- normal: NightCutinActionReport;
202
- chuuha: NightCutinActionReport;
203
- }
205
+ export type StatInterval = [number | null, number | null];
204
206
 
205
207
  export interface MasterShip {
206
208
  ship_id: number;
@@ -234,7 +236,11 @@ export interface MasterShip {
234
236
  useful?: boolean;
235
237
  }
236
238
 
237
- export type StatInterval = [number | null, number | null];
239
+ export interface MasterAttrRule<T> {
240
+ tag: T;
241
+ name: string;
242
+ expr: CompiledEvaler;
243
+ }
238
244
 
239
245
  export interface MasterData extends MasterBattleDefinitions {
240
246
  created_at: number;
@@ -251,14 +257,6 @@ export interface NationalityDef {
251
257
  ctypes: number[];
252
258
  }
253
259
 
254
- export interface MasterAttrRule<T> {
255
- tag: T;
256
- name: string;
257
- expr: CompiledEvaler;
258
- }
259
-
260
- export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
261
-
262
260
  export interface SlotSizeVecState {
263
261
  ss1?: number;
264
262
  ss2?: number;
@@ -267,6 +265,8 @@ export interface SlotSizeVecState {
267
265
  ss5?: number;
268
266
  }
269
267
 
268
+ export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
269
+
270
270
  export interface ShipState extends GearVecState, SlotSizeVecState {
271
271
  id?: string;
272
272
  ship_id: number;
@@ -289,16 +289,13 @@ export interface ShipState extends GearVecState, SlotSizeVecState {
289
289
  custom_power_mods?: CustomPowerModifiers;
290
290
  }
291
291
 
292
- export interface TorpedoAttackStyle {
293
- tag: "TorpedoAttackStyle";
294
- attack_type: TorpedoAttackType;
295
- }
296
-
297
292
  export interface SupportShellingStyle {
298
293
  tag: "SupportShellingStyle";
299
294
  attack_type: SupportShellingType;
300
295
  }
301
296
 
297
+ export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
298
+
302
299
  export interface ShellingStyle {
303
300
  tag: "ShellingStyle";
304
301
  attack_type: ShellingType;
@@ -308,6 +305,13 @@ export interface ShellingStyle {
308
305
  hits: number;
309
306
  }
310
307
 
308
+ export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
309
+
310
+ export interface AswAttackStyle {
311
+ tag: "AswAttackStyle";
312
+ attack_type: AswAttackType;
313
+ }
314
+
311
315
  export interface NightAttackStyle {
312
316
  tag: "NightAttackStyle";
313
317
  attack_type: NightAttackType;
@@ -317,15 +321,11 @@ export interface NightAttackStyle {
317
321
  hits: number;
318
322
  }
319
323
 
320
- export interface AswAttackStyle {
321
- tag: "AswAttackStyle";
322
- attack_type: AswAttackType;
324
+ export interface TorpedoAttackStyle {
325
+ tag: "TorpedoAttackStyle";
326
+ attack_type: TorpedoAttackType;
323
327
  }
324
328
 
325
- export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
326
-
327
- export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
328
-
329
329
  export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
330
330
 
331
331
  export type SpecialEnemyType =
@@ -347,19 +347,9 @@ export type SpecialEnemyType =
347
347
 
348
348
  export type Role = "Main" | "Escort";
349
349
 
350
- export type Align = "Left" | "Right";
351
-
352
350
  export type Side = "Player" | "Enemy";
353
351
 
354
- export type ShipCategory =
355
- | "Battleship"
356
- | "AircraftCarrier"
357
- | "HeavyCruiser"
358
- | "LightCruiser"
359
- | "Destroyer"
360
- | "CoastalDefenseShip"
361
- | "Submarine"
362
- | "AuxiliaryShip";
352
+ export type Align = "Left" | "Right";
363
353
 
364
354
  export type ShipType =
365
355
  | "Unknown"
@@ -386,6 +376,16 @@ export type ShipType =
386
376
  | "CT"
387
377
  | "AO";
388
378
 
379
+ export type ShipCategory =
380
+ | "Battleship"
381
+ | "AircraftCarrier"
382
+ | "HeavyCruiser"
383
+ | "LightCruiser"
384
+ | "Destroyer"
385
+ | "CoastalDefenseShip"
386
+ | "Submarine"
387
+ | "AuxiliaryShip";
388
+
389
389
  export interface DayContactChance {
390
390
  air_state: AirState;
391
391
  trigger_rate: number;
@@ -400,8 +400,6 @@ export interface ContactAnalysis {
400
400
  combined: DayContactChance[] | null;
401
401
  }
402
402
 
403
- export type NodeId = string;
404
-
405
403
  export interface NodeState {
406
404
  map?: number;
407
405
  node?: NodeId;
@@ -411,6 +409,8 @@ export interface NodeState {
411
409
  landing_battle?: boolean;
412
410
  }
413
411
 
412
+ export type NodeId = string;
413
+
414
414
  export type SpeedGroup = "A" | "B1" | "B2" | "C";
415
415
 
416
416
  export interface SupportShellingSimulatorParams {
@@ -420,6 +420,50 @@ export interface SupportShellingSimulatorParams {
420
420
  node_state: NodeState;
421
421
  }
422
422
 
423
+ export interface NightFleetConditions {
424
+ night_contact_rank?: ContactRank | null;
425
+ starshell_index?: number | null;
426
+ searchlight_index?: number | null;
427
+ activates_large_searchlight?: boolean;
428
+ }
429
+
430
+ export interface NightConditions {
431
+ player?: NightFleetConditions;
432
+ enemy?: NightFleetConditions;
433
+ }
434
+
435
+ export interface BattleConditions {
436
+ org_type: OrgType;
437
+ role: Role;
438
+ ship_index: number;
439
+ fleet_len: number;
440
+ formation: Formation;
441
+ fleet_los_mod: number | null;
442
+ night_conditions: NightFleetConditions;
443
+ }
444
+
445
+ export type OrgType =
446
+ | "Single"
447
+ | "CarrierTaskForce"
448
+ | "SurfaceTaskForce"
449
+ | "TransportEscort"
450
+ | "EnemySingle"
451
+ | "EnemyCombined";
452
+
453
+ export interface ShipPosition {
454
+ org_type?: OrgType;
455
+ fleet_type?: FleetType;
456
+ fleet_len?: number;
457
+ index?: number;
458
+ }
459
+
460
+ export interface ShipAnalyzerConfig {
461
+ air_state?: AirState;
462
+ engagement?: Engagement;
463
+ left?: AttackAnalyzerShipConfig;
464
+ right?: AttackAnalyzerShipConfig;
465
+ }
466
+
423
467
  export type SlotSizeVec = (number | null)[];
424
468
 
425
469
  export type FhResult<T> = { Ok: T } | { Err: string };
@@ -434,13 +478,6 @@ export interface MasterBattleDefinitions {
434
478
 
435
479
  export type AirWaveType = "Jet" | "LandBase" | "Carrier";
436
480
 
437
- export interface GearState {
438
- id?: string;
439
- gear_id: number;
440
- exp?: number;
441
- stars?: number;
442
- }
443
-
444
481
  export interface GearVecState {
445
482
  g1?: GearState;
446
483
  g2?: GearState;
@@ -450,6 +487,13 @@ export interface GearVecState {
450
487
  gx?: GearState;
451
488
  }
452
489
 
490
+ export interface GearState {
491
+ id?: string;
492
+ gear_id: number;
493
+ exp?: number;
494
+ stars?: number;
495
+ }
496
+
453
497
  export type ContactRank = "Rank1" | "Rank2" | "Rank3";
454
498
 
455
499
  export interface FleetMeta {
@@ -473,11 +517,6 @@ export interface ActionReport<T> {
473
517
  is_active: boolean;
474
518
  }
475
519
 
476
- export interface SimulatorResult {
477
- items: SimulatorResultItem[];
478
- sunk_vec: [number, number, number][];
479
- }
480
-
481
520
  export interface SimulatorResultItem {
482
521
  id: string;
483
522
  fleet_type: FleetType;
@@ -485,6 +524,11 @@ export interface SimulatorResultItem {
485
524
  damage_state_map: Record<DamageState, number>;
486
525
  }
487
526
 
527
+ export interface SimulatorResult {
528
+ items: SimulatorResultItem[];
529
+ sunk_vec: [number, number, number][];
530
+ }
531
+
488
532
  export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
489
533
 
490
534
  export interface FleetState {
@@ -501,6 +545,22 @@ export interface FleetState {
501
545
 
502
546
  export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
503
547
 
548
+ export interface BattleDefinitions {
549
+ formation: Record<Formation, NestedFormationDef>;
550
+ anti_air_cutin: Record<number, AntiAirCutinDef>;
551
+ day_cutin: Record<DayCutin, DayCutinDef>;
552
+ night_cutin: Record<NightCutin, NightCutinDef>;
553
+ historical_bonuses: HistoricalBonusDef[];
554
+ }
555
+
556
+ export interface NightCutinDef {
557
+ tag: NightCutin;
558
+ hits: number;
559
+ type_factor: number | null;
560
+ power_mod: number | null;
561
+ accuracy_mod: number | null;
562
+ }
563
+
504
564
  export interface DayCutinDef {
505
565
  tag: DayCutin;
506
566
  hits: number;
@@ -509,21 +569,14 @@ export interface DayCutinDef {
509
569
  accuracy_mod: number | null;
510
570
  }
511
571
 
512
- export interface FormationDef {
513
- tag: Formation;
514
- protection_rate: number | null;
515
- fleet_anti_air_mod: number;
516
- shelling: FormationCombatModifiersDef;
517
- torpedo: FormationCombatModifiersDef;
518
- asw: FormationCombatModifiersDef;
519
- night: FormationCombatModifiersDef;
520
- support_shelling: FormationCombatModifiersDef;
572
+ export interface AntiAirCutinDef {
573
+ id: number;
574
+ type_factor: number | null;
575
+ multiplier: number | null;
576
+ guaranteed: number | null;
577
+ sequential: boolean | null;
521
578
  }
522
579
 
523
- export type NestedFormationDef =
524
- | FormationDef
525
- | { top_half: FormationDef; bottom_half: FormationDef };
526
-
527
580
  export interface HistoricalParams {
528
581
  power_mod: AttackPowerModifier;
529
582
  armor_penetration: number;
@@ -531,12 +584,15 @@ export interface HistoricalParams {
531
584
  target_evasion_mod: number;
532
585
  }
533
586
 
534
- export interface AntiAirCutinDef {
535
- id: number;
536
- type_factor: number | null;
537
- multiplier: number | null;
538
- guaranteed: number | null;
539
- sequential: boolean | null;
587
+ export interface FormationDef {
588
+ tag: Formation;
589
+ protection_rate: number | null;
590
+ fleet_anti_air_mod: number;
591
+ shelling: FormationCombatModifiersDef;
592
+ torpedo: FormationCombatModifiersDef;
593
+ asw: FormationCombatModifiersDef;
594
+ night: FormationCombatModifiersDef;
595
+ support_shelling: FormationCombatModifiersDef;
540
596
  }
541
597
 
542
598
  export interface FormationCombatModifiersDef {
@@ -545,22 +601,6 @@ export interface FormationCombatModifiersDef {
545
601
  evasion_mod?: number;
546
602
  }
547
603
 
548
- export interface NightCutinDef {
549
- tag: NightCutin;
550
- hits: number;
551
- type_factor: number | null;
552
- power_mod: number | null;
553
- accuracy_mod: number | null;
554
- }
555
-
556
- export interface BattleDefinitions {
557
- formation: Record<Formation, NestedFormationDef>;
558
- anti_air_cutin: Record<number, AntiAirCutinDef>;
559
- day_cutin: Record<DayCutin, DayCutinDef>;
560
- night_cutin: Record<NightCutin, NightCutinDef>;
561
- historical_bonuses: HistoricalBonusDef[];
562
- }
563
-
564
604
  export interface HistoricalBonusDef {
565
605
  map?: number;
566
606
  node?: CompiledEvaler;
@@ -574,17 +614,9 @@ export interface HistoricalBonusDef {
574
614
  evasion_mod?: number;
575
615
  }
576
616
 
577
- export interface AttackPowerModifier {
578
- a?: number;
579
- b?: number;
580
- }
581
-
582
- export interface CustomPowerModifiers {
583
- precap_mod?: AttackPowerModifier;
584
- postcap_mod?: AttackPowerModifier;
585
- basic_power_mod?: AttackPowerModifier;
586
- historical_mod?: AttackPowerModifier;
587
- }
617
+ export type NestedFormationDef =
618
+ | FormationDef
619
+ | { top_half: FormationDef; bottom_half: FormationDef };
588
620
 
589
621
  export interface SpecialEnemyModifiers {
590
622
  precap_general_mod: AttackPowerModifier;
@@ -609,6 +641,20 @@ export interface SpecialEnemyModifiers {
609
641
  pt_mod: AttackPowerModifier | null;
610
642
  }
611
643
 
644
+ export interface AttackPowerModifier {
645
+ a?: number;
646
+ b?: number;
647
+ }
648
+
649
+ export interface CustomPowerModifiers {
650
+ precap_mod?: AttackPowerModifier;
651
+ postcap_mod?: AttackPowerModifier;
652
+ basic_power_mod?: AttackPowerModifier;
653
+ historical_mod?: AttackPowerModifier;
654
+ }
655
+
656
+ export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
657
+
612
658
  export type AirState =
613
659
  | "AirSupremacy"
614
660
  | "AirSuperiority"
@@ -616,14 +662,6 @@ export type AirState =
616
662
  | "AirDenial"
617
663
  | "AirIncapability";
618
664
 
619
- export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
620
-
621
- export type CombinedFormation =
622
- | "Cruising1"
623
- | "Cruising2"
624
- | "Cruising3"
625
- | "Cruising4";
626
-
627
665
  export type Formation = SingleFormation | CombinedFormation;
628
666
 
629
667
  export type SingleFormation =
@@ -631,18 +669,14 @@ export type SingleFormation =
631
669
  | "DoubleLine"
632
670
  | "Diamond"
633
671
  | "Echelon"
634
- | "LineAbreast"
635
- | "Vanguard";
636
-
637
- export interface AttackPower {
638
- precap: number;
639
- is_capped: boolean;
640
- capped: number;
641
- normal: number;
642
- critical: number;
643
- armor_penetration: number;
644
- remaining_ammo_mod: number;
645
- }
672
+ | "LineAbreast"
673
+ | "Vanguard";
674
+
675
+ export type CombinedFormation =
676
+ | "Cruising1"
677
+ | "Cruising2"
678
+ | "Cruising3"
679
+ | "Cruising4";
646
680
 
647
681
  export interface AttackPowerParams {
648
682
  is_cutin: boolean;
@@ -661,6 +695,22 @@ export interface AttackPowerParams {
661
695
  custom_mods: CustomPowerModifiers;
662
696
  }
663
697
 
698
+ export interface AttackPower {
699
+ precap: number;
700
+ is_capped: boolean;
701
+ capped: number;
702
+ normal: number;
703
+ critical: number;
704
+ armor_penetration: number;
705
+ remaining_ammo_mod: number;
706
+ }
707
+
708
+ export interface CompAntiAirAnalysis {
709
+ fleet_adjusted_anti_air: number;
710
+ ships: AntiAirReport[];
711
+ anti_air_cutin_chance: [number, number][];
712
+ }
713
+
664
714
  export interface AntiAirReport {
665
715
  ship_id: number;
666
716
  role: Role;
@@ -673,121 +723,19 @@ export interface AntiAirReport {
673
723
  anti_air_propellant_barrage_chance: number | null;
674
724
  }
675
725
 
676
- export interface CompAntiAirAnalysis {
677
- fleet_adjusted_anti_air: number;
678
- ships: AntiAirReport[];
679
- anti_air_cutin_chance: [number, number][];
680
- }
681
-
682
- export interface FleetCutinReport<T> {
683
- cutin: FleetCutin;
684
- rate: number | null;
685
- formation: Formation;
686
- attacks: FleetCutinAttackReport<T>[];
687
- }
688
-
689
726
  export interface FleetCutinAttackReport<T> extends AttackReport<T> {
690
727
  index: number;
691
728
  ship_id: number;
692
729
  power_mod: number;
693
730
  }
694
731
 
695
- export interface BattleConditions {
696
- org_type: OrgType;
697
- role: Role;
698
- ship_index: number;
699
- fleet_len: number;
732
+ export interface FleetCutinReport<T> {
733
+ cutin: FleetCutin;
734
+ rate: number | null;
700
735
  formation: Formation;
701
- fleet_los_mod: number | null;
702
- night_conditions: NightFleetConditions;
703
- }
704
-
705
- export interface NightFleetConditions {
706
- night_contact_rank?: ContactRank | null;
707
- starshell_index?: number | null;
708
- searchlight_index?: number | null;
709
- activates_large_searchlight?: boolean;
710
- }
711
-
712
- export interface NightConditions {
713
- player?: NightFleetConditions;
714
- enemy?: NightFleetConditions;
715
- }
716
-
717
- export type OrgType =
718
- | "Single"
719
- | "CarrierTaskForce"
720
- | "SurfaceTaskForce"
721
- | "TransportEscort"
722
- | "EnemySingle"
723
- | "EnemyCombined";
724
-
725
- export interface ShipPosition {
726
- org_type?: OrgType;
727
- fleet_type?: FleetType;
728
- fleet_len?: number;
729
- index?: number;
730
- }
731
-
732
- export interface MasterIBonusRule {
733
- expr: CompiledEvaler;
734
- formula: CompiledEvaler;
735
- }
736
-
737
- export interface MasterIBonuses {
738
- shelling_power: MasterIBonusRule[];
739
- shelling_accuracy: MasterIBonusRule[];
740
- shelling_aerial_power: MasterIBonusRule[];
741
- torpedo_power: MasterIBonusRule[];
742
- torpedo_accuracy: MasterIBonusRule[];
743
- torpedo_evasion: MasterIBonusRule[];
744
- asw_power: MasterIBonusRule[];
745
- asw_accuracy: MasterIBonusRule[];
746
- night_power: MasterIBonusRule[];
747
- night_aerial_power: MasterIBonusRule[];
748
- night_accuracy: MasterIBonusRule[];
749
- defense_power: MasterIBonusRule[];
750
- contact_selection: MasterIBonusRule[];
751
- fighter_power: MasterIBonusRule[];
752
- ship_anti_air: MasterIBonusRule[];
753
- fleet_anti_air: MasterIBonusRule[];
754
- elos: MasterIBonusRule[];
755
- }
756
-
757
- export interface EquippabilityRule {
758
- ship: CompiledEvaler;
759
- keys?: string[];
760
- include?: string;
761
- exclude?: string;
762
- }
763
-
764
- export type MstEquipShipValue = null | number[];
765
-
766
- export interface MstEquipExslotShip {
767
- api_ctypes: Record<number, number> | null;
768
- api_ship_ids: Record<number, number> | null;
769
- api_stypes: Record<number, number> | null;
770
- }
771
-
772
- export interface MstStype {
773
- api_id: number;
774
- api_equip_type: Record<number, number>;
775
- }
776
-
777
- export interface MasterEquippability {
778
- equip_stype: MstStype[];
779
- equip_exslot: number[];
780
- equip_ship: Record<number, MstEquipShip>;
781
- equip_exslot_ship: Record<number, MstEquipExslotShip>;
782
- rules: EquippabilityRule[];
783
- }
784
-
785
- export interface MstEquipShip {
786
- api_equip_type: Record<number, MstEquipShipValue>;
736
+ attacks: FleetCutinAttackReport<T>[];
787
737
  }
788
738
 
789
- export type CompiledEvaler = string;
790
-
791
739
  export interface MasterGear {
792
740
  gear_id: number;
793
741
  name: string;
@@ -826,15 +774,13 @@ export interface ShipConditions extends ShipPosition {
826
774
  amagiri_index?: number | null;
827
775
  }
828
776
 
777
+ export type AirSquadronMode = "Sortie" | "AirDefense";
778
+
829
779
  export interface AirSquadronState extends GearVecState, SlotSizeVecState {
830
780
  id?: string;
831
781
  mode?: AirSquadronMode;
832
782
  }
833
783
 
834
- export type AirSquadronMode = "Sortie" | "AirDefense";
835
-
836
- export type GearVecInput = GearInput[];
837
-
838
784
  export interface ShipInput {
839
785
  ship_id: number;
840
786
  ctype: number;
@@ -842,7 +788,9 @@ export interface ShipInput {
842
788
  yomi: string;
843
789
  }
844
790
 
845
- export interface EBonuses {
791
+ export interface GearInput {
792
+ gear_id: number;
793
+ types: GearTypeIdArray;
846
794
  firepower: number;
847
795
  torpedo: number;
848
796
  anti_air: number;
@@ -853,11 +801,12 @@ export interface EBonuses {
853
801
  bombing: number;
854
802
  accuracy: number;
855
803
  range: number;
804
+ radius: number;
805
+ stars: number;
806
+ ace: number;
856
807
  }
857
808
 
858
- export interface GearInput {
859
- gear_id: number;
860
- types: GearTypeIdArray;
809
+ export interface EBonuses {
861
810
  firepower: number;
862
811
  torpedo: number;
863
812
  anti_air: number;
@@ -868,11 +817,10 @@ export interface GearInput {
868
817
  bombing: number;
869
818
  accuracy: number;
870
819
  range: number;
871
- radius: number;
872
- stars: number;
873
- ace: number;
874
820
  }
875
821
 
822
+ export type GearVecInput = GearInput[];
823
+
876
824
  export type GearCategory =
877
825
  | "Fighter"
878
826
  | "Bomber"
@@ -951,8 +899,6 @@ export type GearType =
951
899
  | "CbRecon2"
952
900
  | "SecondaryGun2";
953
901
 
954
- export type FleetKey = "f1" | "f2" | "f3" | "f4";
955
-
956
902
  export interface OrgState {
957
903
  id?: string;
958
904
  f1?: FleetState;
@@ -969,6 +915,8 @@ export interface OrgState {
969
915
  boss_sup?: FleetKey;
970
916
  }
971
917
 
918
+ export type FleetKey = "f1" | "f2" | "f3" | "f4";
919
+
972
920
  export interface HitRateParams {
973
921
  accuracy_term: number;
974
922
  evasion_term: number;
@@ -989,13 +937,6 @@ export interface CompNightAnalysis {
989
937
  fleet_cutin: FleetCutinReport<NightAttackStyle>[];
990
938
  }
991
939
 
992
- export interface CompAnalysis {
993
- day: CompDayAnalysis;
994
- night: CompNightAnalysis;
995
- contact: ContactAnalysis;
996
- anti_air: CompAntiAirAnalysis;
997
- }
998
-
999
940
  export interface CompAnalyzerConfig {
1000
941
  engagement: Engagement;
1001
942
  formation: Formation;
@@ -1011,11 +952,11 @@ export interface CompDayAnalysis {
1011
952
  fleet_cutin: FleetCutinReport<ShellingStyle>[];
1012
953
  }
1013
954
 
1014
- export interface ShipAnalyzerConfig {
1015
- air_state?: AirState;
1016
- engagement?: Engagement;
1017
- left?: AttackAnalyzerShipConfig;
1018
- right?: AttackAnalyzerShipConfig;
955
+ export interface CompAnalysis {
956
+ day: CompDayAnalysis;
957
+ night: CompNightAnalysis;
958
+ contact: ContactAnalysis;
959
+ anti_air: CompAntiAirAnalysis;
1019
960
  }
1020
961
 
1021
962
  export interface AttackAnalysis {
@@ -1030,10 +971,6 @@ export interface AttackAnalysis {
1030
971
  support_shelling: ActionReport<SupportShellingStyle>;
1031
972
  }
1032
973
 
1033
- export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
1034
- formation?: Formation;
1035
- }
1036
-
1037
974
  export interface NodeAttackAnalysis {
1038
975
  left: AttackAnalysis;
1039
976
  right: AttackAnalysis;
@@ -1041,6 +978,10 @@ export interface NodeAttackAnalysis {
1041
978
  night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
1042
979
  }
1043
980
 
981
+ export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
982
+ formation?: Formation;
983
+ }
984
+
1044
985
  export interface NodeAttackAnalyzerConfig {
1045
986
  air_state?: AirState;
1046
987
  engagement?: Engagement;
@@ -1056,6 +997,65 @@ export interface AttackAnalyzerShipConfig
1056
997
  fleet_los_mod?: number | null;
1057
998
  }
1058
999
 
1000
+ export interface MasterIBonusRule {
1001
+ expr: CompiledEvaler;
1002
+ formula: CompiledEvaler;
1003
+ }
1004
+
1005
+ export interface MasterIBonuses {
1006
+ shelling_power: MasterIBonusRule[];
1007
+ shelling_accuracy: MasterIBonusRule[];
1008
+ shelling_aerial_power: MasterIBonusRule[];
1009
+ torpedo_power: MasterIBonusRule[];
1010
+ torpedo_accuracy: MasterIBonusRule[];
1011
+ torpedo_evasion: MasterIBonusRule[];
1012
+ asw_power: MasterIBonusRule[];
1013
+ asw_accuracy: MasterIBonusRule[];
1014
+ night_power: MasterIBonusRule[];
1015
+ night_aerial_power: MasterIBonusRule[];
1016
+ night_accuracy: MasterIBonusRule[];
1017
+ defense_power: MasterIBonusRule[];
1018
+ contact_selection: MasterIBonusRule[];
1019
+ fighter_power: MasterIBonusRule[];
1020
+ ship_anti_air: MasterIBonusRule[];
1021
+ fleet_anti_air: MasterIBonusRule[];
1022
+ elos: MasterIBonusRule[];
1023
+ }
1024
+
1025
+ export interface MasterEquippability {
1026
+ equip_stype: MstStype[];
1027
+ equip_exslot: number[];
1028
+ equip_ship: Record<number, MstEquipShip>;
1029
+ equip_exslot_ship: Record<number, MstEquipExslotShip>;
1030
+ rules: EquippabilityRule[];
1031
+ }
1032
+
1033
+ export interface MstEquipShip {
1034
+ api_equip_type: Record<number, MstEquipShipValue>;
1035
+ }
1036
+
1037
+ export interface EquippabilityRule {
1038
+ ship: CompiledEvaler;
1039
+ keys?: string[];
1040
+ include?: string;
1041
+ exclude?: string;
1042
+ }
1043
+
1044
+ export type MstEquipShipValue = null | number[];
1045
+
1046
+ export interface MstEquipExslotShip {
1047
+ api_ctypes: Record<number, number> | null;
1048
+ api_ship_ids: Record<number, number> | null;
1049
+ api_stypes: Record<number, number> | null;
1050
+ }
1051
+
1052
+ export interface MstStype {
1053
+ api_id: number;
1054
+ api_equip_type: Record<number, number>;
1055
+ }
1056
+
1057
+ export type CompiledEvaler = string;
1058
+
1059
1059
  export class AirSquadron {
1060
1060
  private constructor();
1061
1061
  free(): void;
@@ -1324,6 +1324,12 @@ export class Ship {
1324
1324
  private constructor();
1325
1325
  free(): void;
1326
1326
  [Symbol.dispose](): void;
1327
+ /**
1328
+ * フィット砲補正
1329
+ */
1330
+ gunfit_accuracy(is_night: boolean): number;
1331
+ state_day_gunfit_accuracy(): number | undefined;
1332
+ state_night_gunfit_accuracy(): number | undefined;
1327
1333
  get_ebonus(key: string): number;
1328
1334
  is_abyssal(): boolean;
1329
1335
  is_amagiri(): boolean;
@@ -1382,12 +1388,6 @@ export class Ship {
1382
1388
  can_equip(gear: Gear, key: string): boolean;
1383
1389
  gear_keys(): string[];
1384
1390
  is_pt_imp(): boolean;
1385
- /**
1386
- * フィット砲補正
1387
- */
1388
- gunfit_accuracy(is_night: boolean): number;
1389
- state_day_gunfit_accuracy(): number | undefined;
1390
- state_night_gunfit_accuracy(): number | undefined;
1391
1391
  id: string;
1392
1392
  readonly hash: bigint;
1393
1393
  readonly ship_id: number;