fleethub-core 1.12.15 → 1.12.17

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,6 +2,38 @@
2
2
  /* eslint-disable */
3
3
  export function parse_ship_conditions(value: ShipConditions): ShipConditions;
4
4
  export function set_panic_hook(): void;
5
+ export type GearAttr =
6
+ | "Unknown"
7
+ | "HighAngleMount"
8
+ | "NightFighter"
9
+ | "NightAttacker"
10
+ | "HeavyBomber"
11
+ | "NightRecon"
12
+ | "NightBomber"
13
+ | "MainGun"
14
+ | "Radar"
15
+ | "SurfaceRadar"
16
+ | "AirRadar"
17
+ | "DepthChargeProjector"
18
+ | "SynergisticDepthCharge"
19
+ | "AntiSubMortar"
20
+ | "AntiSubWeapon"
21
+ | "ApDepthCharge"
22
+ | "AntiSubAircraft"
23
+ | "LateModelBowTorpedo"
24
+ | "Seaplane"
25
+ | "CbAircraft"
26
+ | "LbAircraft"
27
+ | "JetAircraft"
28
+ | "Fighter"
29
+ | "Recon"
30
+ | "ObservationSeaplane"
31
+ | "CbFighterBomber"
32
+ | "AntiInstDiveBomber"
33
+ | "CbSwordfish"
34
+ | "SemiNightPlane"
35
+ | "HighAltitudeInterceptor";
36
+
5
37
  export type ShipAttr =
6
38
  | "Unknown"
7
39
  | "NightCarrier"
@@ -26,35 +58,94 @@ export type ShipAttr =
26
58
 
27
59
  export type Histogram<K extends keyof any, V> = Partial<Record<K, V>>;
28
60
 
29
- export type AswAttackType = "DepthCharge" | "Aerial";
30
-
31
- export type NightPhaseAttackType =
61
+ export type AttackType =
62
+ | { t: "Asw"; c: AswAttackType }
63
+ | { t: "Shelling"; c: ShellingType }
32
64
  | { t: "Night"; c: NightAttackType }
33
- | { t: "Asw"; c: AswAttackType };
65
+ | { t: "Torpedo" }
66
+ | { t: "SupportShelling"; c: SupportShellingType };
34
67
 
35
- export type ShellingType = "Normal" | "Aerial";
68
+ export type SupportShellingType = ShellingType;
36
69
 
37
70
  export type DayPhaseAttackType =
38
71
  | { t: "Shelling"; c: ShellingType }
39
72
  | { t: "Asw"; c: AswAttackType };
40
73
 
41
- export type SupportShellingType = ShellingType;
42
-
43
74
  export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
44
75
 
76
+ export type ShellingType = "Normal" | "Aerial";
77
+
45
78
  export type TorpedoAttackType = null;
46
79
 
47
- export type AttackType =
48
- | { t: "Asw"; c: AswAttackType }
49
- | { t: "Shelling"; c: ShellingType }
80
+ export type NightPhaseAttackType =
50
81
  | { t: "Night"; c: NightAttackType }
51
- | { t: "Torpedo" }
52
- | { t: "SupportShelling"; c: SupportShellingType };
82
+ | { t: "Asw"; c: AswAttackType };
53
83
 
54
- export type SlotSizeVec = (number | null)[];
84
+ export type AswAttackType = "DepthCharge" | "Aerial";
55
85
 
56
86
  export type GearTypeIdArray = [number, number, number, number, number];
57
87
 
