fleethub-core 1.12.13 → 1.12.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.
@@ -26,94 +26,6 @@ export type ShipAttr =
26
26
 
27
27
  export type Histogram<K extends keyof any, V> = Partial<Record<K, V>>;
28
28
 
29
- export interface MasterGear {
30
- gear_id: number;
31
- name: string;
32
- types: GearTypeIdArray;
33
- special_type?: number;
34
- max_hp?: number;
35
- firepower?: number;
36
- armor?: number;
37
- torpedo?: number;
38
- anti_air?: number;
39
- speed?: number;
40
- bombing?: number;
41
- asw?: number;
42
- los?: number;
43
- luck?: number;
44
- accuracy?: number;
45
- evasion?: number;
46
- range?: number;
47
- radius?: number;
48
- cost?: number;
49
- improvable?: boolean;
50
- ship_anti_air_resist?: number;
51
- fleet_anti_air_resist?: number;
52
- historical_aircraft_group?: number;
53
- }
54
-
55
- export interface MasterIBonusRule {
56
- expr: CompiledEvaler;
57
- formula: CompiledEvaler;
58
- }
59
-
60
- export interface MasterIBonuses {
61
- shelling_power: MasterIBonusRule[];
62
- shelling_accuracy: MasterIBonusRule[];
63
- shelling_aerial_power: MasterIBonusRule[];
64
- torpedo_power: MasterIBonusRule[];
65
- torpedo_accuracy: MasterIBonusRule[];
66
- torpedo_evasion: MasterIBonusRule[];
67
- asw_power: MasterIBonusRule[];
68
- asw_accuracy: MasterIBonusRule[];
69
- night_power: MasterIBonusRule[];
70
- night_aerial_power: MasterIBonusRule[];
71
- night_accuracy: MasterIBonusRule[];
72
- defense_power: MasterIBonusRule[];
73
- contact_selection: MasterIBonusRule[];
74
- fighter_power: MasterIBonusRule[];
75
- ship_anti_air: MasterIBonusRule[];
76
- fleet_anti_air: MasterIBonusRule[];
77
- elos: MasterIBonusRule[];
78
- }
79
-
80
- export interface MasterBattleDefinitions {
81
- formation: NestedFormationDef[];
82
- anti_air_cutin: AntiAirCutinDef[];
83
- day_cutin: DayCutinDef[];
84
- night_cutin: NightCutinDef[];
85
- historical_bonuses?: HistoricalBonusDef[];
86
- }
87
-
88
- export interface FleetState {
89
- id?: string;
90
- len?: number;
91
- s1?: ShipState;
92
- s2?: ShipState;
93
- s3?: ShipState;
94
- s4?: ShipState;
95
- s5?: ShipState;
96
- s6?: ShipState;
97
- s7?: ShipState;
98
- }
99
-
100
- export interface ActionReport<T> {
101
- data: Record<string, AttackReport<T>>;
102
- damage_state_density: Histogram<DamageState, number> | null;
103
- is_active: boolean;
104
- }
105
-
106
- export interface AttackReport<T> {
107
- style: T;
108
- proc_rate: number | null;
109
- attack_power: AttackPower | null;
110
- attack_power_params: AttackPowerParams | null;
111
- hits: number;
112
- hit_rate: HitRate | null;
113
- hit_rate_params: HitRateParams | null;
114
- damage: DamageReport | null;
115
- }
116
-
117
29
  export interface MoveShipPayload {
118
30
  current: [string, string, ShipKey];
119
31
  target: [string | null, string, ShipKey];
@@ -123,6 +35,16 @@ export type AirWaveType = "Jet" | "LandBase" | "Carrier";
123
35
 
124
36
  export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
125
37
 
38
+ export interface SlotSizeVecState {
39
+ ss1?: number;
40
+ ss2?: number;
41
+ ss3?: number;
42
+ ss4?: number;
43
+ ss5?: number;
44
+ }
45
+
46
+ export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
47
+
126
48
  export interface ShipState extends GearVecState, SlotSizeVecState {
127
49
  id?: string;
128
50
  ship_id: number;
@@ -145,16 +67,6 @@ export interface ShipState extends GearVecState, SlotSizeVecState {
145
67
  custom_power_mods?: CustomPowerModifiers;
146
68
  }
147
69
 
148
- export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
149
-
150
- export interface SlotSizeVecState {
151
- ss1?: number;
152
- ss2?: number;
153
- ss3?: number;
154
- ss4?: number;
155
- ss5?: number;
156
- }
157
-
158
70
  export type AirSquadronMode = "Sortie" | "AirDefense";
159
71
 
160
72
  export interface AirSquadronState extends GearVecState, SlotSizeVecState {
@@ -162,10 +74,8 @@ export interface AirSquadronState extends GearVecState, SlotSizeVecState {
162
74
  mode?: AirSquadronMode;
163
75
  }
164
76
 
165
- export interface FleetMeta {
166
- id: string;
167
- len: number;
168
- ships: [string, ShipMeta | null][];
77
+ export interface CompMeta {
78
+ fleets: Record<FleetType, FleetMeta>;
169
79
  }
170
80
 
171
81
  export interface ShipMeta {
@@ -173,14 +83,18 @@ export interface ShipMeta {
173
83
  ship_id: number;
174
84
  }
175
85
 
176
- export interface CompMeta {
177
- fleets: Record<FleetType, FleetMeta>;
86
+ export interface FleetMeta {
87
+ id: string;
88
+ len: number;
89
+ ships: [string, ShipMeta | null][];
178
90
  }
179
91
 
180
- export type Side = "Player" | "Enemy";
92
+ export type Role = "Main" | "Escort";
181
93
 
182
94
  export type Align = "Left" | "Right";
183
95
 
96
+ export type Side = "Player" | "Enemy";
97
+
184
98
  export interface ShipInput {
185
99
  ship_id: number;
186
100
  ctype: number;
@@ -188,9 +102,7 @@ export interface ShipInput {
188
102
  yomi: string;
189
103
  }
190
104
 
191
- export interface GearInput {
192
- gear_id: number;
193
- types: GearTypeIdArray;
105
+ export interface EBonuses {
194
106
  firepower: number;
195
107
  torpedo: number;
196
108
  anti_air: number;
@@ -201,14 +113,11 @@ export interface GearInput {
201
113
  bombing: number;
202
114
  accuracy: number;
203
115
  range: number;
204
- radius: number;
205
- stars: number;
206
- ace: number;
207
116
  }
208
117
 
209
- export type GearVecInput = GearInput[];
210
-
211
- export interface EBonuses {
118
+ export interface GearInput {
119
+ gear_id: number;
120
+ types: GearTypeIdArray;
212
121
  firepower: number;
213
122
  torpedo: number;
214
123
  anti_air: number;
@@ -219,8 +128,13 @@ export interface EBonuses {
219
128
  bombing: number;
220
129
  accuracy: number;
221
130
  range: number;
131
+ radius: number;
132
+ stars: number;
133
+ ace: number;
222
134
  }
223
135
 
136
+ export type GearVecInput = GearInput[];
137
+
224
138
  export type GearCategory =
225
139
  | "Fighter"
226
140
  | "Bomber"
@@ -317,16 +231,6 @@ export interface OrgState {
317
231
 
318
232
  export type FleetKey = "f1" | "f2" | "f3" | "f4";
319
233
 
320
- export interface CompDayAnalysis {
321
- day_cutin: CompDayCutinAnalysis;
322
- fleet_cutin: FleetCutinReport<ShellingStyle>[];
323
- }
324
-
325
- export interface CompNightAnalysis {
326
- night_cutin: CompNightCutinAnalysis;
327
- fleet_cutin: FleetCutinReport<NightAttackStyle>[];
328
- }
329
-
330
234
  export interface CompAnalyzerConfig {
331
235
  engagement: Engagement;
332
236
  formation: Formation;
@@ -344,6 +248,16 @@ export interface CompAnalysis {
344
248
  anti_air: CompAntiAirAnalysis;
345
249
  }
346
250
 
251
+ export interface CompDayAnalysis {
252
+ day_cutin: CompDayCutinAnalysis;
253
+ fleet_cutin: FleetCutinReport<ShellingStyle>[];
254
+ }
255
+
256
+ export interface CompNightAnalysis {
257
+ night_cutin: CompNightCutinAnalysis;
258
+ fleet_cutin: FleetCutinReport<NightAttackStyle>[];
259
+ }
260
+
347
261
  export interface ShipAnalyzerConfig {
348
262
  air_state?: AirState;
349
263
  engagement?: Engagement;
@@ -370,39 +284,166 @@ export interface SimulatorResult {
370
284
  sunk_vec: [number, number, number][];
371
285
  }
372
286
 
373
- export type SpeedGroup = "A" | "B1" | "B2" | "C";
374
-
375
- export interface SupportShellingSimulatorParams {
376
- attacker_formation?: Formation;
377
- target_formation?: Formation;
378
- engagement: Engagement;
379
- node_state: NodeState;
287
+ export interface MasterShip {
288
+ ship_id: number;
289
+ name: string;
290
+ yomi: string;
291
+ stype: number;
292
+ ctype: number;
293
+ nationality?: number;
294
+ sort_id?: number;
295
+ max_hp: StatInterval;
296
+ firepower: StatInterval;
297
+ armor: StatInterval;
298
+ torpedo: StatInterval;
299
+ evasion: StatInterval;
300
+ anti_air: StatInterval;
301
+ asw: StatInterval;
302
+ los: StatInterval;
303
+ luck: StatInterval;
304
+ torpedo_accuracy?: number;
305
+ basic_evasion_term?: number;
306
+ speed: number;
307
+ range?: number;
308
+ fuel?: number;
309
+ ammo?: number;
310
+ next_id?: number;
311
+ next_level?: number;
312
+ slotnum: number;
313
+ slots: SlotSizeVec;
314
+ stock: GearState[];
315
+ speed_group?: SpeedGroup;
316
+ useful?: boolean;
380
317
  }
381
318
 
382
- export type TorpedoAttackType = null;
383
-
384
- export type SupportShellingType = ShellingType;
319
+ export type StatInterval = [number | null, number | null];
385
320
 
386
- export type AswAttackType = "DepthCharge" | "Aerial";
321
+ export interface GearVecState {
322
+ g1?: GearState;
323
+ g2?: GearState;
324
+ g3?: GearState;
325
+ g4?: GearState;
326
+ g5?: GearState;
327
+ gx?: GearState;
328
+ }
387
329
 
388
- export type AttackType =
389
- | { t: "Asw"; c: AswAttackType }
390
- | { t: "Shelling"; c: ShellingType }
391
- | { t: "Night"; c: NightAttackType }
392
- | { t: "Torpedo" }
393
- | { t: "SupportShelling"; c: SupportShellingType };
330
+ export interface GearState {
331
+ id?: string;
332
+ gear_id: number;
333
+ exp?: number;
334
+ stars?: number;
335
+ }
394
336
 
395
- export type DayPhaseAttackType =
396
- | { t: "Shelling"; c: ShellingType }
397
- | { t: "Asw"; c: AswAttackType };
337
+ export interface FleetState {
338
+ id?: string;
339
+ len?: number;
340
+ s1?: ShipState;
341
+ s2?: ShipState;
342
+ s3?: ShipState;
343
+ s4?: ShipState;
344
+ s5?: ShipState;
345
+ s6?: ShipState;
346
+ s7?: ShipState;
347
+ }
398
348
 
399
- export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
349
+ export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
400
350
 
401
- export type ShellingType = "Normal" | "Aerial";
351
+ export interface ShellingStyle {
352
+ tag: "ShellingStyle";
353
+ attack_type: ShellingType;
354
+ cutin: DayCutinLike | null;
355
+ power_mod: number;
356
+ accuracy_mod: number;
357
+ hits: number;
358
+ }
402
359
 
403
- export type NightPhaseAttackType =
404
- | { t: "Night"; c: NightAttackType }
405
- | { t: "Asw"; c: AswAttackType };
360
+ export interface SupportShellingStyle {
361
+ tag: "SupportShellingStyle";
362
+ attack_type: SupportShellingType;
363
+ }
364
+
365
+ export interface AswAttackStyle {
366
+ tag: "AswAttackStyle";
367
+ attack_type: AswAttackType;
368
+ }
369
+
370
+ export interface NightAttackStyle {
371
+ tag: "NightAttackStyle";
372
+ attack_type: NightAttackType;
373
+ cutin: NightCutinLike | null;
374
+ power_mod: number;
375
+ accuracy_mod: number;
376
+ hits: number;
377
+ }
378
+
379
+ export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
380
+
381
+ export interface TorpedoAttackStyle {
382
+ tag: "TorpedoAttackStyle";
383
+ attack_type: TorpedoAttackType;
384
+ }
385
+
386
+ export interface ShipConditions extends ShipPosition {
387
+ formation?: Formation;
388
+ amagiri_index?: number | null;
389
+ }
390
+
391
+ export interface NodeAttackAnalyzerConfig {
392
+ air_state?: AirState;
393
+ engagement?: Engagement;
394
+ node_state?: NodeState;
395
+ left?: NodeAttackAnalyzerShipConfig;
396
+ right?: NodeAttackAnalyzerShipConfig;
397
+ }
398
+
399
+ export interface NodeAttackAnalysis {
400
+ left: AttackAnalysis;
401
+ right: AttackAnalysis;
402
+ shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
403
+ night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
404
+ }
405
+
406
+ export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
407
+ formation?: Formation;
408
+ }
409
+
410
+ export interface NodeState {
411
+ map?: number;
412
+ node?: NodeId;
413
+ phase?: number;
414
+ debuff?: boolean;
415
+ disable_historical_mod?: boolean;
416
+ landing_battle?: boolean;
417
+ }
418
+
419
+ export type NodeId = string;
420
+
421
+ export type DayPhaseAttackType =
422
+ | { t: "Shelling"; c: ShellingType }
423
+ | { t: "Asw"; c: AswAttackType };
424
+
425
+ export type ShellingType = "Normal" | "Aerial";
426
+
427
+ export type SupportShellingType = ShellingType;
428
+
429
+ export type AttackType =
430
+ | { t: "Asw"; c: AswAttackType }
431
+ | { t: "Shelling"; c: ShellingType }
432
+ | { t: "Night"; c: NightAttackType }
433
+ | { t: "Torpedo" }
434
+ | { t: "SupportShelling"; c: SupportShellingType };
435
+
436
+ export type NightPhaseAttackType =
437
+ | { t: "Night"; c: NightAttackType }
438
+ | { t: "Asw"; c: AswAttackType };
439
+
440
+ export type TorpedoAttackType = null;
441
+
442
+ export type AswAttackType = "DepthCharge" | "Aerial";
443
+
444
+ export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
445
+
446
+ export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
406
447
 
407
448
  export type SlotSizeVec = (number | null)[];
408
449
 
@@ -425,8 +466,6 @@ export type SpecialEnemyType =
425
466
  | "SummerAircraftCarrierDemon"
426
467
  | "EuropeanWaterPrincess";
427
468
 
428
- export type Role = "Main" | "Escort";
429
-
430
469
  export type FleetCutin =
431
470
  | "NelsonTouch"
432
471
  | "NagatoClassCutin"
@@ -437,6 +476,8 @@ export type FleetCutin =
437
476
  | "QueenElizabethClassCutin"
438
477
  | "RichelieuClassCutin";
439
478
 
479
+ export type NightCutinLike = NightCutin | FleetCutin;
480
+
440
481
  export type NightCutin =
441
482
  | "MainTorpRadar"
442
483
  | "TorpLookoutRadar"
@@ -458,8 +499,6 @@ export type NightCutin =
458
499
  | "Cvci1_18"
459
500
  | "Photobomber";
460
501
 
461
- export type NightCutinLike = NightCutin | FleetCutin;
462
-
463
502
  export type DayCutinLike = DayCutin | FleetCutin;
464
503
 
465
504
  export type DayCutin =
@@ -509,12 +548,6 @@ export type ShipType =
509
548
  | "CT"
510
549
  | "AO";
511
550
 
512
- export interface HitRate {
513
- normal: number;
514
- critical: number;
515
- total: number;
516
- }
517
-
518
551
  export interface HitRateParams {
519
552
  accuracy_term: number;
520
553
  evasion_term: number;
@@ -524,7 +557,11 @@ export interface HitRateParams {
524
557
  hit_percentage_bonus: number;
525
558
  }
526
559
 
527
- export type FhResult<T> = { Ok: T } | { Err: string };
560
+ export interface HitRate {
561
+ normal: number;
562
+ critical: number;
563
+ total: number;
564
+ }
528
565
 
529
566
  export interface DamageReport {
530
567
  miss_damage_min: number;
@@ -539,6 +576,10 @@ export interface DamageReport {
539
576
  damage_state_density: Histogram<DamageState, number>;
540
577
  }
541
578
 
579
+ export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
580
+ observation_term: number | null;
581
+ }
582
+
542
583
  export interface ShipDayCutinAnalysis {
543
584
  ship_id: number;
544
585
  role: Role;
@@ -555,14 +596,11 @@ export interface CompDayCutinAnalysis {
555
596
  ships: ShipDayCutinAnalysis[];
556
597
  }
557
598
 
558
- export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
559
- observation_term: number | null;
560
- }
561
-
562
- export interface NightContactChance {
563
- rank1: number;
564
- rank2: number;
565
- rank3: number;
599
+ export interface ShipNightCutinAnalysis {
600
+ ship_id: number;
601
+ index: number;
602
+ normal: NightCutinActionReport;
603
+ chuuha: NightCutinActionReport;
566
604
  }
567
605
 
568
606
  export interface NightCutinActionReport
@@ -570,11 +608,10 @@ export interface NightCutinActionReport
570
608
  cutin_term: number | null;
571
609
  }
572
610
 
573
- export interface ShipNightCutinAnalysis {
574
- ship_id: number;
575
- index: number;
576
- normal: NightCutinActionReport;
577
- chuuha: NightCutinActionReport;
611
+ export interface NightContactChance {
612
+ rank1: number;
613
+ rank2: number;
614
+ rank3: number;
578
615
  }
579
616
 
580
617
  export interface CompNightCutinAnalysis {
@@ -582,11 +619,186 @@ export interface CompNightCutinAnalysis {
582
619
  ships: ShipNightCutinAnalysis[];
583
620
  }
584
621
 
622
+ export interface MasterGear {
623
+ gear_id: number;
624
+ name: string;
625
+ types: GearTypeIdArray;
626
+ special_type?: number;
627
+ max_hp?: number;
628
+ firepower?: number;
629
+ armor?: number;
630
+ torpedo?: number;
631
+ anti_air?: number;
632
+ speed?: number;
633
+ bombing?: number;
634
+ asw?: number;
635
+ los?: number;
636
+ luck?: number;
637
+ accuracy?: number;
638
+ evasion?: number;
639
+ range?: number;
640
+ radius?: number;
641
+ cost?: number;
642
+ improvable?: boolean;
643
+ ship_anti_air_resist?: number;
644
+ fleet_anti_air_resist?: number;
645
+ historical_aircraft_group?: number;
646
+ }
647
+
648
+ export type SpeedGroup = "A" | "B1" | "B2" | "C";
649
+
650
+ export type FhResult<T> = { Ok: T } | { Err: string };
651
+
652
+ export interface SupportShellingSimulatorParams {
653
+ attacker_formation?: Formation;
654
+ target_formation?: Formation;
655
+ engagement: Engagement;
656
+ node_state: NodeState;
657
+ }
658
+
659
+ export interface MasterData extends MasterBattleDefinitions {
660
+ created_at: number;
661
+ gears: MasterGear[];
662
+ gear_attrs: MasterAttrRule<GearAttr>[];
663
+ ships: MasterShip[];
664
+ ship_attrs: MasterAttrRule<ShipAttr>[];
665
+ ibonuses: MasterIBonuses;
666
+ equippability: MasterEquippability;
667
+ }
668
+
669
+ export interface NationalityDef {
670
+ id: number;
671
+ ctypes: number[];
672
+ }
673
+
674
+ export interface MasterAttrRule<T> {
675
+ tag: T;
676
+ name: string;
677
+ expr: CompiledEvaler;
678
+ }
679
+
680
+ export type CompiledEvaler = string;
681
+
682
+ export interface NightConditions {
683
+ player?: NightFleetConditions;
684
+ enemy?: NightFleetConditions;
685
+ }
686
+
687
+ export interface BattleConditions {
688
+ org_type: OrgType;
689
+ role: Role;
690
+ ship_index: number;
691
+ fleet_len: number;
692
+ formation: Formation;
693
+ fleet_los_mod: number | null;
694
+ night_conditions: NightFleetConditions;
695
+ }
696
+
697
+ export interface NightFleetConditions {
698
+ night_contact_rank?: ContactRank | null;
699
+ starshell_index?: number | null;
700
+ searchlight_index?: number | null;
701
+ activates_large_searchlight?: boolean;
702
+ }
703
+
704
+ export interface ShipPosition {
705
+ org_type?: OrgType;
706
+ fleet_type?: FleetType;
707
+ fleet_len?: number;
708
+ index?: number;
709
+ }
710
+
711
+ export type GearAttr =
712
+ | "Unknown"
713
+ | "HighAngleMount"
714
+ | "NightFighter"
715
+ | "NightAttacker"
716
+ | "HeavyBomber"
717
+ | "NightRecon"
718
+ | "MainGun"
719
+ | "Radar"
720
+ | "SurfaceRadar"
721
+ | "AirRadar"
722
+ | "DepthChargeProjector"
723
+ | "SynergisticDepthCharge"
724
+ | "AntiSubMortar"
725
+ | "AntiSubWeapon"
726
+ | "ApDepthCharge"
727
+ | "AntiSubAircraft"
728
+ | "LateModelBowTorpedo"
729
+ | "Seaplane"
730
+ | "CbAircraft"
731
+ | "LbAircraft"
732
+ | "JetAircraft"
733
+ | "Fighter"
734
+ | "Recon"
735
+ | "ObservationSeaplane"
736
+ | "CbFighterBomber"
737
+ | "AntiInstDiveBomber"
738
+ | "CbSwordfish"
739
+ | "SemiNightPlane"
740
+ | "HighAltitudeInterceptor";
741
+
742
+ export interface MasterIBonuses {
743
+ shelling_power: MasterIBonusRule[];
744
+ shelling_accuracy: MasterIBonusRule[];
745
+ shelling_aerial_power: MasterIBonusRule[];
746
+ torpedo_power: MasterIBonusRule[];
747
+ torpedo_accuracy: MasterIBonusRule[];
748
+ torpedo_evasion: MasterIBonusRule[];
749
+ asw_power: MasterIBonusRule[];
750
+ asw_accuracy: MasterIBonusRule[];
751
+ night_power: MasterIBonusRule[];
752
+ night_aerial_power: MasterIBonusRule[];
753
+ night_accuracy: MasterIBonusRule[];
754
+ defense_power: MasterIBonusRule[];
755
+ contact_selection: MasterIBonusRule[];
756
+ fighter_power: MasterIBonusRule[];
757
+ ship_anti_air: MasterIBonusRule[];
758
+ fleet_anti_air: MasterIBonusRule[];
759
+ elos: MasterIBonusRule[];
760
+ }
761
+
762
+ export interface MasterIBonusRule {
763
+ expr: CompiledEvaler;
764
+ formula: CompiledEvaler;
765
+ }
766
+
767
+ export interface MasterBattleDefinitions {
768
+ formation: NestedFormationDef[];
769
+ anti_air_cutin: AntiAirCutinDef[];
770
+ day_cutin: DayCutinDef[];
771
+ night_cutin: NightCutinDef[];
772
+ historical_bonuses?: HistoricalBonusDef[];
773
+ }
774
+
775
+ export interface ActionReport<T> {
776
+ data: Record<string, AttackReport<T>>;
777
+ damage_state_density: Histogram<DamageState, number> | null;
778
+ is_active: boolean;
779
+ }
780
+
781
+ export interface AttackReport<T> {
782
+ style: T;
783
+ proc_rate: number | null;
784
+ attack_power: AttackPower | null;
785
+ attack_power_params: AttackPowerParams | null;
786
+ hits: number;
787
+ hit_rate: HitRate | null;
788
+ hit_rate_params: HitRateParams | null;
789
+ damage: DamageReport | null;
790
+ }
791
+
585
792
  export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
586
793
 
587
794
  export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
588
795
 
589
- export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
796
+ export interface HistoricalParams {
797
+ power_mod: AttackPowerModifier;
798
+ armor_penetration: number;
799
+ accuracy_mod: number;
800
+ target_evasion_mod: number;
801
+ }
590
802
 
591
803
  export interface BattleDefinitions {
592
804
  formation: Record<Formation, NestedFormationDef>;
@@ -596,14 +808,6 @@ export interface BattleDefinitions {
596
808
  historical_bonuses: HistoricalBonusDef[];
597
809
  }
598
810
 
599
- export interface AntiAirCutinDef {
600
- id: number;
601
- type_factor: number | null;
602
- multiplier: number | null;
603
- guaranteed: number | null;
604
- sequential: boolean | null;
605
- }
606
-
607
811
  export interface HistoricalBonusDef {
608
812
  map?: number;
609
813
  node?: CompiledEvaler;
@@ -617,25 +821,6 @@ export interface HistoricalBonusDef {
617
821
  evasion_mod?: number;
618
822
  }
619
823
 
620
- export interface FormationDef {
621
- tag: Formation;
622
- protection_rate: number | null;
623
- fleet_anti_air_mod: number;
624
- shelling: FormationCombatModifiersDef;
625
- torpedo: FormationCombatModifiersDef;
626
- asw: FormationCombatModifiersDef;
627
- night: FormationCombatModifiersDef;
628
- support_shelling: FormationCombatModifiersDef;
629
- }
630
-
631
- export interface DayCutinDef {
632
- tag: DayCutin;
633
- hits: number;
634
- type_factor: number | null;
635
- power_mod: number | null;
636
- accuracy_mod: number | null;
637
- }
638
-
639
824
  export type NestedFormationDef =
640
825
  | FormationDef
641
826
  | { top_half: FormationDef; bottom_half: FormationDef };
@@ -648,29 +833,37 @@ export interface NightCutinDef {
648
833
  accuracy_mod: number | null;
649
834
  }
650
835
 
651
- export interface HistoricalParams {
652
- power_mod: AttackPowerModifier;
653
- armor_penetration: number;
654
- accuracy_mod: number;
655
- target_evasion_mod: number;
656
- }
657
-
658
836
  export interface FormationCombatModifiersDef {
659
837
  power_mod?: number;
660
838
  accuracy_mod?: number;
661
839
  evasion_mod?: number;
662
840
  }
663
841
 
664
- export interface AttackPowerModifier {
665
- a?: number;
666
- b?: number;
842
+ export interface FormationDef {
843
+ tag: Formation;
844
+ protection_rate: number | null;
845
+ fleet_anti_air_mod: number;
846
+ shelling: FormationCombatModifiersDef;
847
+ torpedo: FormationCombatModifiersDef;
848
+ asw: FormationCombatModifiersDef;
849
+ night: FormationCombatModifiersDef;
850
+ support_shelling: FormationCombatModifiersDef;
667
851
  }
668
852
 
669
- export interface CustomPowerModifiers {
670
- precap_mod?: AttackPowerModifier;
671
- postcap_mod?: AttackPowerModifier;
672
- basic_power_mod?: AttackPowerModifier;
673
- historical_mod?: AttackPowerModifier;
853
+ export interface DayCutinDef {
854
+ tag: DayCutin;
855
+ hits: number;
856
+ type_factor: number | null;
857
+ power_mod: number | null;
858
+ accuracy_mod: number | null;
859
+ }
860
+
861
+ export interface AntiAirCutinDef {
862
+ id: number;
863
+ type_factor: number | null;
864
+ multiplier: number | null;
865
+ guaranteed: number | null;
866
+ sequential: boolean | null;
674
867
  }
675
868
 
676
869
  export interface SpecialEnemyModifiers {
@@ -682,12 +875,32 @@ export interface SpecialEnemyModifiers {
682
875
  honi_mod: AttackPowerModifier;
683
876
  toku_daihatsu_chiha_mod: AttackPowerModifier;
684
877
  toku_daihatsu_chiha_kai_mod: AttackPowerModifier;
878
+ army_infantry_mod: AttackPowerModifier;
879
+ army_infantry_chiha_kai_mod: AttackPowerModifier;
880
+ t97_tank_chiha_mod: AttackPowerModifier;
881
+ t97_tank_chiha_kai_mod: AttackPowerModifier;
882
+ landing_forces_mod: AttackPowerModifier;
883
+ landing_forces_group_mod: AttackPowerModifier;
884
+ landing_forces_t4_mod: AttackPowerModifier;
885
+ landing_forces_t4kai_mod: AttackPowerModifier;
685
886
  t4_tank_group_mod: AttackPowerModifier;
686
887
  t4_tank_kai_mod: AttackPowerModifier;
687
888
  postcap_general_mod: AttackPowerModifier;
688
889
  pt_mod: AttackPowerModifier | null;
689
890
  }
690
891
 
892
+ export interface AttackPowerModifier {
893
+ a?: number;
894
+ b?: number;
895
+ }
896
+
897
+ export interface CustomPowerModifiers {
898
+ precap_mod?: AttackPowerModifier;
899
+ postcap_mod?: AttackPowerModifier;
900
+ basic_power_mod?: AttackPowerModifier;
901
+ historical_mod?: AttackPowerModifier;
902
+ }
903
+
691
904
  export type OrgType =
692
905
  | "Single"
693
906
  | "CarrierTaskForce"
@@ -696,8 +909,6 @@ export type OrgType =
696
909
  | "EnemySingle"
697
910
  | "EnemyCombined";
698
911
 
699
- export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
700
-
701
912
  export type AirState =
702
913
  | "AirSupremacy"
703
914
  | "AirSuperiority"
@@ -705,14 +916,16 @@ export type AirState =
705
916
  | "AirDenial"
706
917
  | "AirIncapability";
707
918
 
919
+ export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
920
+
921
+ export type Formation = SingleFormation | CombinedFormation;
922
+
708
923
  export type CombinedFormation =
709
924
  | "Cruising1"
710
925
  | "Cruising2"
711
926
  | "Cruising3"
712
927
  | "Cruising4";
713
928
 
714
- export type Formation = SingleFormation | CombinedFormation;
715
-
716
929
  export type SingleFormation =
717
930
  | "LineAhead"
718
931
  | "DoubleLine"
@@ -752,6 +965,16 @@ export interface FleetCutinAttackReport<T> extends AttackReport<T> {
752
965
  power_mod: number;
753
966
  }
754
967
 
968
+ export interface AttackPower {
969
+ precap: number;
970
+ is_capped: boolean;
971
+ capped: number;
972
+ normal: number;
973
+ critical: number;
974
+ armor_penetration: number;
975
+ remaining_ammo_mod: number;
976
+ }
977
+
755
978
  export interface AttackPowerParams {
756
979
  is_cutin: boolean;
757
980
  basic: number;
@@ -769,16 +992,6 @@ export interface AttackPowerParams {
769
992
  custom_mods: CustomPowerModifiers;
770
993
  }
771
994
 
772
- export interface AttackPower {
773
- precap: number;
774
- is_capped: boolean;
775
- capped: number;
776
- normal: number;
777
- critical: number;
778
- armor_penetration: number;
779
- remaining_ammo_mod: number;
780
- }
781
-
782
995
  export interface AttackAnalysis {
783
996
  attacker_is_player: boolean;
784
997
  attacker_ship_id: number;
@@ -791,6 +1004,11 @@ export interface AttackAnalysis {
791
1004
  support_shelling: ActionReport<SupportShellingStyle>;
792
1005
  }
793
1006
 
1007
+ export interface ContactAnalysis {
1008
+ single: DayContactChance[] | null;
1009
+ combined: DayContactChance[] | null;
1010
+ }
1011
+
794
1012
  export interface DayContactChance {
795
1013
  air_state: AirState;
796
1014
  trigger_rate: number;
@@ -800,203 +1018,9 @@ export interface DayContactChance {
800
1018
  total: number;
801
1019
  }
802
1020
 
803
- export interface ContactAnalysis {
804
- single: DayContactChance[] | null;
805
- combined: DayContactChance[] | null;
806
- }
807
-
808
- export interface MasterAttrRule<T> {
809
- tag: T;
810
- name: string;
811
- expr: CompiledEvaler;
812
- }
813
-
814
- export interface NationalityDef {
815
- id: number;
816
- ctypes: number[];
817
- }
818
-
819
- export interface MasterData extends MasterBattleDefinitions {
820
- created_at: number;
821
- gears: MasterGear[];
822
- gear_attrs: MasterAttrRule<GearAttr>[];
823
- ships: MasterShip[];
824
- ship_attrs: MasterAttrRule<ShipAttr>[];
825
- ibonuses: MasterIBonuses;
826
- equippability: MasterEquippability;
827
- }
828
-
829
- export type CompiledEvaler = string;
830
-
831
- export interface NightConditions {
832
- player?: NightFleetConditions;
833
- enemy?: NightFleetConditions;
834
- }
835
-
836
- export interface BattleConditions {
837
- org_type: OrgType;
838
- role: Role;
839
- ship_index: number;
840
- fleet_len: number;
841
- formation: Formation;
842
- fleet_los_mod: number | null;
843
- night_conditions: NightFleetConditions;
844
- }
845
-
846
- export interface NightFleetConditions {
847
- night_contact_rank?: ContactRank | null;
848
- starshell_index?: number | null;
849
- searchlight_index?: number | null;
850
- activates_large_searchlight?: boolean;
851
- }
852
-
853
- export interface ShipPosition {
854
- org_type?: OrgType;
855
- fleet_type?: FleetType;
856
- fleet_len?: number;
857
- index?: number;
858
- }
859
-
860
- export type GearAttr =
861
- | "Unknown"
862
- | "HighAngleMount"
863
- | "NightFighter"
864
- | "NightAttacker"
865
- | "HeavyBomber"
866
- | "NightRecon"
867
- | "MainGun"
868
- | "Radar"
869
- | "SurfaceRadar"
870
- | "AirRadar"
871
- | "DepthChargeProjector"
872
- | "SynergisticDepthCharge"
873
- | "AntiSubMortar"
874
- | "AntiSubWeapon"
875
- | "ApDepthCharge"
876
- | "AntiSubAircraft"
877
- | "LateModelBowTorpedo"
878
- | "Seaplane"
879
- | "CbAircraft"
880
- | "LbAircraft"
881
- | "JetAircraft"
882
- | "Fighter"
883
- | "Recon"
884
- | "ObservationSeaplane"
885
- | "CbFighterBomber"
886
- | "AntiInstDiveBomber"
887
- | "CbSwordfish"
888
- | "SemiNightPlane"
889
- | "HighAltitudeInterceptor";
890
-
891
- export type StatInterval = [number | null, number | null];
892
-
893
- export interface MasterShip {
894
- ship_id: number;
895
- name: string;
896
- yomi: string;
897
- stype: number;
898
- ctype: number;
899
- nationality?: number;
900
- sort_id?: number;
901
- max_hp: StatInterval;
902
- firepower: StatInterval;
903
- armor: StatInterval;
904
- torpedo: StatInterval;
905
- evasion: StatInterval;
906
- anti_air: StatInterval;
907
- asw: StatInterval;
908
- los: StatInterval;
909
- luck: StatInterval;
910
- torpedo_accuracy?: number;
911
- basic_evasion_term?: number;
912
- speed: number;
913
- range?: number;
914
- fuel?: number;
915
- ammo?: number;
916
- next_id?: number;
917
- next_level?: number;
918
- slotnum: number;
919
- slots: SlotSizeVec;
920
- stock: GearState[];
921
- speed_group?: SpeedGroup;
922
- useful?: boolean;
923
- }
924
-
925
- export interface GearVecState {
926
- g1?: GearState;
927
- g2?: GearState;
928
- g3?: GearState;
929
- g4?: GearState;
930
- g5?: GearState;
931
- gx?: GearState;
932
- }
933
-
934
- export interface GearState {
935
- id?: string;
936
- gear_id: number;
937
- exp?: number;
938
- stars?: number;
939
- }
940
-
941
- export interface TorpedoAttackStyle {
942
- tag: "TorpedoAttackStyle";
943
- attack_type: TorpedoAttackType;
944
- }
945
-
946
- export interface ShellingStyle {
947
- tag: "ShellingStyle";
948
- attack_type: ShellingType;
949
- cutin: DayCutinLike | null;
950
- power_mod: number;
951
- accuracy_mod: number;
952
- hits: number;
953
- }
954
-
955
- export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
956
-
957
- export interface AswAttackStyle {
958
- tag: "AswAttackStyle";
959
- attack_type: AswAttackType;
960
- }
961
-
962
- export interface NightAttackStyle {
963
- tag: "NightAttackStyle";
964
- attack_type: NightAttackType;
965
- cutin: NightCutinLike | null;
966
- power_mod: number;
967
- accuracy_mod: number;
968
- hits: number;
969
- }
970
-
971
- export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
972
-
973
- export interface SupportShellingStyle {
974
- tag: "SupportShellingStyle";
975
- attack_type: SupportShellingType;
976
- }
977
-
978
- export interface ShipConditions extends ShipPosition {
979
- formation?: Formation;
980
- amagiri_index?: number | null;
981
- }
982
-
983
- export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
984
- formation?: Formation;
985
- }
986
-
987
- export interface NodeAttackAnalyzerConfig {
988
- air_state?: AirState;
989
- engagement?: Engagement;
990
- node_state?: NodeState;
991
- left?: NodeAttackAnalyzerShipConfig;
992
- right?: NodeAttackAnalyzerShipConfig;
993
- }
994
-
995
- export interface NodeAttackAnalysis {
996
- left: AttackAnalysis;
997
- right: AttackAnalysis;
998
- shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
999
- night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
1021
+ export interface MstStype {
1022
+ api_id: number;
1023
+ api_equip_type: Record<number, number>;
1000
1024
  }
1001
1025
 
1002
1026
  export interface MasterEquippability {
@@ -1009,16 +1033,6 @@ export interface MasterEquippability {
1009
1033
 
1010
1034
  export type MstEquipShipValue = null | number[];
1011
1035
 
1012
- export interface MstEquipExslotShip {
1013
- api_ctypes: Record<number, number> | null;
1014
- api_ship_ids: Record<number, number> | null;
1015
- api_stypes: Record<number, number> | null;
1016
- }
1017
-
1018
- export interface MstEquipShip {
1019
- api_equip_type: Record<number, MstEquipShipValue>;
1020
- }
1021
-
1022
1036
  export interface EquippabilityRule {
1023
1037
  ship: CompiledEvaler;
1024
1038
  keys?: string[];
@@ -1026,22 +1040,16 @@ export interface EquippabilityRule {
1026
1040
  exclude?: string;
1027
1041
  }
1028
1042
 
1029
- export interface MstStype {
1030
- api_id: number;
1031
- api_equip_type: Record<number, number>;
1043
+ export interface MstEquipShip {
1044
+ api_equip_type: Record<number, MstEquipShipValue>;
1032
1045
  }
1033
1046
 
1034
- export interface NodeState {
1035
- map?: number;
1036
- node?: NodeId;
1037
- phase?: number;
1038
- debuff?: boolean;
1039
- disable_historical_mod?: boolean;
1040
- landing_battle?: boolean;
1047
+ export interface MstEquipExslotShip {
1048
+ api_ctypes: Record<number, number> | null;
1049
+ api_ship_ids: Record<number, number> | null;
1050
+ api_stypes: Record<number, number> | null;
1041
1051
  }
1042
1052
 
1043
- export type NodeId = string;
1044
-
1045
1053
  export type ContactRank = "Rank1" | "Rank2" | "Rank3";
1046
1054
 
1047
1055
  export class AirSquadron {
@@ -1311,12 +1319,6 @@ export class Ship {
1311
1319
  private constructor();
1312
1320
  free(): void;
1313
1321
  [Symbol.dispose](): void;
1314
- /**
1315
- * フィット砲補正
1316
- */
1317
- gunfit_accuracy(is_night: boolean): number;
1318
- state_day_gunfit_accuracy(): number | undefined;
1319
- state_night_gunfit_accuracy(): number | undefined;
1320
1322
  get_ebonus(key: string): number;
1321
1323
  is_abyssal(): boolean;
1322
1324
  is_amagiri(): boolean;
@@ -1375,6 +1377,12 @@ export class Ship {
1375
1377
  can_equip(gear: Gear, key: string): boolean;
1376
1378
  gear_keys(): string[];
1377
1379
  is_pt_imp(): boolean;
1380
+ /**
1381
+ * フィット砲補正
1382
+ */
1383
+ gunfit_accuracy(is_night: boolean): number;
1384
+ state_day_gunfit_accuracy(): number | undefined;
1385
+ state_night_gunfit_accuracy(): number | undefined;
1378
1386
  id: string;
1379
1387
  readonly hash: bigint;
1380
1388
  readonly ship_id: number;