fleethub-core 1.12.9 → 1.12.11

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.
@@ -2,12 +2,23 @@
2
2
  /* eslint-disable */
3
3
  export function parse_ship_conditions(value: ShipConditions): ShipConditions;
4
4
  export function set_panic_hook(): void;
5
- export interface MasterBattleDefinitions {
6
- formation: NestedFormationDef[];
7
- anti_air_cutin: AntiAirCutinDef[];
8
- day_cutin: DayCutinDef[];
9
- night_cutin: NightCutinDef[];
10
- historical_bonuses?: HistoricalBonusDef[];
5
+ export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
6
+ formation?: Formation;
7
+ }
8
+
9
+ export interface NodeAttackAnalyzerConfig {
10
+ air_state?: AirState;
11
+ engagement?: Engagement;
12
+ node_state?: NodeState;
13
+ left?: NodeAttackAnalyzerShipConfig;
14
+ right?: NodeAttackAnalyzerShipConfig;
15
+ }
16
+
17
+ export interface NodeAttackAnalysis {
18
+ left: AttackAnalysis;
19
+ right: AttackAnalysis;
20
+ shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
21
+ night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
11
22
  }
12
23
 
13
24
  export interface FleetCutinReport<T> {
@@ -23,49 +34,152 @@ export interface FleetCutinAttackReport<T> extends AttackReport<T> {
23
34
  power_mod: number;
24
35
  }
25
36
 
26
- export interface ActionReport<T> {
27
- data: Record<string, AttackReport<T>>;
28
- damage_state_density: Histogram<DamageState, number> | null;
29
- is_active: boolean;
37
+ export interface AttackAnalysis {
38
+ attacker_is_player: boolean;
39
+ attacker_ship_id: number;
40
+ target_ship_id: number;
41
+ historical_params: HistoricalParams;
42
+ day: ActionReport<DayPhaseAttackStyle>;
43
+ night: ActionReport<NightPhaseAttackStyle>;
44
+ closing_torpedo: ActionReport<TorpedoAttackStyle>;
45
+ opening_asw: ActionReport<AswAttackStyle>;
46
+ support_shelling: ActionReport<SupportShellingStyle>;
30
47
  }
31
48
 
32
- export type SpeedGroup = "A" | "B1" | "B2" | "C";
49
+ export type AswAttackType = "DepthCharge" | "Aerial";
33
50
 
34
- export type CompiledEvaler = string;
51
+ export type ShellingType = "Normal" | "Aerial";
35
52
 
36
- export interface EquippabilityRule {
37
- ship: CompiledEvaler;
38
- keys?: string[];
39
- include?: string;
40
- exclude?: string;
41
- }
53
+ export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
42
54
 
43
- export interface MasterEquippability {
44
- equip_stype: MstStype[];
45
- equip_exslot: number[];
46
- equip_ship: Record<number, MstEquipShip>;
47
- equip_exslot_ship: Record<number, MstEquipExslotShip>;
48
- rules: EquippabilityRule[];
49
- }
55
+ export type SupportShellingType = ShellingType;
50
56
 
51
- export interface MstEquipExslotShip {
52
- api_ctypes: Record<number, number> | null;
53
- api_ship_ids: Record<number, number> | null;
54
- api_stypes: Record<number, number> | null;
57
+ export type AttackType =
58
+ | { t: "Asw"; c: AswAttackType }
59
+ | { t: "Shelling"; c: ShellingType }
60
+ | { t: "Night"; c: NightAttackType }
61
+ | { t: "Torpedo" }
62
+ | { t: "SupportShelling"; c: SupportShellingType };
63
+
64
+ export type DayPhaseAttackType =
65
+ | { t: "Shelling"; c: ShellingType }
66
+ | { t: "Asw"; c: AswAttackType };
67
+
68
+ export type NightPhaseAttackType =
69
+ | { t: "Night"; c: NightAttackType }
70
+ | { t: "Asw"; c: AswAttackType };
71
+
72
+ export type TorpedoAttackType = null;
73
+
74
+ export type DayCutin =
75
+ | "Zuiun"
76
+ | "AirSea"
77
+ | "MainMain"
78
+ | "MainAp"
79
+ | "MainRadar"
80
+ | "MainSec"
81
+ | "DoubleAttack"
82
+ | "FBA"
83
+ | "BBA"
84
+ | "BA";
85
+
86
+ export type NightCutin =
87
+ | "MainTorpRadar"
88
+ | "TorpLookoutRadar"
89
+ | "TorpTsloTorp"
90
+ | "TorpTsloDrum"
91
+ | "NightZuiun2Radar"
92
+ | "NightZuiun2"
93
+ | "NightZuiunRadar"
94
+ | "NightZuiun"
95
+ | "DoubleAttack"
96
+ | "TorpTorpMain"
97
+ | "TorpTorpTorp"
98
+ | "MainMainSec"
99
+ | "MainMainMain"
100
+ | "SubTorpTorp"
101
+ | "SubRadarTorp"
102
+ | "Cvci1_25"
103
+ | "Cvci1_20"
104
+ | "Cvci1_18"
105
+ | "Photobomber";
106
+
107
+ export type FleetCutin =
108
+ | "NelsonTouch"
109
+ | "NagatoClassCutin"
110
+ | "ColoradoClassCutin"
111
+ | "KongouClassCutin"
112
+ | "Yamato2ShipCutin"
113
+ | "Yamato3ShipCutin";
114
+
115
+ export type DayCutinLike = DayCutin | FleetCutin;
116
+
117
+ export type NightCutinLike = NightCutin | FleetCutin;
118
+
119
+ export interface ShipConditions extends ShipPosition {
120
+ formation?: Formation;
121
+ amagiri_index?: number | null;
55
122
  }
56
123
 
57
- export type MstEquipShip = Record<number, MstEquipShipValue>;
124
+ export interface BattleConditions {
125
+ org_type: OrgType;
126
+ role: Role;
127
+ ship_index: number;
128
+ fleet_len: number;
129
+ formation: Formation;
130
+ fleet_los_mod: number | null;
131
+ night_conditions: NightFleetConditions;
132
+ }
58
133
 
59
- export type MstEquipShipValue = null | number[];
134
+ export interface NightConditions {
135
+ player?: NightFleetConditions;
136
+ enemy?: NightFleetConditions;
137
+ }
60
138
 
61
- export interface MstStype {
62
- api_id: number;
63
- api_equip_type: Record<number, number>;
139
+ export interface NightFleetConditions {
140
+ night_contact_rank?: ContactRank | null;
141
+ starshell_index?: number | null;
142
+ searchlight_index?: number | null;
143
+ activates_large_searchlight?: boolean;
64
144
  }
65
145
 
66
- export type Histogram<K extends keyof any, V> = Partial<Record<K, V>>;
146
+ export type GearAttr =
147
+ | "Unknown"
148
+ | "HighAngleMount"
149
+ | "NightFighter"
150
+ | "NightAttacker"
151
+ | "HeavyBomber"
152
+ | "NightRecon"
153
+ | "MainGun"
154
+ | "Radar"
155
+ | "SurfaceRadar"
156
+ | "AirRadar"
157
+ | "DepthChargeProjector"
158
+ | "SynergisticDepthCharge"
159
+ | "AntiSubMortar"
160
+ | "AntiSubWeapon"
161
+ | "ApDepthCharge"
162
+ | "AntiSubAircraft"
163
+ | "LateModelBowTorpedo"
164
+ | "Seaplane"
165
+ | "CbAircraft"
166
+ | "LbAircraft"
167
+ | "JetAircraft"
168
+ | "Fighter"
169
+ | "Recon"
170
+ | "ObservationSeaplane"
171
+ | "CbFighterBomber"
172
+ | "AntiInstDiveBomber"
173
+ | "CbSwordfish"
174
+ | "SemiNightPlane"
175
+ | "HighAltitudeInterceptor";
67
176
 
68
- export type FhResult<T> = { Ok: T } | { Err: string };
177
+ export interface ShipPosition {
178
+ org_type?: OrgType;
179
+ fleet_type?: FleetType;
180
+ fleet_len?: number;
181
+ index?: number;
182
+ }
69
183
 
70
184
  export interface AttackReport<T> {
71
185
  style: T;
@@ -96,8 +210,6 @@ export interface AntiAirReport {
96
210
  anti_air_propellant_barrage_chance: number | null;
97
211
  }
98
212
 
99
- export type AirWaveType = "Jet" | "LandBase" | "Carrier";
100
-
101
213
  export interface AttackPowerModifier {
102
214
  a?: number;
103
215
  b?: number;
@@ -198,7 +310,17 @@ export interface BattleDefinitions {
198
310
  historical_bonuses: HistoricalBonusDef[];
199
311
  }
200
312
 
201
- export type ContactRank = "Rank1" | "Rank2" | "Rank3";
313
+ export interface FleetState {
314
+ id?: string;
315
+ len?: number;
316
+ s1?: ShipState;
317
+ s2?: ShipState;
318
+ s3?: ShipState;
319
+ s4?: ShipState;
320
+ s5?: ShipState;
321
+ s6?: ShipState;
322
+ s7?: ShipState;
323
+ }
202
324
 
203
325
  export interface GearState {
204
326
  id?: string;
@@ -216,40 +338,288 @@ export interface GearVecState {
216
338
  gx?: GearState;
217
339
  }
218
340
 
219
- export interface MoveShipPayload {
220
- current: [string, string, ShipKey];
221
- target: [string | null, string, ShipKey];
341
+ export type OrgType =
342
+ | "Single"
343
+ | "CarrierTaskForce"
344
+ | "SurfaceTaskForce"
345
+ | "TransportEscort"
346
+ | "EnemySingle"
347
+ | "EnemyCombined";
348
+
349
+ export type Role = "Main" | "Escort";
350
+
351
+ export interface CompAnalyzerConfig {
352
+ engagement: Engagement;
353
+ formation: Formation;
354
+ anti_air_cutin: number | null;
355
+ ship_anti_air_resist: number;
356
+ fleet_anti_air_resist: number;
357
+ left_night_fleet_conditions: NightFleetConditions;
358
+ right_night_fleet_conditions: NightFleetConditions;
222
359
  }
223
360
 
224
- export type GearVecInput = GearInput[];
361
+ export interface CompNightAnalysis {
362
+ night_cutin: CompNightCutinAnalysis;
363
+ fleet_cutin: FleetCutinReport<NightAttackStyle>[];
364
+ }
225
365
 
226
- export interface GearInput {
227
- gear_id: number;
228
- types: GearTypeIdArray;
229
- firepower: number;
230
- torpedo: number;
231
- anti_air: number;
232
- armor: number;
233
- evasion: number;
234
- asw: number;
235
- los: number;
236
- bombing: number;
237
- accuracy: number;
238
- range: number;
239
- radius: number;
240
- stars: number;
241
- ace: number;
366
+ export interface CompDayAnalysis {
367
+ day_cutin: CompDayCutinAnalysis;
368
+ fleet_cutin: FleetCutinReport<ShellingStyle>[];
242
369
  }
243
370
 
244
- export interface ShipInput {
245
- ship_id: number;
246
- ctype: number;
247
- stype: number;
248
- yomi: string;
371
+ export interface CompAnalysis {
372
+ day: CompDayAnalysis;
373
+ night: CompNightAnalysis;
374
+ contact: ContactAnalysis;
375
+ anti_air: CompAntiAirAnalysis;
249
376
  }
250
377
 
251
- export interface EBonuses {
252
- firepower: number;
378
+ export type NodeId = string;
379
+
380
+ export interface NodeState {
381
+ map?: number;
382
+ node?: NodeId;
383
+ phase?: number;
384
+ debuff?: boolean;
385
+ disable_historical_mod?: boolean;
386
+ landing_battle?: boolean;
387
+ }
388
+
389
+ export type GearTypeIdArray = [number, number, number, number, number];
390
+
391
+ export interface SupportShellingSimulatorParams {
392
+ attacker_formation?: Formation;
393
+ target_formation?: Formation;
394
+ engagement: Engagement;
395
+ node_state: NodeState;
396
+ }
397
+
398
+ export type FhResult<T> = { Ok: T } | { Err: string };
399
+
400
+ export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
401
+
402
+ export type SingleFormation =
403
+ | "LineAhead"
404
+ | "DoubleLine"
405
+ | "Diamond"
406
+ | "Echelon"
407
+ | "LineAbreast"
408
+ | "Vanguard";
409
+
410
+ export type CombinedFormation =
411
+ | "Cruising1"
412
+ | "Cruising2"
413
+ | "Cruising3"
414
+ | "Cruising4";
415
+
416
+ export type Formation = SingleFormation | CombinedFormation;
417
+
418
+ export interface MasterData extends MasterBattleDefinitions {
419
+ created_at: number;
420
+ gears: MasterGear[];
421
+ gear_attrs: MasterAttrRule<GearAttr>[];
422
+ ships: MasterShip[];
423
+ ship_attrs: MasterAttrRule<ShipAttr>[];
424
+ ibonuses: MasterIBonuses;
425
+ equippability: MasterEquippability;
426
+ }
427
+
428
+ export interface NationalityDef {
429
+ id: number;
430
+ ctypes: number[];
431
+ }
432
+
433
+ export interface MasterAttrRule<T> {
434
+ tag: T;
435
+ name: string;
436
+ expr: CompiledEvaler;
437
+ }
438
+
439
+ export interface MasterShip {
440
+ ship_id: number;
441
+ name: string;
442
+ yomi: string;
443
+ stype: number;
444
+ ctype: number;
445
+ nationality?: number;
446
+ sort_id?: number;
447
+ max_hp: StatInterval;
448
+ firepower: StatInterval;
449
+ armor: StatInterval;
450
+ torpedo: StatInterval;
451
+ evasion: StatInterval;
452
+ anti_air: StatInterval;
453
+ asw: StatInterval;
454
+ los: StatInterval;
455
+ luck: StatInterval;
456
+ torpedo_accuracy?: number;
457
+ basic_evasion_term?: number;
458
+ speed: number;
459
+ range?: number;
460
+ fuel?: number;
461
+ ammo?: number;
462
+ next_id?: number;
463
+ next_level?: number;
464
+ slotnum: number;
465
+ slots: SlotSizeVec;
466
+ stock: GearState[];
467
+ speed_group?: SpeedGroup;
468
+ useful?: boolean;
469
+ }
470
+
471
+ export type StatInterval = [number | null, number | null];
472
+
473
+ export interface MasterIBonuses {
474
+ shelling_power: MasterIBonusRule[];
475
+ shelling_accuracy: MasterIBonusRule[];
476
+ shelling_aerial_power: MasterIBonusRule[];
477
+ torpedo_power: MasterIBonusRule[];
478
+ torpedo_accuracy: MasterIBonusRule[];
479
+ torpedo_evasion: MasterIBonusRule[];
480
+ asw_power: MasterIBonusRule[];
481
+ asw_accuracy: MasterIBonusRule[];
482
+ night_power: MasterIBonusRule[];
483
+ night_aerial_power: MasterIBonusRule[];
484
+ night_accuracy: MasterIBonusRule[];
485
+ defense_power: MasterIBonusRule[];
486
+ contact_selection: MasterIBonusRule[];
487
+ fighter_power: MasterIBonusRule[];
488
+ ship_anti_air: MasterIBonusRule[];
489
+ fleet_anti_air: MasterIBonusRule[];
490
+ elos: MasterIBonusRule[];
491
+ }
492
+
493
+ export interface MasterIBonusRule {
494
+ expr: CompiledEvaler;
495
+ formula: CompiledEvaler;
496
+ }
497
+
498
+ export type ShipAttr =
499
+ | "Unknown"
500
+ | "NightCarrier"
501
+ | "Installation"
502
+ | "RoyalNavy"
503
+ | "Kai2"
504
+ | "TurbineSpeedBonus"
505
+ | "NewModelBoilerSpeedBonus"
506
+ | "Pillbox"
507
+ | "IsolatedIsland"
508
+ | "HarbourSummerPrincess"
509
+ | "SupplyDepot"
510
+ | "NewSupplyDepot"
511
+ | "PtImp"
512
+ | "BattleshipSummerPrincess"
513
+ | "HeavyCruiserSummerPrincess"
514
+ | "AnchorageWaterDemonVacationMode"
515
+ | "FrenchBattleshipPrincess"
516
+ | "DockPrincess"
517
+ | "SummerAircraftCarrierDemon"
518
+ | "EuropeanWaterPrincess";
519
+
520
+ export type ShipCategory =
521
+ | "Battleship"
522
+ | "AircraftCarrier"
523
+ | "HeavyCruiser"
524
+ | "LightCruiser"
525
+ | "Destroyer"
526
+ | "CoastalDefenseShip"
527
+ | "Submarine"
528
+ | "AuxiliaryShip";
529
+
530
+ export type ShipType =
531
+ | "Unknown"
532
+ | "DE"
533
+ | "DD"
534
+ | "CL"
535
+ | "CLT"
536
+ | "CA"
537
+ | "CAV"
538
+ | "CVL"
539
+ | "FBB"
540
+ | "BB"
541
+ | "BBV"
542
+ | "CV"
543
+ | "XBB"
544
+ | "SS"
545
+ | "SSV"
546
+ | "AP"
547
+ | "AV"
548
+ | "LHA"
549
+ | "CVB"
550
+ | "AR"
551
+ | "AS"
552
+ | "CT"
553
+ | "AO";
554
+
555
+ export type CompiledEvaler = string;
556
+
557
+ export interface EquippabilityRule {
558
+ ship: CompiledEvaler;
559
+ keys?: string[];
560
+ include?: string;
561
+ exclude?: string;
562
+ }
563
+
564
+ export interface MasterEquippability {
565
+ equip_stype: MstStype[];
566
+ equip_exslot: number[];
567
+ equip_ship: Record<number, MstEquipShip>;
568
+ equip_exslot_ship: Record<number, MstEquipExslotShip>;
569
+ rules: EquippabilityRule[];
570
+ }
571
+
572
+ export interface MstEquipExslotShip {
573
+ api_ctypes: Record<number, number> | null;
574
+ api_ship_ids: Record<number, number> | null;
575
+ api_stypes: Record<number, number> | null;
576
+ }
577
+
578
+ export interface MstEquipShip {
579
+ api_equip_type: Record<number, MstEquipShipValue>;
580
+ }
581
+
582
+ export type MstEquipShipValue = null | number[];
583
+
584
+ export interface MstStype {
585
+ api_id: number;
586
+ api_equip_type: Record<number, number>;
587
+ }
588
+
589
+ export interface MoveShipPayload {
590
+ current: [string, string, ShipKey];
591
+ target: [string | null, string, ShipKey];
592
+ }
593
+
594
+ export type GearVecInput = GearInput[];
595
+
596
+ export interface GearInput {
597
+ gear_id: number;
598
+ types: GearTypeIdArray;
599
+ firepower: number;
600
+ torpedo: number;
601
+ anti_air: number;
602
+ armor: number;
603
+ evasion: number;
604
+ asw: number;
605
+ los: number;
606
+ bombing: number;
607
+ accuracy: number;
608
+ range: number;
609
+ radius: number;
610
+ stars: number;
611
+ ace: number;
612
+ }
613
+
614
+ export interface ShipInput {
615
+ ship_id: number;
616
+ ctype: number;
617
+ stype: number;
618
+ yomi: string;
619
+ }
620
+
621
+ export interface EBonuses {
622
+ firepower: number;
253
623
  torpedo: number;
254
624
  anti_air: number;
255
625
  armor: number;
@@ -273,6 +643,32 @@ export interface SimulatorResultItem {
273
643
  damage_state_map: Record<DamageState, number>;
274
644
  }
275
645
 
646
+ export interface MasterGear {
647
+ gear_id: number;
648
+ name: string;
649
+ types: GearTypeIdArray;
650
+ special_type?: number;
651
+ max_hp?: number;
652
+ firepower?: number;
653
+ armor?: number;
654
+ torpedo?: number;
655
+ anti_air?: number;
656
+ speed?: number;
657
+ bombing?: number;
658
+ asw?: number;
659
+ los?: number;
660
+ luck?: number;
661
+ accuracy?: number;
662
+ evasion?: number;
663
+ range?: number;
664
+ radius?: number;
665
+ cost?: number;
666
+ improvable?: boolean;
667
+ ship_anti_air_resist?: number;
668
+ fleet_anti_air_resist?: number;
669
+ historical_aircraft_group?: number;
670
+ }
671
+
276
672
  export interface HitRate {
277
673
  normal: number;
278
674
  critical: number;
@@ -295,203 +691,52 @@ export interface AttackAnalyzerShipConfig
295
691
  fleet_los_mod?: number | null;
296
692
  }
297
693
 
298
- export type AirSquadronMode = "Sortie" | "AirDefense";
299
-
300
- export interface AirSquadronState extends GearVecState, SlotSizeVecState {
301
- id?: string;
302
- mode?: AirSquadronMode;
303
- }
304
-
305
- export interface ShellingStyle {
306
- tag: "ShellingStyle";
307
- attack_type: ShellingType;
308
- cutin: DayCutinLike | null;
309
- power_mod: number;
310
- accuracy_mod: number;
311
- hits: number;
312
- }
313
-
314
- export interface NightAttackStyle {
315
- tag: "NightAttackStyle";
316
- attack_type: NightAttackType;
317
- cutin: NightCutinLike | null;
318
- power_mod: number;
319
- accuracy_mod: number;
320
- hits: number;
321
- }
322
-
323
- export interface AswAttackStyle {
324
- tag: "AswAttackStyle";
325
- attack_type: AswAttackType;
326
- }
327
-
328
- export interface TorpedoAttackStyle {
329
- tag: "TorpedoAttackStyle";
330
- attack_type: TorpedoAttackType;
331
- }
332
-
333
- export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
334
-
335
- export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
336
-
337
- export interface SupportShellingStyle {
338
- tag: "SupportShellingStyle";
339
- attack_type: SupportShellingType;
340
- }
341
-
342
- export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
343
-
344
- export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
345
-
346
- export interface ShipMeta {
347
- id: string;
348
- ship_id: number;
349
- }
350
-
351
- export interface FleetMeta {
352
- id: string;
353
- len: number;
354
- ships: [string, ShipMeta | null][];
355
- }
356
-
357
- export interface CompMeta {
358
- fleets: Record<FleetType, FleetMeta>;
359
- }
360
-
361
- export interface OrgState {
362
- id?: string;
363
- f1?: FleetState;
364
- f2?: FleetState;
365
- f3?: FleetState;
366
- f4?: FleetState;
367
- a1?: AirSquadronState;
368
- a2?: AirSquadronState;
369
- a3?: AirSquadronState;
370
- hq_level?: number;
371
- org_type?: OrgType;
372
- sortie?: FleetKey;
373
- route_sup?: FleetKey;
374
- boss_sup?: FleetKey;
375
- }
376
-
377
- export type FleetKey = "f1" | "f2" | "f3" | "f4";
378
-
379
- export interface SlotSizeVecState {
380
- ss1?: number;
381
- ss2?: number;
382
- ss3?: number;
383
- ss4?: number;
384
- ss5?: number;
385
- }
386
-
387
- export interface ShipState extends GearVecState, SlotSizeVecState {
388
- id?: string;
389
- ship_id: number;
390
- level?: number;
391
- current_hp?: number;
392
- morale?: number;
393
- ammo?: number;
394
- fuel?: number;
395
- max_hp_mod?: number;
396
- firepower_mod?: number;
397
- torpedo_mod?: number;
398
- armor_mod?: number;
399
- anti_air_mod?: number;
400
- evasion_mod?: number;
401
- asw_mod?: number;
402
- los_mod?: number;
403
- luck_mod?: number;
404
- day_gunfit_accuracy?: number;
405
- night_gunfit_accuracy?: number;
406
- custom_power_mods?: CustomPowerModifiers;
407
- }
408
-
409
- export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
410
-
411
- export type Side = "Player" | "Enemy";
412
-
413
- export type Align = "Left" | "Right";
414
-
415
- export interface MasterData extends MasterBattleDefinitions {
416
- created_at: number;
417
- gears: MasterGear[];
418
- gear_attrs: MasterAttrRule<GearAttr>[];
419
- ships: MasterShip[];
420
- ship_attrs: MasterAttrRule<ShipAttr>[];
421
- ibonuses: MasterIBonuses;
422
- equippability: MasterEquippability;
423
- }
694
+ export type AirSquadronMode = "Sortie" | "AirDefense";
424
695
 
425
- export interface NationalityDef {
426
- id: number;
427
- ctypes: number[];
696
+ export interface AirSquadronState extends GearVecState, SlotSizeVecState {
697
+ id?: string;
698
+ mode?: AirSquadronMode;
428
699
  }
429
700
 
430
- export interface MasterAttrRule<T> {
431
- tag: T;
432
- name: string;
433
- expr: CompiledEvaler;
701
+ export interface ShellingStyle {
702
+ tag: "ShellingStyle";
703
+ attack_type: ShellingType;
704
+ cutin: DayCutinLike | null;
705
+ power_mod: number;
706
+ accuracy_mod: number;
707
+ hits: number;
434
708
  }
435
709
 
436
- export interface MasterShip {
437
- ship_id: number;
438
- name: string;
439
- yomi: string;
440
- stype: number;
441
- ctype: number;
442
- nationality?: number;
443
- sort_id?: number;
444
- max_hp: StatInterval;
445
- firepower: StatInterval;
446
- armor: StatInterval;
447
- torpedo: StatInterval;
448
- evasion: StatInterval;
449
- anti_air: StatInterval;
450
- asw: StatInterval;
451
- los: StatInterval;
452
- luck: StatInterval;
453
- torpedo_accuracy?: number;
454
- basic_evasion_term?: number;
455
- speed: number;
456
- range?: number;
457
- fuel?: number;
458
- ammo?: number;
459
- next_id?: number;
460
- next_level?: number;
461
- slotnum: number;
462
- slots: SlotSizeVec;
463
- stock: GearState[];
464
- speed_group?: SpeedGroup;
465
- useful?: boolean;
710
+ export interface NightAttackStyle {
711
+ tag: "NightAttackStyle";
712
+ attack_type: NightAttackType;
713
+ cutin: NightCutinLike | null;
714
+ power_mod: number;
715
+ accuracy_mod: number;
716
+ hits: number;
466
717
  }
467
718
 
468
- export type StatInterval = [number | null, number | null];
719
+ export interface AswAttackStyle {
720
+ tag: "AswAttackStyle";
721
+ attack_type: AswAttackType;
722
+ }
469
723
 
470
- export interface MasterIBonuses {
471
- shelling_power: MasterIBonusRule[];
472
- shelling_accuracy: MasterIBonusRule[];
473
- shelling_aerial_power: MasterIBonusRule[];
474
- torpedo_power: MasterIBonusRule[];
475
- torpedo_accuracy: MasterIBonusRule[];
476
- torpedo_evasion: MasterIBonusRule[];
477
- asw_power: MasterIBonusRule[];
478
- asw_accuracy: MasterIBonusRule[];
479
- night_power: MasterIBonusRule[];
480
- night_aerial_power: MasterIBonusRule[];
481
- night_accuracy: MasterIBonusRule[];
482
- defense_power: MasterIBonusRule[];
483
- contact_selection: MasterIBonusRule[];
484
- fighter_power: MasterIBonusRule[];
485
- ship_anti_air: MasterIBonusRule[];
486
- fleet_anti_air: MasterIBonusRule[];
487
- elos: MasterIBonusRule[];
724
+ export interface TorpedoAttackStyle {
725
+ tag: "TorpedoAttackStyle";
726
+ attack_type: TorpedoAttackType;
488
727
  }
489
728
 
490
- export interface MasterIBonusRule {
491
- expr: CompiledEvaler;
492
- formula: CompiledEvaler;
729
+ export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
730
+
731
+ export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
732
+
733
+ export interface SupportShellingStyle {
734
+ tag: "SupportShellingStyle";
735
+ attack_type: SupportShellingType;
493
736
  }
494
737
 
738
+ export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
739
+
495
740
  export type GearType =
496
741
  | "Unknown"
497
742
  | "SmallMainGun"
@@ -570,195 +815,83 @@ export type GearCategory =
570
815
  | "LandBased"
571
816
  | "Misc";
572
817
 
573
- export type ShipAttr =
574
- | "Unknown"
575
- | "NightCarrier"
576
- | "Installation"
577
- | "RoyalNavy"
578
- | "Kai2"
579
- | "TurbineSpeedBonus"
580
- | "NewModelBoilerSpeedBonus"
581
- | "Pillbox"
582
- | "IsolatedIsland"
583
- | "HarbourSummerPrincess"
584
- | "SupplyDepot"
585
- | "NewSupplyDepot"
586
- | "PtImp"
587
- | "BattleshipSummerPrincess"
588
- | "HeavyCruiserSummerPrincess"
589
- | "AnchorageWaterDemonVacationMode"
590
- | "FrenchBattleshipPrincess"
591
- | "DockPrincess"
592
- | "SummerAircraftCarrierDemon";
593
-
594
- export type ShipCategory =
595
- | "Battleship"
596
- | "AircraftCarrier"
597
- | "HeavyCruiser"
598
- | "LightCruiser"
599
- | "Destroyer"
600
- | "CoastalDefenseShip"
601
- | "Submarine"
602
- | "AuxiliaryShip";
603
-
604
- export type ShipType =
605
- | "Unknown"
606
- | "DE"
607
- | "DD"
608
- | "CL"
609
- | "CLT"
610
- | "CA"
611
- | "CAV"
612
- | "CVL"
613
- | "FBB"
614
- | "BB"
615
- | "BBV"
616
- | "CV"
617
- | "XBB"
618
- | "SS"
619
- | "SSV"
620
- | "AP"
621
- | "AV"
622
- | "LHA"
623
- | "CVB"
624
- | "AR"
625
- | "AS"
626
- | "CT"
627
- | "AO";
628
-
629
- export type GearTypeIdArray = [number, number, number, number, number];
630
-
631
- export interface SupportShellingSimulatorParams {
632
- attacker_formation?: Formation;
633
- target_formation?: Formation;
634
- engagement: Engagement;
635
- node_state: NodeState;
636
- }
637
-
638
- export interface ShipAnalyzerConfig {
639
- air_state?: AirState;
640
- engagement?: Engagement;
641
- left?: AttackAnalyzerShipConfig;
642
- right?: AttackAnalyzerShipConfig;
643
- }
644
-
645
- export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
646
-
647
- export type SingleFormation =
648
- | "LineAhead"
649
- | "DoubleLine"
650
- | "Diamond"
651
- | "Echelon"
652
- | "LineAbreast"
653
- | "Vanguard";
654
-
655
- export type CombinedFormation =
656
- | "Cruising1"
657
- | "Cruising2"
658
- | "Cruising3"
659
- | "Cruising4";
660
-
661
- export type Formation = SingleFormation | CombinedFormation;
662
-
663
- export type Role = "Main" | "Escort";
664
-
665
- export interface CompAnalyzerConfig {
666
- engagement: Engagement;
667
- formation: Formation;
668
- anti_air_cutin: number | null;
669
- ship_anti_air_resist: number;
670
- fleet_anti_air_resist: number;
671
- left_night_fleet_conditions: NightFleetConditions;
672
- right_night_fleet_conditions: NightFleetConditions;
673
- }
674
-
675
- export interface CompNightAnalysis {
676
- night_cutin: CompNightCutinAnalysis;
677
- fleet_cutin: FleetCutinReport<NightAttackStyle>[];
678
- }
679
-
680
- export interface CompDayAnalysis {
681
- day_cutin: CompDayCutinAnalysis;
682
- fleet_cutin: FleetCutinReport<ShellingStyle>[];
818
+ export interface ShipMeta {
819
+ id: string;
820
+ ship_id: number;
683
821
  }
684
822
 
685
- export interface CompAnalysis {
686
- day: CompDayAnalysis;
687
- night: CompNightAnalysis;
688
- contact: ContactAnalysis;
689
- anti_air: CompAntiAirAnalysis;
823
+ export interface FleetMeta {
824
+ id: string;
825
+ len: number;
826
+ ships: [string, ShipMeta | null][];
690
827
  }
691
828
 
692
- export interface MasterGear {
693
- gear_id: number;
694
- name: string;
695
- types: GearTypeIdArray;
696
- special_type?: number;
697
- max_hp?: number;
698
- firepower?: number;
699
- armor?: number;
700
- torpedo?: number;
701
- anti_air?: number;
702
- speed?: number;
703
- bombing?: number;
704
- asw?: number;
705
- los?: number;
706
- luck?: number;
707
- accuracy?: number;
708
- evasion?: number;
709
- range?: number;
710
- radius?: number;
711
- cost?: number;
712
- improvable?: boolean;
713
- ship_anti_air_resist?: number;
714
- fleet_anti_air_resist?: number;
715
- historical_aircraft_group?: number;
829
+ export interface CompMeta {
830
+ fleets: Record<FleetType, FleetMeta>;
716
831
  }
717
832
 
718
- export type AirState =
719
- | "AirSupremacy"
720
- | "AirSuperiority"
721
- | "AirParity"
722
- | "AirDenial"
723
- | "AirIncapability";
833
+ export interface OrgState {
834
+ id?: string;
835
+ f1?: FleetState;
836
+ f2?: FleetState;
837
+ f3?: FleetState;
838
+ f4?: FleetState;
839
+ a1?: AirSquadronState;
840
+ a2?: AirSquadronState;
841
+ a3?: AirSquadronState;
842
+ hq_level?: number;
843
+ org_type?: OrgType;
844
+ sortie?: FleetKey;
845
+ route_sup?: FleetKey;
846
+ boss_sup?: FleetKey;
847
+ }
724
848
 
725
- export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
849
+ export type FleetKey = "f1" | "f2" | "f3" | "f4";
726
850
 
727
- export interface BattleConditions {
728
- org_type: OrgType;
729
- role: Role;
730
- ship_index: number;
731
- fleet_len: number;
732
- formation: Formation;
733
- fleet_los_mod: number | null;
734
- night_conditions: NightFleetConditions;
851
+ export interface SlotSizeVecState {
852
+ ss1?: number;
853
+ ss2?: number;
854
+ ss3?: number;
855
+ ss4?: number;
856
+ ss5?: number;
735
857
  }
736
858
 
737
- export interface NightConditions {
738
- player?: NightFleetConditions;
739
- enemy?: NightFleetConditions;
859
+ export interface ShipState extends GearVecState, SlotSizeVecState {
860
+ id?: string;
861
+ ship_id: number;
862
+ level?: number;
863
+ current_hp?: number;
864
+ morale?: number;
865
+ ammo?: number;
866
+ fuel?: number;
867
+ max_hp_mod?: number;
868
+ firepower_mod?: number;
869
+ torpedo_mod?: number;
870
+ armor_mod?: number;
871
+ anti_air_mod?: number;
872
+ evasion_mod?: number;
873
+ asw_mod?: number;
874
+ los_mod?: number;
875
+ luck_mod?: number;
876
+ day_gunfit_accuracy?: number;
877
+ night_gunfit_accuracy?: number;
878
+ custom_power_mods?: CustomPowerModifiers;
740
879
  }
741
880
 
742
- export interface NightFleetConditions {
743
- night_contact_rank?: ContactRank | null;
744
- starshell_index?: number | null;
745
- searchlight_index?: number | null;
746
- activates_large_searchlight?: boolean;
747
- }
881
+ export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
748
882
 
749
- export type OrgType =
750
- | "Single"
751
- | "CarrierTaskForce"
752
- | "SurfaceTaskForce"
753
- | "TransportEscort"
754
- | "EnemySingle"
755
- | "EnemyCombined";
883
+ export type Side = "Player" | "Enemy";
756
884
 
757
- export interface ShipPosition {
758
- org_type?: OrgType;
759
- fleet_type?: FleetType;
760
- fleet_len?: number;
761
- index?: number;
885
+ export type Align = "Left" | "Right";
886
+
887
+ export type Histogram<K extends keyof any, V> = Partial<Record<K, V>>;
888
+
889
+ export interface MasterBattleDefinitions {
890
+ formation: NestedFormationDef[];
891
+ anti_air_cutin: AntiAirCutinDef[];
892
+ day_cutin: DayCutinDef[];
893
+ night_cutin: NightCutinDef[];
894
+ historical_bonuses?: HistoricalBonusDef[];
762
895
  }
763
896
 
764
897
  export interface AttackPower {
@@ -788,83 +921,21 @@ export interface AttackPowerParams {
788
921
  custom_mods: CustomPowerModifiers;
789
922
  }
790
923
 
791
- export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
792
- formation?: Formation;
793
- }
794
-
795
- export interface NodeAttackAnalyzerConfig {
796
- air_state?: AirState;
797
- engagement?: Engagement;
798
- node_state?: NodeState;
799
- left?: NodeAttackAnalyzerShipConfig;
800
- right?: NodeAttackAnalyzerShipConfig;
801
- }
802
-
803
- export interface NodeAttackAnalysis {
804
- left: AttackAnalysis;
805
- right: AttackAnalysis;
806
- shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
807
- night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
808
- }
809
-
810
- export interface AttackAnalysis {
811
- attacker_is_player: boolean;
812
- attacker_ship_id: number;
813
- target_ship_id: number;
814
- historical_params: HistoricalParams;
815
- day: ActionReport<DayPhaseAttackStyle>;
816
- night: ActionReport<NightPhaseAttackStyle>;
817
- closing_torpedo: ActionReport<TorpedoAttackStyle>;
818
- opening_asw: ActionReport<AswAttackStyle>;
819
- support_shelling: ActionReport<SupportShellingStyle>;
924
+ export interface ActionReport<T> {
925
+ data: Record<string, AttackReport<T>>;
926
+ damage_state_density: Histogram<DamageState, number> | null;
927
+ is_active: boolean;
820
928
  }
821
929
 
822
- export interface FleetState {
823
- id?: string;
824
- len?: number;
825
- s1?: ShipState;
826
- s2?: ShipState;
827
- s3?: ShipState;
828
- s4?: ShipState;
829
- s5?: ShipState;
830
- s6?: ShipState;
831
- s7?: ShipState;
832
- }
930
+ export type ContactRank = "Rank1" | "Rank2" | "Rank3";
833
931
 
834
- export type GearAttr =
835
- | "Unknown"
836
- | "HighAngleMount"
837
- | "NightFighter"
838
- | "NightAttacker"
839
- | "HeavyBomber"
840
- | "NightRecon"
841
- | "MainGun"
842
- | "Radar"
843
- | "SurfaceRadar"
844
- | "AirRadar"
845
- | "DepthChargeProjector"
846
- | "SynergisticDepthCharge"
847
- | "AntiSubMortar"
848
- | "AntiSubWeapon"
849
- | "ApDepthCharge"
850
- | "AntiSubAircraft"
851
- | "LateModelBowTorpedo"
852
- | "Seaplane"
853
- | "CbAircraft"
854
- | "LbAircraft"
855
- | "JetAircraft"
856
- | "Fighter"
857
- | "Recon"
858
- | "ObservationSeaplane"
859
- | "CbFighterBomber"
860
- | "AntiInstDiveBomber"
861
- | "CbSwordfish"
862
- | "SemiNightPlane"
863
- | "HighAltitudeInterceptor";
932
+ export type SpeedGroup = "A" | "B1" | "B2" | "C";
864
933
 
865
- export interface ShipConditions extends ShipPosition {
866
- formation?: Formation;
867
- amagiri_index?: number | null;
934
+ export interface ShipAnalyzerConfig {
935
+ air_state?: AirState;
936
+ engagement?: Engagement;
937
+ left?: AttackAnalyzerShipConfig;
938
+ right?: AttackAnalyzerShipConfig;
868
939
  }
869
940
 
870
941
  export interface NightContactChance {
@@ -937,89 +1008,21 @@ export interface DayContactChance {
937
1008
  total: number;
938
1009
  }
939
1010
 
940
- export type AswAttackType = "DepthCharge" | "Aerial";
941
-
942
- export type ShellingType = "Normal" | "Aerial";
943
-
944
- export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
945
-
946
- export type SupportShellingType = ShellingType;
947
-
948
- export type AttackType =
949
- | { t: "Asw"; c: AswAttackType }
950
- | { t: "Shelling"; c: ShellingType }
951
- | { t: "Night"; c: NightAttackType }
952
- | { t: "Torpedo" }
953
- | { t: "SupportShelling"; c: SupportShellingType };
954
-
955
- export type DayPhaseAttackType =
956
- | { t: "Shelling"; c: ShellingType }
957
- | { t: "Asw"; c: AswAttackType };
958
-
959
- export type NightPhaseAttackType =
960
- | { t: "Night"; c: NightAttackType }
961
- | { t: "Asw"; c: AswAttackType };
962
-
963
- export type TorpedoAttackType = null;
964
-
965
- export type DayCutin =
966
- | "Zuiun"
967
- | "AirSea"
968
- | "MainMain"
969
- | "MainAp"
970
- | "MainRadar"
971
- | "MainSec"
972
- | "DoubleAttack"
973
- | "FBA"
974
- | "BBA"
975
- | "BA";
976
-
977
- export type NightCutin =
978
- | "MainTorpRadar"
979
- | "TorpLookoutRadar"
980
- | "TorpTsloTorp"
981
- | "TorpTsloDrum"
982
- | "NightZuiun2Radar"
983
- | "NightZuiun2"
984
- | "NightZuiunRadar"
985
- | "NightZuiun"
986
- | "DoubleAttack"
987
- | "TorpTorpMain"
988
- | "TorpTorpTorp"
989
- | "MainMainSec"
990
- | "MainMainMain"
991
- | "SubTorpTorp"
992
- | "SubRadarTorp"
993
- | "Cvci1_25"
994
- | "Cvci1_20"
995
- | "Cvci1_18"
996
- | "Photobomber";
1011
+ export type AirWaveType = "Jet" | "LandBase" | "Carrier";
997
1012
 
998
- export type FleetCutin =
999
- | "NelsonTouch"
1000
- | "NagatoClassCutin"
1001
- | "ColoradoClassCutin"
1002
- | "KongouClassCutin"
1003
- | "Yamato2ShipCutin"
1004
- | "Yamato3ShipCutin";
1013
+ export type AirState =
1014
+ | "AirSupremacy"
1015
+ | "AirSuperiority"
1016
+ | "AirParity"
1017
+ | "AirDenial"
1018
+ | "AirIncapability";
1005
1019
 
1006
- export type DayCutinLike = DayCutin | FleetCutin;
1020
+ export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
1007
1021
 
1008
- export type NightCutinLike = NightCutin | FleetCutin;
1022
+ export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
1009
1023
 
1010
1024
  export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
1011
1025
 
1012
- export type NodeId = string;
1013
-
1014
- export interface NodeState {
1015
- map?: number;
1016
- node?: NodeId;
1017
- phase?: number;
1018
- debuff?: boolean;
1019
- disable_historical_mod?: boolean;
1020
- landing_battle?: boolean;
1021
- }
1022
-
1023
1026
  export type SlotSizeVec = (number | null)[];
1024
1027
 
1025
1028
  export type SpecialEnemyType =
@@ -1036,7 +1039,8 @@ export type SpecialEnemyType =
1036
1039
  | "FrenchBattleshipPrincess"
1037
1040
  | "AnchorageWaterDemonVacationMode"
1038
1041
  | "DockPrincess"
1039
- | "SummerAircraftCarrierDemon";
1042
+ | "SummerAircraftCarrierDemon"
1043
+ | "EuropeanWaterPrincess";
1040
1044
 
1041
1045
  export class AirSquadron {
1042
1046
  private constructor();
@@ -1305,12 +1309,6 @@ export class Ship {
1305
1309
  private constructor();
1306
1310
  free(): void;
1307
1311
  [Symbol.dispose](): void;
1308
- state_day_gunfit_accuracy(): number | undefined;
1309
- state_night_gunfit_accuracy(): number | undefined;
1310
- /**
1311
- * フィット砲補正
1312
- */
1313
- gunfit_accuracy(is_night: boolean): number;
1314
1312
  static default(): Ship;
1315
1313
  eq_id(id: string): boolean;
1316
1314
  state(): ShipState;
@@ -1369,6 +1367,12 @@ export class Ship {
1369
1367
  * 確殺攻撃力
1370
1368
  */
1371
1369
  ohko_power(): number | undefined;
1370
+ state_day_gunfit_accuracy(): number | undefined;
1371
+ state_night_gunfit_accuracy(): number | undefined;
1372
+ /**
1373
+ * フィット砲補正
1374
+ */
1375
+ gunfit_accuracy(is_night: boolean): number;
1372
1376
  id: string;
1373
1377
  readonly hash: bigint;
1374
1378
  readonly ship_id: number;