88
+ export type FleetCutin =
89
+ | "NelsonTouch"
90
+ | "NagatoClassCutin"
91
+ | "ColoradoClassCutin"
92
+ | "KongouClassCutin"
93
+ | "Yamato2ShipCutin"
94
+ | "Yamato3ShipCutin"
95
+ | "QueenElizabethClassCutin"
96
+ | "RichelieuClassCutin";
97
+
98
+ export type NightCutinLike = NightCutin | FleetCutin;
99
+
100
+ export type DayCutin =
101
+ | "Zuiun"
102
+ | "AirSea"
103
+ | "MainMain"
104
+ | "MainAp"
105
+ | "MainRadar"
106
+ | "MainSec"
107
+ | "DoubleAttack"
108
+ | "JFJBJB"
109
+ | "JFJB"
110
+ | "JFBA"
111
+ | "FBA"
112
+ | "BBA"
113
+ | "BA";
114
+
115
+ export type NightCutin =
116
+ | "MainTorpRadar"
117
+ | "TorpLookoutRadar"
118
+ | "TorpTsloTorp"
119
+ | "TorpTsloDrum"
120
+ | "NightZuiun2Radar"
121
+ | "NightZuiun2"
122
+ | "NightZuiunRadar"
123
+ | "NightZuiun"
124
+ | "DoubleAttack"
125
+ | "TorpTorpMain"
126
+ | "TorpTorpTorp"
127
+ | "MainMainSec"
128
+ | "MainMainMain"
129
+ | "SubTorpTorp"
130
+ | "SubRadarTorp"
131
+ | "Cvci1_25"
132
+ | "Cvci1_20"
133
+ | "Photobomber"
134
+ | "Cvci1_18";
135
+
136
+ export type DayCutinLike = DayCutin | FleetCutin;
137
+
138
+ export interface AttackReport<T> {
139
+ style: T;
140
+ proc_rate: number | null;
141
+ attack_power: AttackPower | null;
142
+ attack_power_params: AttackPowerParams | null;
143
+ hits: number;
144
+ hit_rate: HitRate | null;
145
+ hit_rate_params: HitRateParams | null;
146
+ damage: DamageReport | null;
147
+ }
148
+
58
149
  export interface DamageReport {
59
150
  miss_damage_min: number;
60
151
  miss_damage_max: number;
@@ -68,18 +159,12 @@ export interface DamageReport {
68
159
  damage_state_density: Histogram<DamageState, number>;
69
160
  }
70
161
 
71
- export interface DayContactChance {
72
- air_state: AirState;
73
- trigger_rate: number;
74
- rank3: number;
75
- rank2: number;
76
- rank1: number;
77
- total: number;
78
- }
79
-
80
- export interface ContactAnalysis {
81
- single: DayContactChance[] | null;
82
- combined: DayContactChance[] | null;
162
+ export interface ShipDayCutinAnalysis {
163
+ ship_id: number;
164
+ role: Role;
165
+ index: number;
166
+ rank3: DayCutinReport;
167
+ rank2: DayCutinReport;
83
168
  }
84
169
 
85
170
  export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
@@ -94,19 +179,9 @@ export interface CompDayCutinAnalysis {
94
179
  ships: ShipDayCutinAnalysis[];
95
180
  }
96
181
 
97
- export interface ShipDayCutinAnalysis {
98
- ship_id: number;
99
- role: Role;
100
- index: number;
101
- rank3: DayCutinReport;
102
- rank2: DayCutinReport;
103
- }
104
-
105
- export interface ShipNightCutinAnalysis {
106
- ship_id: number;
107
- index: number;
108
- normal: NightCutinActionReport;
109
- chuuha: NightCutinActionReport;
182
+ export interface CompNightCutinAnalysis {
183
+ night_contact_chance: NightContactChance;
184
+ ships: ShipNightCutinAnalysis[];
110
185
  }
111
186
 
112
187
  export interface NightContactChance {
@@ -115,16 +190,18 @@ export interface NightContactChance {
115
190
  rank3: number;
116
191
  }
117
192
 
118
- export interface CompNightCutinAnalysis {
119
- night_contact_chance: NightContactChance;
120
- ships: ShipNightCutinAnalysis[];
121
- }
122
-
123
193
  export interface NightCutinActionReport
124
194
  extends ActionReport<NightPhaseAttackStyle> {
125
195
  cutin_term: number | null;
126
196
  }
127
197
 
198
+ export interface ShipNightCutinAnalysis {
199
+ ship_id: number;
200
+ index: number;
201
+ normal: NightCutinActionReport;
202
+ chuuha: NightCutinActionReport;
203
+ }
204
+
128
205
  export interface MasterShip {
129
206
  ship_id: number;
130
207
  name: string;
@@ -159,23 +236,68 @@ export interface MasterShip {
159
236
 
160
237
  export type StatInterval = [number | null, number | null];
161
238
 
162
- export interface GearState {
239
+ export interface MasterData extends MasterBattleDefinitions {
240
+ created_at: number;
241
+ gears: MasterGear[];
242
+ gear_attrs: MasterAttrRule<GearAttr>[];
243
+ ships: MasterShip[];
244
+ ship_attrs: MasterAttrRule<ShipAttr>[];
245
+ ibonuses: MasterIBonuses;
246
+ equippability: MasterEquippability;
247
+ }
248
+
249
+ export interface NationalityDef {
250
+ id: number;
251
+ ctypes: number[];
252
+ }
253
+
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
+ export interface SlotSizeVecState {
263
+ ss1?: number;
264
+ ss2?: number;
265
+ ss3?: number;
266
+ ss4?: number;
267
+ ss5?: number;
268
+ }
269
+
270
+ export interface ShipState extends GearVecState, SlotSizeVecState {
163
271
  id?: string;
164
- gear_id: number;
165
- exp?: number;
166
- stars?: number;
272
+ ship_id: number;
273
+ level?: number;
274
+ current_hp?: number;
275
+ morale?: number;
276
+ ammo?: number;
277
+ fuel?: number;
278
+ max_hp_mod?: number;
279
+ firepower_mod?: number;
280
+ torpedo_mod?: number;
281
+ armor_mod?: number;
282
+ anti_air_mod?: number;
283
+ evasion_mod?: number;
284
+ asw_mod?: number;
285
+ los_mod?: number;
286
+ luck_mod?: number;
287
+ day_gunfit_accuracy?: number;
288
+ night_gunfit_accuracy?: number;
289
+ custom_power_mods?: CustomPowerModifiers;
167
290
  }
168
291
 
169
- export interface GearVecState {
170
- g1?: GearState;
171
- g2?: GearState;
172
- g3?: GearState;
173
- g4?: GearState;
174
- g5?: GearState;
175
- gx?: GearState;
292
+ export interface TorpedoAttackStyle {
293
+ tag: "TorpedoAttackStyle";
294
+ attack_type: TorpedoAttackType;
176
295
  }
177
296
 
178
- export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
297
+ export interface SupportShellingStyle {
298
+ tag: "SupportShellingStyle";
299
+ attack_type: SupportShellingType;
300
+ }
179
301
 
180
302
  export interface ShellingStyle {
181
303
  tag: "ShellingStyle";
@@ -200,49 +322,184 @@ export interface AswAttackStyle {
200
322
  attack_type: AswAttackType;
201
323
  }
202
324
 
325
+ export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
326
+
203
327
  export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
204
328
 
205
- export interface SupportShellingStyle {
206
- tag: "SupportShellingStyle";
207
- attack_type: SupportShellingType;
208
- }
329
+ export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
209
330
 
210
- export interface TorpedoAttackStyle {
211
- tag: "TorpedoAttackStyle";
212
- attack_type: TorpedoAttackType;
213
- }
331
+ export type SpecialEnemyType =
332
+ | "None"
333
+ | "SoftSkinned"
334
+ | "Pillbox"
335
+ | "IsolatedIsland"
336
+ | "SupplyDepot"
337
+ | "NewSupplyDepot"
338
+ | "HarbourSummerPrincess"
339
+ | "PtImp"
340
+ | "BattleshipSummerPrincess"
341
+ | "HeavyCruiserSummerPrincess"
342
+ | "FrenchBattleshipPrincess"
343
+ | "AnchorageWaterDemonVacationMode"
344
+ | "DockPrincess"
345
+ | "SummerAircraftCarrierDemon"
346
+ | "EuropeanWaterPrincess";
214
347
 
215
- export interface ShipConditions extends ShipPosition {
216
- formation?: Formation;
217
- amagiri_index?: number | null;
348
+ export type Role = "Main" | "Escort";
349
+
350
+ export type Align = "Left" | "Right";
351
+
352
+ export type Side = "Player" | "Enemy";
353
+
354
+ export type ShipCategory =
355
+ | "Battleship"
356
+ | "AircraftCarrier"
357
+ | "HeavyCruiser"
358
+ | "LightCruiser"
359
+ | "Destroyer"
360
+ | "CoastalDefenseShip"
361
+ | "Submarine"
362
+ | "AuxiliaryShip";
363
+
364
+ export type ShipType =
365
+ | "Unknown"
366
+ | "DE"
367
+ | "DD"
368
+ | "CL"
369
+ | "CLT"
370
+ | "CA"
371
+ | "CAV"
372
+ | "CVL"
373
+ | "FBB"
374
+ | "BB"
375
+ | "BBV"
376
+ | "CV"
377
+ | "XBB"
378
+ | "SS"
379
+ | "SSV"
380
+ | "AP"
381
+ | "AV"
382
+ | "LHA"
383
+ | "CVB"
384
+ | "AR"
385
+ | "AS"
386
+ | "CT"
387
+ | "AO";
388
+
389
+ export interface DayContactChance {
390
+ air_state: AirState;
391
+ trigger_rate: number;
392
+ rank3: number;
393
+ rank2: number;
394
+ rank1: number;
395
+ total: number;
218
396
  }
219
397
 
220
- export interface NodeAttackAnalyzerConfig {
221
- air_state?: AirState;
222
- engagement?: Engagement;
223
- node_state?: NodeState;
224
- left?: NodeAttackAnalyzerShipConfig;
225
- right?: NodeAttackAnalyzerShipConfig;
398
+ export interface ContactAnalysis {
399
+ single: DayContactChance[] | null;
400
+ combined: DayContactChance[] | null;
226
401
  }
227
402
 
228
- export interface NodeAttackAnalysis {
229
- left: AttackAnalysis;
230
- right: AttackAnalysis;
231
- shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
232
- night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
403
+ export type NodeId = string;
404
+
405
+ export interface NodeState {
406
+ map?: number;
407
+ node?: NodeId;
408
+ phase?: number;
409
+ debuff?: boolean;
410
+ disable_historical_mod?: boolean;
411
+ landing_battle?: boolean;
233
412
  }
234
413
 
235
- export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
236
- formation?: Formation;
414
+ export type SpeedGroup = "A" | "B1" | "B2" | "C";
415
+
416
+ export interface SupportShellingSimulatorParams {
417
+ attacker_formation?: Formation;
418
+ target_formation?: Formation;
419
+ engagement: Engagement;
420
+ node_state: NodeState;
421
+ }
422
+
423
+ export type SlotSizeVec = (number | null)[];
424
+
425
+ export type FhResult<T> = { Ok: T } | { Err: string };
426
+
427
+ export interface MasterBattleDefinitions {
428
+ formation: NestedFormationDef[];
429
+ anti_air_cutin: AntiAirCutinDef[];
430
+ day_cutin: DayCutinDef[];
431
+ night_cutin: NightCutinDef[];
432
+ historical_bonuses?: HistoricalBonusDef[];
433
+ }
434
+
435
+ export type AirWaveType = "Jet" | "LandBase" | "Carrier";
436
+
437
+ export interface GearState {
438
+ id?: string;
439
+ gear_id: number;
440
+ exp?: number;
441
+ stars?: number;
442
+ }
443
+
444
+ export interface GearVecState {
445
+ g1?: GearState;
446
+ g2?: GearState;
447
+ g3?: GearState;
448
+ g4?: GearState;
449
+ g5?: GearState;
450
+ gx?: GearState;
451
+ }
452
+
453
+ export type ContactRank = "Rank1" | "Rank2" | "Rank3";
454
+
455
+ export interface FleetMeta {
456
+ id: string;
457
+ len: number;
458
+ ships: [string, ShipMeta | null][];
459
+ }
460
+
461
+ export interface CompMeta {
462
+ fleets: Record<FleetType, FleetMeta>;
463
+ }
464
+
465
+ export interface ShipMeta {
466
+ id: string;
467
+ ship_id: number;
468
+ }
469
+
470
+ export interface ActionReport<T> {
471
+ data: Record<string, AttackReport<T>>;
472
+ damage_state_density: Histogram<DamageState, number> | null;
473
+ is_active: boolean;
474
+ }
475
+
476
+ export interface SimulatorResult {
477
+ items: SimulatorResultItem[];
478
+ sunk_vec: [number, number, number][];
479
+ }
480
+
481
+ export interface SimulatorResultItem {
482
+ id: string;
483
+ fleet_type: FleetType;
484
+ index: number;
485
+ damage_state_map: Record<DamageState, number>;
237
486
  }
238
487
 
239
488
  export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
240
489
 
241
- export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
490
+ export interface FleetState {
491
+ id?: string;
492
+ len?: number;
493
+ s1?: ShipState;
494
+ s2?: ShipState;
495
+ s3?: ShipState;
496
+ s4?: ShipState;
497
+ s5?: ShipState;
498
+ s6?: ShipState;
499
+ s7?: ShipState;
500
+ }
242
501
 
243
- export type NestedFormationDef =
244
- | FormationDef
245
- | { top_half: FormationDef; bottom_half: FormationDef };
502
+ export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
246
503
 
247
504
  export interface DayCutinDef {
248
505
  tag: DayCutin;
@@ -252,14 +509,21 @@ export interface DayCutinDef {
252
509
  accuracy_mod: number | null;
253
510
  }
254
511
 
255
- export interface BattleDefinitions {
256
- formation: Record<Formation, NestedFormationDef>;
257
- anti_air_cutin: Record<number, AntiAirCutinDef>;
258
- day_cutin: Record<DayCutin, DayCutinDef>;
259
- night_cutin: Record<NightCutin, NightCutinDef>;
260
- historical_bonuses: HistoricalBonusDef[];
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;
261
521
  }
262
522
 
523
+ export type NestedFormationDef =
524
+ | FormationDef
525
+ | { top_half: FormationDef; bottom_half: FormationDef };
526
+
263
527
  export interface HistoricalParams {
264
528
  power_mod: AttackPowerModifier;
265
529
  armor_penetration: number;
@@ -267,12 +531,6 @@ export interface HistoricalParams {
267
531
  target_evasion_mod: number;
268
532
  }
269
533
 
270
- export interface FormationCombatModifiersDef {
271
- power_mod?: number;
272
- accuracy_mod?: number;
273
- evasion_mod?: number;
274
- }
275
-
276
534
  export interface AntiAirCutinDef {
277
535
  id: number;
278
536
  type_factor: number | null;
@@ -281,15 +539,10 @@ export interface AntiAirCutinDef {
281
539
  sequential: boolean | null;
282
540
  }
283
541
 
284
- export interface FormationDef {
285
- tag: Formation;
286
- protection_rate: number | null;
287
- fleet_anti_air_mod: number;
288
- shelling: FormationCombatModifiersDef;
289
- torpedo: FormationCombatModifiersDef;
290
- asw: FormationCombatModifiersDef;
291
- night: FormationCombatModifiersDef;
292
- support_shelling: FormationCombatModifiersDef;
542
+ export interface FormationCombatModifiersDef {
543
+ power_mod?: number;
544
+ accuracy_mod?: number;
545
+ evasion_mod?: number;
293
546
  }
294
547
 
295
548
  export interface NightCutinDef {
@@ -300,6 +553,14 @@ export interface NightCutinDef {
300
553
  accuracy_mod: number | null;
301
554
  }
302
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
+
303
564
  export interface HistoricalBonusDef {
304
565
  map?: number;
305
566
  node?: CompiledEvaler;
@@ -313,6 +574,18 @@ export interface HistoricalBonusDef {
313
574
  evasion_mod?: number;
314
575
  }
315
576
 
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
+ }
588
+
316
589
  export interface SpecialEnemyModifiers {
317
590
  precap_general_mod: AttackPowerModifier;
318
591
  stype_mod: AttackPowerModifier;
@@ -336,28 +609,6 @@ export interface SpecialEnemyModifiers {
336
609
  pt_mod: AttackPowerModifier | null;
337
610
  }
338
611
 
339
- export interface CustomPowerModifiers {
340
- precap_mod?: AttackPowerModifier;
341
- postcap_mod?: AttackPowerModifier;
342
- basic_power_mod?: AttackPowerModifier;
343
- historical_mod?: AttackPowerModifier;
344
- }
345
-
346
- export interface AttackPowerModifier {
347
- a?: number;
348
- b?: number;
349
- }
350
-
351
- export type OrgType =
352
- | "Single"
353
- | "CarrierTaskForce"
354
- | "SurfaceTaskForce"
355
- | "TransportEscort"
356
- | "EnemySingle"
357
- | "EnemyCombined";
358
-
359
- export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
360
-
361
612
  export type AirState =
362
613
  | "AirSupremacy"
363
614
  | "AirSuperiority"
@@ -365,7 +616,7 @@ export type AirState =
365
616
  | "AirDenial"
366
617
  | "AirIncapability";
367
618
 
368
- export type Formation = SingleFormation | CombinedFormation;
619
+ export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
369
620
 
370
621
  export type CombinedFormation =
371
622
  | "Cruising1"
@@ -373,6 +624,8 @@ export type CombinedFormation =
373
624
  | "Cruising3"
374
625
  | "Cruising4";
375
626
 
627
+ export type Formation = SingleFormation | CombinedFormation;
628
+
376
629
  export type SingleFormation =
377
630
  | "LineAhead"
378
631
  | "DoubleLine"
@@ -381,17 +634,38 @@ export type SingleFormation =
381
634
  | "LineAbreast"
382
635
  | "Vanguard";
383
636
 
384
- export interface CompAntiAirAnalysis {
385
- fleet_adjusted_anti_air: number;
386
- ships: AntiAirReport[];
387
- anti_air_cutin_chance: [number, number][];
388
- }
389
-
390
- export interface AntiAirReport {
391
- ship_id: number;
392
- role: Role;
393
- index: number;
394
- adjusted_anti_air: number | null;
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
+ }
646
+
647
+ export interface AttackPowerParams {
648
+ is_cutin: boolean;
649
+ basic: number;
650
+ cap: number;
651
+ precap_mod: AttackPowerModifier;
652
+ postcap_mod: AttackPowerModifier;
653
+ ap_shell_mod: number | null;
654
+ aerial_power: number | null;
655
+ proficiency_critical_mod: number;
656
+ armor_penetration: number;
657
+ remaining_ammo_mod: number;
658
+ balloon_mod: number;
659
+ special_enemy_mods: SpecialEnemyModifiers;
660
+ historical_mod: AttackPowerModifier;
661
+ custom_mods: CustomPowerModifiers;
662
+ }
663
+
664
+ export interface AntiAirReport {
665
+ ship_id: number;
666
+ role: Role;
667
+ index: number;
668
+ adjusted_anti_air: number | null;
395
669
  proportional_shotdown_rate: number | null;
396
670
  fixed_shotdown_number: number | null;
397
671
  guaranteed: number | null;
@@ -399,10 +673,10 @@ export interface AntiAirReport {
399
673
  anti_air_propellant_barrage_chance: number | null;
400
674
  }
401
675
 
402
- export interface FleetCutinAttackReport<T> extends AttackReport<T> {
403
- index: number;
404
- ship_id: number;
405
- power_mod: number;
676
+ export interface CompAntiAirAnalysis {
677
+ fleet_adjusted_anti_air: number;
678
+ ships: AntiAirReport[];
679
+ anti_air_cutin_chance: [number, number][];
406
680
  }
407
681
 
408
682
  export interface FleetCutinReport<T> {
@@ -412,220 +686,108 @@ export interface FleetCutinReport<T> {
412
686
  attacks: FleetCutinAttackReport<T>[];
413
687
  }
414
688
 
415
- export type DayCutinLike = DayCutin | FleetCutin;
416
-
417
- export type NightCutin =
418
- | "MainTorpRadar"
419
- | "TorpLookoutRadar"
420
- | "TorpTsloTorp"
421
- | "TorpTsloDrum"
422
- | "NightZuiun2Radar"
423
- | "NightZuiun2"
424
- | "NightZuiunRadar"
425
- | "NightZuiun"
426
- | "DoubleAttack"
427
- | "TorpTorpMain"
428
- | "TorpTorpTorp"
429
- | "MainMainSec"
430
- | "MainMainMain"
431
- | "SubTorpTorp"
432
- | "SubRadarTorp"
433
- | "Cvci1_25"
434
- | "Cvci1_20"
435
- | "Cvci1_18"
436
- | "Photobomber";
689
+ export interface FleetCutinAttackReport<T> extends AttackReport<T> {
690
+ index: number;
691
+ ship_id: number;
692
+ power_mod: number;
693
+ }
437
694
 
438
- export type FleetCutin =
439
- | "NelsonTouch"
440
- | "NagatoClassCutin"
441
- | "ColoradoClassCutin"
442
- | "KongouClassCutin"
443
- | "Yamato2ShipCutin"
444
- | "Yamato3ShipCutin"
445
- | "QueenElizabethClassCutin"
446
- | "RichelieuClassCutin";
695
+ export interface BattleConditions {
696
+ org_type: OrgType;
697
+ role: Role;
698
+ ship_index: number;
699
+ fleet_len: number;
700
+ formation: Formation;
701
+ fleet_los_mod: number | null;
702
+ night_conditions: NightFleetConditions;
703
+ }
447
704
 
448
- export type NightCutinLike = NightCutin | FleetCutin;
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
+ }
449
711
 
450
- export type DayCutin =
451
- | "Zuiun"
452
- | "AirSea"
453
- | "MainMain"
454
- | "MainAp"
455
- | "MainRadar"
456
- | "MainSec"
457
- | "DoubleAttack"
458
- | "FBA"
459
- | "BBA"
460
- | "BA";
712
+ export interface NightConditions {
713
+ player?: NightFleetConditions;
714
+ enemy?: NightFleetConditions;
715
+ }
461
716
 
462
- export type GearType =
463
- | "Unknown"
464
- | "SmallMainGun"
465
- | "MediumMainGun"
466
- | "LargeMainGun"
467
- | "SecondaryGun"
468
- | "Torpedo"
469
- | "CbFighter"
470
- | "CbDiveBomber"
471
- | "CbTorpedoBomber"
472
- | "CbRecon"
473
- | "ReconSeaplane"
474
- | "SeaplaneBomber"
475
- | "SmallRadar"
476
- | "LargeRadar"
477
- | "Sonar"
478
- | "DepthCharge"
479
- | "ExtraArmor"
480
- | "Engine"
481
- | "AntiAirShell"
482
- | "ApShell"
483
- | "VtFuze"
484
- | "AntiAirGun"
485
- | "MidgetSubmarine"
486
- | "EmergencyRepair"
487
- | "LandingCraft"
488
- | "Rotorcraft"
489
- | "AntiSubPatrolAircraft"
490
- | "MediumArmor"
491
- | "LargeArmor"
492
- | "Searchlight"
493
- | "SupplyContainer"
494
- | "ShipRepairFacility"
495
- | "SubmarineTorpedo"
496
- | "Starshell"
497
- | "CommandFacility"
498
- | "AviationPersonnel"
499
- | "AntiAirFireDirector"
500
- | "AntiGroundEquipment"
501
- | "LargeMainGun2"
502
- | "ShipPersonnel"
503
- | "LargeSonar"
504
- | "LargeFlyingBoat"
505
- | "LargeSearchlight"
506
- | "CombatRation"
507
- | "Supplies"
508
- | "SeaplaneFighter"
509
- | "AmphibiousTank"
510
- | "LbAttacker"
511
- | "LbFighter"
512
- | "LbRecon"
513
- | "TransportationMaterial"
514
- | "SubmarineEquipment"
515
- | "LandingForce"
516
- | "LargeLbAircraft"
517
- | "SurfaceEquipment"
518
- | "JetFighter"
519
- | "JetFighterBomber"
520
- | "JetTorpedoBomber"
521
- | "JetRecon"
522
- | "LargeRadar2"
523
- | "CbRecon2"
524
- | "SecondaryGun2";
717
+ export type OrgType =
718
+ | "Single"
719
+ | "CarrierTaskForce"
720
+ | "SurfaceTaskForce"
721
+ | "TransportEscort"
722
+ | "EnemySingle"
723
+ | "EnemyCombined";
525
724
 
526
- export type GearCategory =
527
- | "Fighter"
528
- | "Bomber"
529
- | "Recon"
530
- | "MainGun"
531
- | "Secondary"
532
- | "Torpedo"
533
- | "AntiSub"
534
- | "Radar"
535
- | "Landing"
536
- | "Ration"
537
- | "LandBased"
538
- | "Misc";
725
+ export interface ShipPosition {
726
+ org_type?: OrgType;
727
+ fleet_type?: FleetType;
728
+ fleet_len?: number;
729
+ index?: number;
730
+ }
539
731
 
540
- export type ShipCategory =
541
- | "Battleship"
542
- | "AircraftCarrier"
543
- | "HeavyCruiser"
544
- | "LightCruiser"
545
- | "Destroyer"
546
- | "CoastalDefenseShip"
547
- | "Submarine"
548
- | "AuxiliaryShip";
732
+ export interface MasterIBonusRule {
733
+ expr: CompiledEvaler;
734
+ formula: CompiledEvaler;
735
+ }
549
736
 
550
- export type ShipType =
551
- | "Unknown"
552
- | "DE"
553
- | "DD"
554
- | "CL"
555
- | "CLT"
556
- | "CA"
557
- | "CAV"
558
- | "CVL"
559
- | "FBB"
560
- | "BB"
561
- | "BBV"
562
- | "CV"
563
- | "XBB"
564
- | "SS"
565
- | "SSV"
566
- | "AP"
567
- | "AV"
568
- | "LHA"
569
- | "CVB"
570
- | "AR"
571
- | "AS"
572
- | "CT"
573
- | "AO";
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
+ }
574
756
 
575
- export interface AttackPower {
576
- precap: number;
577
- is_capped: boolean;
578
- capped: number;
579
- normal: number;
580
- critical: number;
581
- armor_penetration: number;
582
- remaining_ammo_mod: number;
757
+ export interface EquippabilityRule {
758
+ ship: CompiledEvaler;
759
+ keys?: string[];
760
+ include?: string;
761
+ exclude?: string;
583
762
  }
584
763
 
585
- export interface AttackPowerParams {
586
- is_cutin: boolean;
587
- basic: number;
588
- cap: number;
589
- precap_mod: AttackPowerModifier;
590
- postcap_mod: AttackPowerModifier;
591
- ap_shell_mod: number | null;
592
- aerial_power: number | null;
593
- proficiency_critical_mod: number;
594
- armor_penetration: number;
595
- remaining_ammo_mod: number;
596
- balloon_mod: number;
597
- special_enemy_mods: SpecialEnemyModifiers;
598
- historical_mod: AttackPowerModifier;
599
- custom_mods: CustomPowerModifiers;
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;
600
770
  }
601
771
 
602
- export interface HitRateParams {
603
- accuracy_term: number;
604
- evasion_term: number;
605
- target_morale_mod: number;
606
- critical_rate_constant: number;
607
- critical_percentage_bonus: number;
608
- hit_percentage_bonus: number;
772
+ export interface MstStype {
773
+ api_id: number;
774
+ api_equip_type: Record<number, number>;
609
775
  }
610
776
 
611
- export interface HitRate {
612
- normal: number;
613
- critical: number;
614
- total: number;
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[];
615
783
  }
616
784
 
617
- export interface AttackAnalysis {
618
- attacker_is_player: boolean;
619
- attacker_ship_id: number;
620
- target_ship_id: number;
621
- historical_params: HistoricalParams;
622
- day: ActionReport<DayPhaseAttackStyle>;
623
- night: ActionReport<NightPhaseAttackStyle>;
624
- closing_torpedo: ActionReport<TorpedoAttackStyle>;
625
- opening_asw: ActionReport<AswAttackStyle>;
626
- support_shelling: ActionReport<SupportShellingStyle>;
785
+ export interface MstEquipShip {
786
+ api_equip_type: Record<number, MstEquipShipValue>;
627
787
  }
628
788
 
789
+ export type CompiledEvaler = string;
790
+
629
791
  export interface MasterGear {
630
792
  gear_id: number;
631
793
  name: string;
@@ -652,132 +814,26 @@ export interface MasterGear {
652
814
  historical_aircraft_group?: number;
653
815
  }
654
816
 
655
- export interface MasterBattleDefinitions {
656
- formation: NestedFormationDef[];
657
- anti_air_cutin: AntiAirCutinDef[];
658
- day_cutin: DayCutinDef[];
659
- night_cutin: NightCutinDef[];
660
- historical_bonuses?: HistoricalBonusDef[];
661
- }
662
-
663
- export interface FleetState {
664
- id?: string;
665
- len?: number;
666
- s1?: ShipState;
667
- s2?: ShipState;
668
- s3?: ShipState;
669
- s4?: ShipState;
670
- s5?: ShipState;
671
- s6?: ShipState;
672
- s7?: ShipState;
673
- }
674
-
675
- export type ContactRank = "Rank1" | "Rank2" | "Rank3";
676
-
677
- export interface ActionReport<T> {
678
- data: Record<string, AttackReport<T>>;
679
- damage_state_density: Histogram<DamageState, number> | null;
680
- is_active: boolean;
681
- }
682
-
683
- export interface AttackReport<T> {
684
- style: T;
685
- proc_rate: number | null;
686
- attack_power: AttackPower | null;
687
- attack_power_params: AttackPowerParams | null;
688
- hits: number;
689
- hit_rate: HitRate | null;
690
- hit_rate_params: HitRateParams | null;
691
- damage: DamageReport | null;
692
- }
693
-
694
817
  export interface MoveShipPayload {
695
818
  current: [string, string, ShipKey];
696
819
  target: [string | null, string, ShipKey];
697
820
  }
698
821
 
699
- export type AirWaveType = "Jet" | "LandBase" | "Carrier";
700
-
701
822
  export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
702
823
 
703
- export interface SlotSizeVecState {
704
- ss1?: number;
705
- ss2?: number;
706
- ss3?: number;
707
- ss4?: number;
708
- ss5?: number;
709
- }
710
-
711
- export interface ShipState extends GearVecState, SlotSizeVecState {
712
- id?: string;
713
- ship_id: number;
714
- level?: number;
715
- current_hp?: number;
716
- morale?: number;
717
- ammo?: number;
718
- fuel?: number;
719
- max_hp_mod?: number;
720
- firepower_mod?: number;
721
- torpedo_mod?: number;
722
- armor_mod?: number;
723
- anti_air_mod?: number;
724
- evasion_mod?: number;
725
- asw_mod?: number;
726
- los_mod?: number;
727
- luck_mod?: number;
728
- day_gunfit_accuracy?: number;
729
- night_gunfit_accuracy?: number;
730
- custom_power_mods?: CustomPowerModifiers;
824
+ export interface ShipConditions extends ShipPosition {
825
+ formation?: Formation;
826
+ amagiri_index?: number | null;
731
827
  }
732
828
 
733
- export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
734
-
735
- export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
736
-
737
- export type AirSquadronMode = "Sortie" | "AirDefense";
738
-
739
829
  export interface AirSquadronState extends GearVecState, SlotSizeVecState {
740
830
  id?: string;
741
831
  mode?: AirSquadronMode;
742
832
  }
743
833
 
744
- export type SpecialEnemyType =
745
- | "None"
746
- | "SoftSkinned"
747
- | "Pillbox"
748
- | "IsolatedIsland"
749
- | "SupplyDepot"
750
- | "NewSupplyDepot"
751
- | "HarbourSummerPrincess"
752
- | "PtImp"
753
- | "BattleshipSummerPrincess"
754
- | "HeavyCruiserSummerPrincess"
755
- | "FrenchBattleshipPrincess"
756
- | "AnchorageWaterDemonVacationMode"
757
- | "DockPrincess"
758
- | "SummerAircraftCarrierDemon"
759
- | "EuropeanWaterPrincess";
760
-
761
- export interface FleetMeta {
762
- id: string;
763
- len: number;
764
- ships: [string, ShipMeta | null][];
765
- }
766
-
767
- export interface ShipMeta {
768
- id: string;
769
- ship_id: number;
770
- }
771
-
772
- export interface CompMeta {
773
- fleets: Record<FleetType, FleetMeta>;
774
- }
775
-
776
- export type Role = "Main" | "Escort";
777
-
778
- export type Side = "Player" | "Enemy";
834
+ export type AirSquadronMode = "Sortie" | "AirDefense";
779
835
 
780
- export type Align = "Left" | "Right";
836
+ export type GearVecInput = GearInput[];
781
837
 
782
838
  export interface ShipInput {
783
839
  ship_id: number;
@@ -786,9 +842,7 @@ export interface ShipInput {
786
842
  yomi: string;
787
843
  }
788
844
 
789
- export interface GearInput {
790
- gear_id: number;
791
- types: GearTypeIdArray;
845
+ export interface EBonuses {
792
846
  firepower: number;
793
847
  torpedo: number;
794
848
  anti_air: number;
@@ -799,12 +853,11 @@ export interface GearInput {
799
853
  bombing: number;
800
854
  accuracy: number;
801
855
  range: number;
802
- radius: number;
803
- stars: number;
804
- ace: number;
805
856
  }
806
857
 
807
- export interface EBonuses {
858
+ export interface GearInput {
859
+ gear_id: number;
860
+ types: GearTypeIdArray;
808
861
  firepower: number;
809
862
  torpedo: number;
810
863
  anti_air: number;
@@ -815,9 +868,90 @@ export interface EBonuses {
815
868
  bombing: number;
816
869
  accuracy: number;
817
870
  range: number;
871
+ radius: number;
872
+ stars: number;
873
+ ace: number;
818
874
  }
819
875
 
820
- export type GearVecInput = GearInput[];
876
+ export type GearCategory =
877
+ | "Fighter"
878
+ | "Bomber"
879
+ | "Recon"
880
+ | "MainGun"
881
+ | "Secondary"
882
+ | "Torpedo"
883
+ | "AntiSub"
884
+ | "Radar"
885
+ | "Landing"
886
+ | "Ration"
887
+ | "LandBased"
888
+ | "Misc";
889
+
890
+ export type GearType =
891
+ | "Unknown"
892
+ | "SmallMainGun"
893
+ | "MediumMainGun"
894
+ | "LargeMainGun"
895
+ | "SecondaryGun"
896
+ | "Torpedo"
897
+ | "CbFighter"
898
+ | "CbDiveBomber"
899
+ | "CbTorpedoBomber"
900
+ | "CbRecon"
901
+ | "ReconSeaplane"
902
+ | "SeaplaneBomber"
903
+ | "SmallRadar"
904
+ | "LargeRadar"
905
+ | "Sonar"
906
+ | "DepthCharge"
907
+ | "ExtraArmor"
908
+ | "Engine"
909
+ | "AntiAirShell"
910
+ | "ApShell"
911
+ | "VtFuze"
912
+ | "AntiAirGun"
913
+ | "MidgetSubmarine"
914
+ | "EmergencyRepair"
915
+ | "LandingCraft"
916
+ | "Rotorcraft"
917
+ | "AntiSubPatrolAircraft"
918
+ | "MediumArmor"
919
+ | "LargeArmor"
920
+ | "Searchlight"
921
+ | "SupplyContainer"
922
+ | "ShipRepairFacility"
923
+ | "SubmarineTorpedo"
924
+ | "Starshell"
925
+ | "CommandFacility"
926
+ | "AviationPersonnel"
927
+ | "AntiAirFireDirector"
928
+ | "AntiGroundEquipment"
929
+ | "LargeMainGun2"
930
+ | "ShipPersonnel"
931
+ | "LargeSonar"
932
+ | "LargeFlyingBoat"
933
+ | "LargeSearchlight"
934
+ | "CombatRation"
935
+ | "Supplies"
936
+ | "SeaplaneFighter"
937
+ | "AmphibiousTank"
938
+ | "LbAttacker"
939
+ | "LbFighter"
940
+ | "LbRecon"
941
+ | "TransportationMaterial"
942
+ | "SubmarineEquipment"
943
+ | "LandingForce"
944
+ | "LargeLbAircraft"
945
+ | "SurfaceEquipment"
946
+ | "JetFighter"
947
+ | "JetFighterBomber"
948
+ | "JetTorpedoBomber"
949
+ | "JetRecon"
950
+ | "LargeRadar2"
951
+ | "CbRecon2"
952
+ | "SecondaryGun2";
953
+
954
+ export type FleetKey = "f1" | "f2" | "f3" | "f4";
821
955
 
822
956
  export interface OrgState {
823
957
  id?: string;
@@ -835,7 +969,20 @@ export interface OrgState {
835
969
  boss_sup?: FleetKey;
836
970
  }
837
971
 
838
- export type FleetKey = "f1" | "f2" | "f3" | "f4";
972
+ export interface HitRateParams {
973
+ accuracy_term: number;
974
+ evasion_term: number;
975
+ target_morale_mod: number;
976
+ critical_rate_constant: number;
977
+ critical_percentage_bonus: number;
978
+ hit_percentage_bonus: number;
979
+ }
980
+
981
+ export interface HitRate {
982
+ normal: number;
983
+ critical: number;
984
+ total: number;
985
+ }
839
986
 
840
987
  export interface CompNightAnalysis {
841
988
  night_cutin: CompNightCutinAnalysis;
@@ -849,11 +996,6 @@ export interface CompAnalysis {
849
996
  anti_air: CompAntiAirAnalysis;
850
997
  }
851
998
 
852
- export interface CompDayAnalysis {
853
- day_cutin: CompDayCutinAnalysis;
854
- fleet_cutin: FleetCutinReport<ShellingStyle>[];
855
- }
856
-
857
999
  export interface CompAnalyzerConfig {
858
1000
  engagement: Engagement;
859
1001
  formation: Formation;
@@ -864,192 +1006,54 @@ export interface CompAnalyzerConfig {
864
1006
  right_night_fleet_conditions: NightFleetConditions;
865
1007
  }
866
1008
 
867
- export interface AttackAnalyzerShipConfig
868
- extends ShipConditions,
869
- NightFleetConditions {
870
- balloons?: number;
871
- fleet_los_mod?: number | null;
872
- }
873
-
874
- export interface SimulatorResultItem {
875
- id: string;
876
- fleet_type: FleetType;
877
- index: number;
878
- damage_state_map: Record<DamageState, number>;
879
- }
880
-
881
- export interface SimulatorResult {
882
- items: SimulatorResultItem[];
883
- sunk_vec: [number, number, number][];
884
- }
885
-
886
- export type SpeedGroup = "A" | "B1" | "B2" | "C";
887
-
888
- export interface MasterData extends MasterBattleDefinitions {
889
- created_at: number;
890
- gears: MasterGear[];
891
- gear_attrs: MasterAttrRule<GearAttr>[];
892
- ships: MasterShip[];
893
- ship_attrs: MasterAttrRule<ShipAttr>[];
894
- ibonuses: MasterIBonuses;
895
- equippability: MasterEquippability;
896
- }
897
-
898
- export interface MasterAttrRule<T> {
899
- tag: T;
900
- name: string;
901
- expr: CompiledEvaler;
902
- }
903
-
904
- export interface NationalityDef {
905
- id: number;
906
- ctypes: number[];
907
- }
908
-
909
- export type CompiledEvaler = string;
910
-
911
- export interface NightFleetConditions {
912
- night_contact_rank?: ContactRank | null;
913
- starshell_index?: number | null;
914
- searchlight_index?: number | null;
915
- activates_large_searchlight?: boolean;
916
- }
917
-
918
- export interface BattleConditions {
919
- org_type: OrgType;
920
- role: Role;
921
- ship_index: number;
922
- fleet_len: number;
923
- formation: Formation;
924
- fleet_los_mod: number | null;
925
- night_conditions: NightFleetConditions;
926
- }
927
-
928
- export interface NightConditions {
929
- player?: NightFleetConditions;
930
- enemy?: NightFleetConditions;
931
- }
932
-
933
- export interface ShipPosition {
934
- org_type?: OrgType;
935
- fleet_type?: FleetType;
936
- fleet_len?: number;
937
- index?: number;
938
- }
939
-
940
- export type GearAttr =
941
- | "Unknown"
942
- | "HighAngleMount"
943
- | "NightFighter"
944
- | "NightAttacker"
945
- | "HeavyBomber"
946
- | "NightRecon"
947
- | "MainGun"
948
- | "Radar"
949
- | "SurfaceRadar"
950
- | "AirRadar"
951
- | "DepthChargeProjector"
952
- | "SynergisticDepthCharge"
953
- | "AntiSubMortar"
954
- | "AntiSubWeapon"
955
- | "ApDepthCharge"
956
- | "AntiSubAircraft"
957
- | "LateModelBowTorpedo"
958
- | "Seaplane"
959
- | "CbAircraft"
960
- | "LbAircraft"
961
- | "JetAircraft"
962
- | "Fighter"
963
- | "Recon"
964
- | "ObservationSeaplane"
965
- | "CbFighterBomber"
966
- | "AntiInstDiveBomber"
967
- | "CbSwordfish"
968
- | "SemiNightPlane"
969
- | "HighAltitudeInterceptor";
970
-
971
- export type FhResult<T> = { Ok: T } | { Err: string };
972
-
973
- export interface MasterIBonusRule {
974
- expr: CompiledEvaler;
975
- formula: CompiledEvaler;
976
- }
977
-
978
- export interface MasterIBonuses {
979
- shelling_power: MasterIBonusRule[];
980
- shelling_accuracy: MasterIBonusRule[];
981
- shelling_aerial_power: MasterIBonusRule[];
982
- torpedo_power: MasterIBonusRule[];
983
- torpedo_accuracy: MasterIBonusRule[];
984
- torpedo_evasion: MasterIBonusRule[];
985
- asw_power: MasterIBonusRule[];
986
- asw_accuracy: MasterIBonusRule[];
987
- night_power: MasterIBonusRule[];
988
- night_aerial_power: MasterIBonusRule[];
989
- night_accuracy: MasterIBonusRule[];
990
- defense_power: MasterIBonusRule[];
991
- contact_selection: MasterIBonusRule[];
992
- fighter_power: MasterIBonusRule[];
993
- ship_anti_air: MasterIBonusRule[];
994
- fleet_anti_air: MasterIBonusRule[];
995
- elos: MasterIBonusRule[];
996
- }
997
-
998
- export interface MstEquipShip {
999
- api_equip_type: Record<number, MstEquipShipValue>;
1000
- }
1001
-
1002
- export interface MstStype {
1003
- api_id: number;
1004
- api_equip_type: Record<number, number>;
1009
+ export interface CompDayAnalysis {
1010
+ day_cutin: CompDayCutinAnalysis;
1011
+ fleet_cutin: FleetCutinReport<ShellingStyle>[];
1005
1012
  }
1006
1013
 
1007
- export interface MstEquipExslotShip {
1008
- api_ctypes: Record<number, number> | null;
1009
- api_ship_ids: Record<number, number> | null;
1010
- api_stypes: Record<number, number> | null;
1014
+ export interface ShipAnalyzerConfig {
1015
+ air_state?: AirState;
1016
+ engagement?: Engagement;
1017
+ left?: AttackAnalyzerShipConfig;
1018
+ right?: AttackAnalyzerShipConfig;
1011
1019
  }
1012
1020
 
1013
- export interface EquippabilityRule {
1014
- ship: CompiledEvaler;
1015
- keys?: string[];
1016
- include?: string;
1017
- exclude?: string;
1021
+ export interface AttackAnalysis {
1022
+ attacker_is_player: boolean;
1023
+ attacker_ship_id: number;
1024
+ target_ship_id: number;
1025
+ historical_params: HistoricalParams;
1026
+ day: ActionReport<DayPhaseAttackStyle>;
1027
+ night: ActionReport<NightPhaseAttackStyle>;
1028
+ closing_torpedo: ActionReport<TorpedoAttackStyle>;
1029
+ opening_asw: ActionReport<AswAttackStyle>;
1030
+ support_shelling: ActionReport<SupportShellingStyle>;
1018
1031
  }
1019
1032
 
1020
- export type MstEquipShipValue = null | number[];
1021
-
1022
- export interface MasterEquippability {
1023
- equip_stype: MstStype[];
1024
- equip_exslot: number[];
1025
- equip_ship: Record<number, MstEquipShip>;
1026
- equip_exslot_ship: Record<number, MstEquipExslotShip>;
1027
- rules: EquippabilityRule[];
1033
+ export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
1034
+ formation?: Formation;
1028
1035
  }
1029
1036
 
1030
- export interface NodeState {
1031
- map?: number;
1032
- node?: NodeId;
1033
- phase?: number;
1034
- debuff?: boolean;
1035
- disable_historical_mod?: boolean;
1036
- landing_battle?: boolean;
1037
+ export interface NodeAttackAnalysis {
1038
+ left: AttackAnalysis;
1039
+ right: AttackAnalysis;
1040
+ shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
1041
+ night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
1037
1042
  }
1038
1043
 
1039
- export type NodeId = string;
1040
-
1041
- export interface ShipAnalyzerConfig {
1044
+ export interface NodeAttackAnalyzerConfig {
1042
1045
  air_state?: AirState;
1043
1046
  engagement?: Engagement;
1044
- left?: AttackAnalyzerShipConfig;
1045
- right?: AttackAnalyzerShipConfig;
1047
+ node_state?: NodeState;
1048
+ left?: NodeAttackAnalyzerShipConfig;
1049
+ right?: NodeAttackAnalyzerShipConfig;
1046
1050
  }
1047
1051
 
1048
- export interface SupportShellingSimulatorParams {
1049
- attacker_formation?: Formation;
1050
- target_formation?: Formation;
1051
- engagement: Engagement;
1052
- node_state: NodeState;
1052
+ export interface AttackAnalyzerShipConfig
1053
+ extends ShipConditions,
1054
+ NightFleetConditions {
1055
+ balloons?: number;
1056
+ fleet_los_mod?: number | null;
1053
1057
  }
1054
1058
 
1055
1059
  export class AirSquadron {
@@ -1213,6 +1217,7 @@ export class Gear {
1213
1217
  is_night_plane(): boolean;
1214
1218
  max_exp_eq_120(): boolean;
1215
1219
  has_proficiency(): boolean;
1220
+ is_night_bomber(): boolean;
1216
1221
  expedition_bonus(): number;
1217
1222
  is_night_fighter(): boolean;
1218
1223
  is_night_attacker(): boolean;
@@ -1319,12 +1324,6 @@ export class Ship {
1319
1324
  private constructor();
1320
1325
  free(): void;
1321
1326
  [Symbol.dispose](): void;
1322
- /**
1323
- * フィット砲補正
1324
- */
1325
- gunfit_accuracy(is_night: boolean): number;
1326
- state_day_gunfit_accuracy(): number | undefined;
1327
- state_night_gunfit_accuracy(): number | undefined;
1328
1327
  get_ebonus(key: string): number;
1329
1328
  is_abyssal(): boolean;
1330
1329
  is_amagiri(): boolean;
@@ -1383,6 +1382,12 @@ export class Ship {
1383
1382
  can_equip(gear: Gear, key: string): boolean;
1384
1383
  gear_keys(): string[];
1385
1384
  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;
1386
1391
  id: string;
1387
1392
  readonly hash: bigint;
1388
1393
  readonly ship_id: number;