fleethub-core 1.11.7 → 1.11.8

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.
@@ -1,93 +1,157 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
- /**
4
- */
5
- export function set_panic_hook(): void;
6
3
  /**
7
4
  * @param {ShipConditions} value
8
5
  * @returns {ShipConditions}
9
6
  */
10
7
  export function parse_ship_conditions(value: ShipConditions): ShipConditions;
11
- export interface AttackPower {
12
- precap: number;
13
- is_capped: boolean;
14
- capped: number;
15
- normal: number;
16
- critical: number;
17
- armor_penetration: number;
18
- remaining_ammo_mod: number;
8
+ /**
9
+ */
10
+ export function set_panic_hook(): void;
11
+ export interface MoveShipPayload {
12
+ current: [string, string, ShipKey];
13
+ target: [string | null, string, ShipKey];
19
14
  }
20
15
 
21
- export interface AttackPowerParams {
22
- basic: number;
23
- cap: number;
24
- precap_mod: AttackPowerModifier;
25
- postcap_mod: AttackPowerModifier;
26
- ap_shell_mod: number | null;
27
- aerial_power: number | null;
28
- proficiency_critical_mod: number;
29
- armor_penetration: number;
30
- remaining_ammo_mod: number;
31
- special_enemy_mods: SpecialEnemyModifiers;
32
- historical_mod: AttackPowerModifier;
33
- custom_mods: CustomPowerModifiers;
16
+ export type GearTypeIdArray = [number, number, number, number, number];
17
+
18
+ export type GearVecInput = GearInput[];
19
+
20
+ export interface GearInput {
21
+ gear_id: number;
22
+ types: GearTypeIdArray;
23
+ firepower: number;
24
+ torpedo: number;
25
+ anti_air: number;
26
+ armor: number;
27
+ evasion: number;
28
+ asw: number;
29
+ los: number;
30
+ bombing: number;
31
+ accuracy: number;
32
+ range: number;
33
+ radius: number;
34
+ stars: number;
35
+ ace: number;
34
36
  }
35
37
 
36
- export interface NightContactChance {
37
- rank1: number;
38
- rank2: number;
39
- rank3: number;
38
+ export interface ShipInput {
39
+ ship_id: number;
40
+ ctype: number;
41
+ stype: number;
42
+ yomi: string;
40
43
  }
41
44
 
42
- export interface CompNightCutinAnalysis {
43
- night_contact_chance: NightContactChance;
44
- ships: ShipNightCutinAnalysis[];
45
+ export interface EBonuses {
46
+ firepower: number;
47
+ torpedo: number;
48
+ anti_air: number;
49
+ armor: number;
50
+ evasion: number;
51
+ asw: number;
52
+ los: number;
53
+ bombing: number;
54
+ accuracy: number;
55
+ range: number;
45
56
  }
46
57
 
47
- export interface ShipNightCutinAnalysis {
58
+ export interface CompAntiAirAnalysis {
59
+ fleet_adjusted_anti_air: number;
60
+ ships: AntiAirReport[];
61
+ anti_air_cutin_chance: [number, number][];
62
+ }
63
+
64
+ export interface AntiAirReport {
48
65
  ship_id: number;
66
+ role: Role;
49
67
  index: number;
50
- normal: NightCutinActionReport;
51
- chuuha: NightCutinActionReport;
68
+ adjusted_anti_air: number | null;
69
+ proportional_shotdown_rate: number | null;
70
+ fixed_shotdown_number: number | null;
71
+ guaranteed: number | null;
72
+ anti_air_cutin_chance: [number, number][];
73
+ anti_air_propellant_barrage_chance: number | null;
52
74
  }
53
75
 
54
- export interface NightCutinActionReport
55
- extends ActionReport<NightPhaseAttackStyle> {
56
- cutin_term: number | null;
76
+ export interface ActionReport<T> {
77
+ data: Record<string, AttackReport<T>>;
78
+ damage_state_density: Histogram<DamageState, number> | null;
79
+ is_active: boolean;
57
80
  }
58
81
 
59
- export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
82
+ export type AswAttackType = "DepthCharge" | "Aerial";
60
83
 
61
- export type GearAttr =
62
- | "Unknown"
63
- | "HighAngleMount"
64
- | "NightFighter"
65
- | "NightAttacker"
66
- | "HeavyBomber"
67
- | "NightRecon"
68
- | "MainGun"
69
- | "Radar"
70
- | "SurfaceRadar"
71
- | "AirRadar"
72
- | "DepthChargeProjector"
73
- | "SynergisticDepthCharge"
74
- | "AntiSubMortar"
75
- | "AntiSubWeapon"
76
- | "ApDepthCharge"
77
- | "AntiSubAircraft"
78
- | "LateModelBowTorpedo"
79
- | "Seaplane"
80
- | "CbAircraft"
81
- | "LbAircraft"
82
- | "JetAircraft"
83
- | "Fighter"
84
- | "Recon"
85
- | "ObservationSeaplane"
86
- | "CbFighterBomber"
87
- | "AntiInstDiveBomber"
88
- | "CbSwordfish"
89
- | "SemiNightPlane"
90
- | "HighAltitudeInterceptor";
84
+ export type ShellingType = "Normal" | "Aerial";
85
+
86
+ export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
87
+
88
+ export type SupportShellingType = ShellingType;
89
+
90
+ export type AttackType =
91
+ | { t: "Asw"; c: AswAttackType }
92
+ | { t: "Shelling"; c: ShellingType }
93
+ | { t: "Night"; c: NightAttackType }
94
+ | { t: "Torpedo" }
95
+ | { t: "SupportShelling"; c: SupportShellingType };
96
+
97
+ export type DayPhaseAttackType =
98
+ | { t: "Shelling"; c: ShellingType }
99
+ | { t: "Asw"; c: AswAttackType };
100
+
101
+ export type NightPhaseAttackType =
102
+ | { t: "Night"; c: NightAttackType }
103
+ | { t: "Asw"; c: AswAttackType };
104
+
105
+ export type TorpedoAttackType = null;
106
+
107
+ export interface ShipMeta {
108
+ id: string;
109
+ ship_id: number;
110
+ }
111
+
112
+ export interface FleetMeta {
113
+ id: string;
114
+ len: number;
115
+ ships: [string, ShipMeta | null][];
116
+ }
117
+
118
+ export interface CompMeta {
119
+ fleets: Record<FleetType, FleetMeta>;
120
+ }
121
+
122
+ export type Role = "Main" | "Escort";
123
+
124
+ export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
125
+ formation?: Formation;
126
+ }
127
+
128
+ export interface NodeAttackAnalyzerConfig {
129
+ air_state?: AirState;
130
+ engagement?: Engagement;
131
+ node_state?: NodeState;
132
+ left?: NodeAttackAnalyzerShipConfig;
133
+ right?: NodeAttackAnalyzerShipConfig;
134
+ }
135
+
136
+ export interface NodeAttackAnalysis {
137
+ left: AttackAnalysis;
138
+ right: AttackAnalysis;
139
+ shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
140
+ night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
141
+ }
142
+
143
+ export interface DamageReport {
144
+ miss_damage_min: number;
145
+ miss_damage_max: number;
146
+ normal_damage_min: number;
147
+ normal_damage_max: number;
148
+ critical_damage_min: number;
149
+ critical_damage_max: number;
150
+ normal_scratch_rate: number;
151
+ critical_scratch_rate: number;
152
+ damage_density: Histogram<number, number>;
153
+ damage_state_density: Histogram<DamageState, number>;
154
+ }
91
155
 
92
156
  export type GearType =
93
157
  | "Unknown"
@@ -165,92 +229,89 @@ export type GearCategory =
165
229
  | "LandBased"
166
230
  | "Misc";
167
231
 
168
- export interface OrgState {
169
- id?: string;
170
- f1?: FleetState;
171
- f2?: FleetState;
172
- f3?: FleetState;
173
- f4?: FleetState;
174
- a1?: AirSquadronState;
175
- a2?: AirSquadronState;
176
- a3?: AirSquadronState;
177
- hq_level?: number;
178
- org_type?: OrgType;
179
- sortie?: FleetKey;
180
- route_sup?: FleetKey;
181
- boss_sup?: FleetKey;
232
+ export interface SlotSizeVecState {
233
+ ss1?: number;
234
+ ss2?: number;
235
+ ss3?: number;
236
+ ss4?: number;
237
+ ss5?: number;
182
238
  }
183
239
 
184
- export type FleetKey = "f1" | "f2" | "f3" | "f4";
185
-
186
- export interface SupportShellingSimulatorParams {
187
- attacker_formation?: Formation;
188
- target_formation?: Formation;
189
- engagement: Engagement;
240
+ export interface ShipState extends GearVecState, SlotSizeVecState {
241
+ id?: string;
242
+ ship_id: number;
243
+ level?: number;
244
+ current_hp?: number;
245
+ morale?: number;
246
+ ammo?: number;
247
+ fuel?: number;
248
+ max_hp_mod?: number;
249
+ firepower_mod?: number;
250
+ torpedo_mod?: number;
251
+ armor_mod?: number;
252
+ anti_air_mod?: number;
253
+ evasion_mod?: number;
254
+ asw_mod?: number;
255
+ los_mod?: number;
256
+ luck_mod?: number;
257
+ day_gunfit_accuracy?: number;
258
+ night_gunfit_accuracy?: number;
259
+ custom_power_mods?: CustomPowerModifiers;
190
260
  }
191
261
 
192
- export interface EquippabilityRule {
193
- ship: CompiledEvaler;
194
- keys?: string[];
195
- include?: string;
196
- exclude?: string;
197
- }
262
+ export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
198
263
 
199
- export interface MasterEquippability {
200
- equip_stype: EquipStype[];
201
- equip_exslot: number[];
202
- equip_ship: MstEquipShip[];
203
- equip_exslot_ship: Record<number, MstEquipExslotShip>;
204
- rules: EquippabilityRule[];
205
- }
206
-
207
- export interface MstEquipExslotShip {
208
- api_ctypes: Record<number, number> | null;
209
- api_ship_ids: Record<number, number> | null;
210
- api_stypes: Record<number, number> | null;
211
- }
212
-
213
- export interface MstEquipShip {
214
- api_ship_id: number;
215
- api_equip_type: number[];
216
- }
264
+ export type SpeedGroup = "A" | "B1" | "B2" | "C";
217
265
 
218
- export interface EquipStype {
219
- id: number;
220
- equip_type: number[];
221
- }
266
+ export type DayCutin =
267
+ | "Zuiun"
268
+ | "AirSea"
269
+ | "MainMain"
270
+ | "MainAp"
271
+ | "MainRadar"
272
+ | "MainSec"
273
+ | "DoubleAttack"
274
+ | "FBA"
275
+ | "BBA"
276
+ | "BA";
222
277
 
223
- export interface CompAnalyzerConfig {
224
- engagement: Engagement;
225
- formation: Formation;
226
- anti_air_cutin: number | null;
227
- ship_anti_air_resist: number;
228
- fleet_anti_air_resist: number;
229
- left_night_fleet_conditions: NightFleetConditions;
230
- right_night_fleet_conditions: NightFleetConditions;
231
- }
278
+ export type NightCutin =
279
+ | "MainTorpRadar"
280
+ | "TorpLookoutRadar"
281
+ | "TorpTsloTorp"
282
+ | "TorpTsloDrum"
283
+ | "NightZuiun2Radar"
284
+ | "NightZuiun2"
285
+ | "NightZuiunRadar"
286
+ | "NightZuiun"
287
+ | "DoubleAttack"
288
+ | "TorpTorpMain"
289
+ | "TorpTorpTorp"
290
+ | "MainMainSec"
291
+ | "MainMainMain"
292
+ | "SubTorpTorp"
293
+ | "SubRadarTorp"
294
+ | "Cvci1_25"
295
+ | "Cvci1_20"
296
+ | "Cvci1_18"
297
+ | "Photobomber";
232
298
 
233
- export interface CompNightAnalysis {
234
- night_cutin: CompNightCutinAnalysis;
235
- fleet_cutin: FleetCutinReport<NightAttackStyle>[];
236
- }
299
+ export type FleetCutin =
300
+ | "NelsonTouch"
301
+ | "NagatoClassCutin"
302
+ | "ColoradoClassCutin"
303
+ | "KongouClassCutin"
304
+ | "Yamato2ShipCutin"
305
+ | "Yamato3ShipCutin";
237
306
 
238
- export interface CompDayAnalysis {
239
- day_cutin: CompDayCutinAnalysis;
240
- fleet_cutin: FleetCutinReport<ShellingStyle>[];
241
- }
307
+ export type DayCutinLike = DayCutin | FleetCutin;
242
308
 
243
- export interface CompAnalysis {
244
- day: CompDayAnalysis;
245
- night: CompNightAnalysis;
246
- contact: ContactAnalysis;
247
- anti_air: CompAntiAirAnalysis;
248
- }
309
+ export type NightCutinLike = NightCutin | FleetCutin;
249
310
 
250
- export interface AttackAnalyzerShipConfig
251
- extends ShipConditions,
252
- NightFleetConditions {
253
- fleet_los_mod?: number | null;
311
+ export interface SupportShellingSimulatorParams {
312
+ attacker_formation?: Formation;
313
+ target_formation?: Formation;
314
+ engagement: Engagement;
254
315
  }
255
316
 
256
317
  export interface MasterShip {
@@ -287,93 +348,6 @@ export interface MasterShip {
287
348
 
288
349
  export type StatInterval = [number | null, number | null];
289
350
 
290
- export interface ShellingStyle {
291
- tag: "ShellingStyle";
292
- attack_type: ShellingType;
293
- cutin: DayCutinLike | null;
294
- power_mod: number;
295
- accuracy_mod: number;
296
- hits: number;
297
- }
298
-
299
- export interface NightAttackStyle {
300
- tag: "NightAttackStyle";
301
- attack_type: NightAttackType;
302
- cutin: NightCutinLike | null;
303
- power_mod: number;
304
- accuracy_mod: number;
305
- hits: number;
306
- }
307
-
308
- export interface AswAttackStyle {
309
- tag: "AswAttackStyle";
310
- attack_type: AswAttackType;
311
- }
312
-
313
- export interface TorpedoAttackStyle {
314
- tag: "TorpedoAttackStyle";
315
- attack_type: TorpedoAttackType;
316
- }
317
-
318
- export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
319
-
320
- export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
321
-
322
- export interface SupportShellingStyle {
323
- tag: "SupportShellingStyle";
324
- attack_type: SupportShellingType;
325
- }
326
-
327
- export type OrgType =
328
- | "Single"
329
- | "CarrierTaskForce"
330
- | "SurfaceTaskForce"
331
- | "TransportEscort"
332
- | "EnemySingle"
333
- | "EnemyCombined";
334
-
335
- export type GearVecInput = GearInput[];
336
-
337
- export interface GearInput {
338
- gear_id: number;
339
- types: GearTypeIdArray;
340
- firepower: number;
341
- torpedo: number;
342
- anti_air: number;
343
- armor: number;
344
- evasion: number;
345
- asw: number;
346
- los: number;
347
- bombing: number;
348
- accuracy: number;
349
- range: number;
350
- radius: number;
351
- stars: number;
352
- ace: number;
353
- }
354
-
355
- export interface ShipInput {
356
- ship_id: number;
357
- ctype: number;
358
- stype: number;
359
- yomi: string;
360
- }
361
-
362
- export interface EBonuses {
363
- firepower: number;
364
- torpedo: number;
365
- anti_air: number;
366
- armor: number;
367
- evasion: number;
368
- asw: number;
369
- los: number;
370
- bombing: number;
371
- accuracy: number;
372
- range: number;
373
- }
374
-
375
- export type FhResult<T> = { Ok: T } | { Err: string };
376
-
377
351
  export interface MasterGear {
378
352
  gear_id: number;
379
353
  name: string;
@@ -400,119 +374,54 @@ export interface MasterGear {
400
374
  historical_aircraft_group?: number;
401
375
  }
402
376
 
403
- export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
404
- formation?: Formation;
405
- }
406
-
407
- export interface NodeAttackAnalyzerConfig {
408
- air_state?: AirState;
409
- engagement?: Engagement;
410
- node_state?: NodeState;
411
- left?: NodeAttackAnalyzerShipConfig;
412
- right?: NodeAttackAnalyzerShipConfig;
377
+ export interface HitRate {
378
+ normal: number;
379
+ critical: number;
380
+ total: number;
413
381
  }
414
382
 
415
- export interface NodeAttackAnalysis {
416
- left: AttackAnalysis;
417
- right: AttackAnalysis;
418
- shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
419
- night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
383
+ export interface HitRateParams {
384
+ accuracy_term: number;
385
+ evasion_term: number;
386
+ target_morale_mod: number;
387
+ critical_rate_constant: number;
388
+ critical_percentage_bonus: number;
389
+ hit_percentage_bonus: number;
420
390
  }
421
391
 
422
- export interface CompDayCutinAnalysis {
423
- rank3_air_state: AirState;
424
- rank2_air_state: AirState;
425
- main_fleet_los_mod: number | null;
426
- escort_fleet_los_mod: number | null;
427
- ships: ShipDayCutinAnalysis[];
392
+ export interface ContactAnalysis {
393
+ single: DayContactChance[] | null;
394
+ combined: DayContactChance[] | null;
428
395
  }
429
396
 
430
- export interface ShipDayCutinAnalysis {
431
- ship_id: number;
432
- role: Role;
433
- index: number;
434
- rank3: DayCutinReport;
435
- rank2: DayCutinReport;
397
+ export interface DayContactChance {
398
+ air_state: AirState;
399
+ trigger_rate: number;
400
+ rank3: number;
401
+ rank2: number;
402
+ rank1: number;
403
+ total: number;
436
404
  }
437
405
 
438
- export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
439
- observation_term: number | null;
406
+ export interface AttackAnalysis {
407
+ attacker_is_player: boolean;
408
+ attacker_ship_id: number;
409
+ target_ship_id: number;
410
+ historical_params: HistoricalParams;
411
+ day: ActionReport<DayPhaseAttackStyle>;
412
+ night: ActionReport<NightPhaseAttackStyle>;
413
+ closing_torpedo: ActionReport<TorpedoAttackStyle>;
414
+ opening_asw: ActionReport<AswAttackStyle>;
415
+ support_shelling: ActionReport<SupportShellingStyle>;
440
416
  }
441
417
 
442
- export interface BattleConditions {
443
- org_type: OrgType;
444
- role: Role;
445
- ship_index: number;
446
- fleet_len: number;
447
- formation: Formation;
448
- fleet_los_mod: number | null;
449
- night_conditions: NightFleetConditions;
450
- }
451
-
452
- export interface NightConditions {
453
- player?: NightFleetConditions;
454
- enemy?: NightFleetConditions;
455
- }
456
-
457
- export interface NightFleetConditions {
458
- night_contact_rank?: ContactRank | null;
459
- starshell_index?: number | null;
460
- searchlight_index?: number | null;
461
- activates_large_searchlight?: boolean;
462
- }
463
-
464
- export type DayCutin =
465
- | "Zuiun"
466
- | "AirSea"
467
- | "MainMain"
468
- | "MainAp"
469
- | "MainRadar"
470
- | "MainSec"
471
- | "DoubleAttack"
472
- | "FBA"
473
- | "BBA"
474
- | "BA";
475
-
476
- export type NightCutin =
477
- | "MainTorpRadar"
478
- | "TorpLookoutRadar"
479
- | "TorpTsloTorp"
480
- | "TorpTsloDrum"
481
- | "NightZuiun2Radar"
482
- | "NightZuiun2"
483
- | "NightZuiunRadar"
484
- | "NightZuiun"
485
- | "DoubleAttack"
486
- | "TorpTorpMain"
487
- | "TorpTorpTorp"
488
- | "MainMainSec"
489
- | "MainMainMain"
490
- | "SubTorpTorp"
491
- | "SubRadarTorp"
492
- | "Cvci1_25"
493
- | "Cvci1_20"
494
- | "Cvci1_18"
495
- | "Photobomber";
496
-
497
- export type FleetCutin =
498
- | "NelsonTouch"
499
- | "NagatoClassCutin"
500
- | "ColoradoClassCutin"
501
- | "KongouClassCutin"
502
- | "Yamato2ShipCutin"
503
- | "Yamato3ShipCutin";
504
-
505
- export type DayCutinLike = DayCutin | FleetCutin;
506
-
507
- export type NightCutinLike = NightCutin | FleetCutin;
508
-
509
- export type SingleFormation =
510
- | "LineAhead"
511
- | "DoubleLine"
512
- | "Diamond"
513
- | "Echelon"
514
- | "LineAbreast"
515
- | "Vanguard";
418
+ export type SingleFormation =
419
+ | "LineAhead"
420
+ | "DoubleLine"
421
+ | "Diamond"
422
+ | "Echelon"
423
+ | "LineAbreast"
424
+ | "Vanguard";
516
425
 
517
426
  export type CombinedFormation =
518
427
  | "Cruising1"
@@ -522,34 +431,64 @@ export type CombinedFormation =
522
431
 
523
432
  export type Formation = SingleFormation | CombinedFormation;
524
433
 
525
- export type SpecialEnemyType =
526
- | "None"
527
- | "SoftSkinned"
528
- | "Pillbox"
529
- | "IsolatedIsland"
530
- | "SupplyDepot"
531
- | "NewSupplyDepot"
532
- | "HarbourSummerPrincess"
533
- | "PtImp"
534
- | "BattleshipSummerPrincess"
535
- | "HeavyCruiserSummerPrincess"
536
- | "FrenchBattleshipPrincess"
537
- | "AnchorageWaterDemonVacationMode"
538
- | "DockPrincess";
434
+ export interface GearState {
435
+ id?: string;
436
+ gear_id: number;
437
+ exp?: number;
438
+ stars?: number;
439
+ }
539
440
 
540
- export type SpeedGroup = "A" | "B1" | "B2" | "C";
441
+ export interface GearVecState {
442
+ g1?: GearState;
443
+ g2?: GearState;
444
+ g3?: GearState;
445
+ g4?: GearState;
446
+ g5?: GearState;
447
+ gx?: GearState;
448
+ }
541
449
 
542
- export interface FleetCutinReport<T> {
543
- cutin: FleetCutin;
544
- rate: number | null;
450
+ export type NodeId = string;
451
+
452
+ export interface NodeState {
453
+ map?: number;
454
+ node?: NodeId;
455
+ phase?: number;
456
+ debuff?: boolean;
457
+ disable_historical_mod?: boolean;
458
+ }
459
+
460
+ export type FhResult<T> = { Ok: T } | { Err: string };
461
+
462
+ export interface MasterBattleDefinitions {
463
+ formation: NestedFormationDef[];
464
+ anti_air_cutin: AntiAirCutinDef[];
465
+ day_cutin: DayCutinDef[];
466
+ night_cutin: NightCutinDef[];
467
+ historical_bonuses?: HistoricalBonusDef[];
468
+ }
469
+
470
+ export type AirWaveType = "Jet" | "LandBase" | "Carrier";
471
+
472
+ export interface BattleConditions {
473
+ org_type: OrgType;
474
+ role: Role;
475
+ ship_index: number;
476
+ fleet_len: number;
545
477
  formation: Formation;
546
- attacks: FleetCutinAttackReport<T>[];
478
+ fleet_los_mod: number | null;
479
+ night_conditions: NightFleetConditions;
547
480
  }
548
481
 
549
- export interface FleetCutinAttackReport<T> extends AttackReport<T> {
550
- index: number;
551
- ship_id: number;
552
- power_mod: number;
482
+ export interface NightConditions {
483
+ player?: NightFleetConditions;
484
+ enemy?: NightFleetConditions;
485
+ }
486
+
487
+ export interface NightFleetConditions {
488
+ night_contact_rank?: ContactRank | null;
489
+ starshell_index?: number | null;
490
+ searchlight_index?: number | null;
491
+ activates_large_searchlight?: boolean;
553
492
  }
554
493
 
555
494
  export interface FormationCombatModifiersDef {
@@ -625,176 +564,150 @@ export interface BattleDefinitions {
625
564
  historical_bonuses: HistoricalBonusDef[];
626
565
  }
627
566
 
628
- export interface FleetState {
629
- id?: string;
630
- len?: number;
631
- s1?: ShipState;
632
- s2?: ShipState;
633
- s3?: ShipState;
634
- s4?: ShipState;
635
- s5?: ShipState;
636
- s6?: ShipState;
637
- s7?: ShipState;
638
- }
567
+ export type ShipAttr =
568
+ | "Unknown"
569
+ | "NightCarrier"
570
+ | "Installation"
571
+ | "RoyalNavy"
572
+ | "Kai2"
573
+ | "TurbineSpeedBonus"
574
+ | "NewModelBoilerSpeedBonus"
575
+ | "Pillbox"
576
+ | "IsolatedIsland"
577
+ | "HarbourSummerPrincess"
578
+ | "SupplyDepot"
579
+ | "NewSupplyDepot"
580
+ | "PtImp"
581
+ | "BattleshipSummerPrincess"
582
+ | "HeavyCruiserSummerPrincess"
583
+ | "AnchorageWaterDemonVacationMode"
584
+ | "FrenchBattleshipPrincess"
585
+ | "DockPrincess";
639
586
 
640
- export interface ShipMeta {
641
- id: string;
642
- ship_id: number;
587
+ export type Side = "Player" | "Enemy";
588
+
589
+ export type Align = "Left" | "Right";
590
+
591
+ export type SlotSizeVec = (number | null)[];
592
+
593
+ export type SpecialEnemyType =
594
+ | "None"
595
+ | "SoftSkinned"
596
+ | "Pillbox"
597
+ | "IsolatedIsland"
598
+ | "SupplyDepot"
599
+ | "NewSupplyDepot"
600
+ | "HarbourSummerPrincess"
601
+ | "PtImp"
602
+ | "BattleshipSummerPrincess"
603
+ | "HeavyCruiserSummerPrincess"
604
+ | "FrenchBattleshipPrincess"
605
+ | "AnchorageWaterDemonVacationMode"
606
+ | "DockPrincess";
607
+
608
+ export type CompiledEvaler = string;
609
+
610
+ export interface SimulatorResult {
611
+ items: SimulatorResultItem[];
612
+ sunk_vec: [number, number, number][];
643
613
  }
644
614
 
645
- export interface FleetMeta {
615
+ export interface SimulatorResultItem {
646
616
  id: string;
647
- len: number;
648
- ships: [string, ShipMeta | null][];
617
+ fleet_type: FleetType;
618
+ index: number;
619
+ damage_state_map: Record<DamageState, number>;
649
620
  }
650
621
 
651
- export interface CompMeta {
652
- fleets: Record<FleetType, FleetMeta>;
622
+ export interface MasterData extends MasterBattleDefinitions {
623
+ created_at: number;
624
+ gears: MasterGear[];
625
+ gear_attrs: MasterAttrRule<GearAttr>[];
626
+ ships: MasterShip[];
627
+ ship_attrs: MasterAttrRule<ShipAttr>[];
628
+ ibonuses: MasterIBonuses;
629
+ equippability: MasterEquippability;
653
630
  }
654
631
 
655
- export type NodeId = string;
656
-
657
- export interface NodeState {
658
- map?: number;
659
- node?: NodeId;
660
- phase?: number;
661
- debuff?: boolean;
662
- disable_historical_mod?: boolean;
632
+ export interface NationalityDef {
633
+ id: number;
634
+ ctypes: number[];
663
635
  }
664
636
 
665
- export interface SlotSizeVecState {
666
- ss1?: number;
667
- ss2?: number;
668
- ss3?: number;
669
- ss4?: number;
670
- ss5?: number;
637
+ export interface MasterAttrRule<T> {
638
+ tag: T;
639
+ name: string;
640
+ expr: CompiledEvaler;
671
641
  }
672
642
 
673
- export interface ShipState extends GearVecState, SlotSizeVecState {
643
+ export type AirSquadronMode = "Sortie" | "AirDefense";
644
+
645
+ export interface AirSquadronState extends GearVecState, SlotSizeVecState {
674
646
  id?: string;
675
- ship_id: number;
676
- level?: number;
677
- current_hp?: number;
678
- morale?: number;
679
- ammo?: number;
680
- fuel?: number;
681
- max_hp_mod?: number;
682
- firepower_mod?: number;
683
- torpedo_mod?: number;
684
- armor_mod?: number;
685
- anti_air_mod?: number;
686
- evasion_mod?: number;
687
- asw_mod?: number;
688
- los_mod?: number;
689
- luck_mod?: number;
690
- day_gunfit_accuracy?: number;
691
- night_gunfit_accuracy?: number;
692
- custom_power_mods?: CustomPowerModifiers;
693
- }
694
-
695
- export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
696
-
697
- export type SlotSizeVec = (number | null)[];
698
-
699
- export interface MoveShipPayload {
700
- current: [string, string, ShipKey];
701
- target: [string | null, string, ShipKey];
702
- }
703
-
704
- export interface MasterBattleDefinitions {
705
- formation: NestedFormationDef[];
706
- anti_air_cutin: AntiAirCutinDef[];
707
- day_cutin: DayCutinDef[];
708
- night_cutin: NightCutinDef[];
709
- historical_bonuses?: HistoricalBonusDef[];
710
- }
711
-
712
- export interface HitRate {
713
- normal: number;
714
- critical: number;
715
- total: number;
716
- }
717
-
718
- export interface HitRateParams {
719
- accuracy_term: number;
720
- evasion_term: number;
721
- target_morale_mod: number;
722
- critical_rate_constant: number;
723
- critical_percentage_bonus: number;
724
- hit_percentage_bonus: number;
725
- }
726
-
727
- export interface DamageReport {
728
- miss_damage_min: number;
729
- miss_damage_max: number;
730
- normal_damage_min: number;
731
- normal_damage_max: number;
732
- critical_damage_min: number;
733
- critical_damage_max: number;
734
- normal_scratch_rate: number;
735
- critical_scratch_rate: number;
736
- damage_density: Histogram<number, number>;
737
- damage_state_density: Histogram<DamageState, number>;
647
+ mode?: AirSquadronMode;
738
648
  }
739
649
 
740
- export interface ContactAnalysis {
741
- single: DayContactChance[] | null;
742
- combined: DayContactChance[] | null;
743
- }
650
+ export type AirState =
651
+ | "AirSupremacy"
652
+ | "AirSuperiority"
653
+ | "AirParity"
654
+ | "AirDenial"
655
+ | "AirIncapability";
744
656
 
745
- export interface DayContactChance {
746
- air_state: AirState;
747
- trigger_rate: number;
748
- rank3: number;
749
- rank2: number;
750
- rank1: number;
751
- total: number;
752
- }
657
+ export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
753
658
 
754
- export interface AttackAnalysis {
755
- attacker_is_player: boolean;
756
- attacker_ship_id: number;
757
- target_ship_id: number;
758
- historical_params: HistoricalParams;
759
- day: ActionReport<DayPhaseAttackStyle>;
760
- night: ActionReport<NightPhaseAttackStyle>;
761
- closing_torpedo: ActionReport<TorpedoAttackStyle>;
762
- opening_asw: ActionReport<AswAttackStyle>;
763
- support_shelling: ActionReport<SupportShellingStyle>;
764
- }
659
+ export type ContactRank = "Rank1" | "Rank2" | "Rank3";
765
660
 
766
- export interface CompAntiAirAnalysis {
767
- fleet_adjusted_anti_air: number;
768
- ships: AntiAirReport[];
769
- anti_air_cutin_chance: [number, number][];
770
- }
661
+ export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
771
662
 
772
- export interface AntiAirReport {
773
- ship_id: number;
774
- role: Role;
775
- index: number;
776
- adjusted_anti_air: number | null;
777
- proportional_shotdown_rate: number | null;
778
- fixed_shotdown_number: number | null;
779
- guaranteed: number | null;
780
- anti_air_cutin_chance: [number, number][];
781
- anti_air_propellant_barrage_chance: number | null;
782
- }
663
+ export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
783
664
 
784
- export interface GearState {
665
+ export interface FleetState {
785
666
  id?: string;
786
- gear_id: number;
787
- exp?: number;
788
- stars?: number;
667
+ len?: number;
668
+ s1?: ShipState;
669
+ s2?: ShipState;
670
+ s3?: ShipState;
671
+ s4?: ShipState;
672
+ s5?: ShipState;
673
+ s6?: ShipState;
674
+ s7?: ShipState;
789
675
  }
790
676
 
791
- export interface GearVecState {
792
- g1?: GearState;
793
- g2?: GearState;
794
- g3?: GearState;
795
- g4?: GearState;
796
- g5?: GearState;
797
- gx?: GearState;
677
+ export type GearAttr =
678
+ | "Unknown"
679
+ | "HighAngleMount"
680
+ | "NightFighter"
681
+ | "NightAttacker"
682
+ | "HeavyBomber"
683
+ | "NightRecon"
684
+ | "MainGun"
685
+ | "Radar"
686
+ | "SurfaceRadar"
687
+ | "AirRadar"
688
+ | "DepthChargeProjector"
689
+ | "SynergisticDepthCharge"
690
+ | "AntiSubMortar"
691
+ | "AntiSubWeapon"
692
+ | "ApDepthCharge"
693
+ | "AntiSubAircraft"
694
+ | "LateModelBowTorpedo"
695
+ | "Seaplane"
696
+ | "CbAircraft"
697
+ | "LbAircraft"
698
+ | "JetAircraft"
699
+ | "Fighter"
700
+ | "Recon"
701
+ | "ObservationSeaplane"
702
+ | "CbFighterBomber"
703
+ | "AntiInstDiveBomber"
704
+ | "CbSwordfish"
705
+ | "SemiNightPlane"
706
+ | "HighAltitudeInterceptor";
707
+
708
+ export interface ShipConditions extends ShipPosition {
709
+ formation?: Formation;
710
+ amagiri_index?: number | null;
798
711
  }
799
712
 
800
713
  export type ShipCategory =
@@ -832,56 +745,104 @@ export type ShipType =
832
745
  | "CT"
833
746
  | "AO";
834
747
 
835
- export type Histogram<K extends keyof any, V> = Partial<Record<K, V>>;
748
+ export interface AttackPower {
749
+ precap: number;
750
+ is_capped: boolean;
751
+ capped: number;
752
+ normal: number;
753
+ critical: number;
754
+ armor_penetration: number;
755
+ remaining_ammo_mod: number;
756
+ }
836
757
 
837
- export type CompiledEvaler = string;
758
+ export interface AttackPowerParams {
759
+ basic: number;
760
+ cap: number;
761
+ precap_mod: AttackPowerModifier;
762
+ postcap_mod: AttackPowerModifier;
763
+ ap_shell_mod: number | null;
764
+ aerial_power: number | null;
765
+ proficiency_critical_mod: number;
766
+ armor_penetration: number;
767
+ remaining_ammo_mod: number;
768
+ special_enemy_mods: SpecialEnemyModifiers;
769
+ historical_mod: AttackPowerModifier;
770
+ custom_mods: CustomPowerModifiers;
771
+ }
838
772
 
839
- export interface AttackReport<T> {
840
- style: T;
841
- proc_rate: number | null;
842
- attack_power: AttackPower | null;
843
- attack_power_params: AttackPowerParams | null;
844
- hits: number;
845
- hit_rate: HitRate | null;
846
- hit_rate_params: HitRateParams | null;
847
- damage: DamageReport | null;
773
+ export interface NightContactChance {
774
+ rank1: number;
775
+ rank2: number;
776
+ rank3: number;
848
777
  }
849
778
 
850
- export interface ActionReport<T> {
851
- data: Record<string, AttackReport<T>>;
852
- damage_state_density: Histogram<DamageState, number> | null;
853
- is_active: boolean;
779
+ export interface CompNightCutinAnalysis {
780
+ night_contact_chance: NightContactChance;
781
+ ships: ShipNightCutinAnalysis[];
854
782
  }
855
783
 
856
- export type AirWaveType = "Jet" | "LandBase" | "Carrier";
784
+ export interface ShipNightCutinAnalysis {
785
+ ship_id: number;
786
+ index: number;
787
+ normal: NightCutinActionReport;
788
+ chuuha: NightCutinActionReport;
789
+ }
857
790
 
858
- export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
791
+ export interface NightCutinActionReport
792
+ extends ActionReport<NightPhaseAttackStyle> {
793
+ cutin_term: number | null;
794
+ }
859
795
 
860
- export type Side = "Player" | "Enemy";
796
+ export interface AttackAnalyzerShipConfig
797
+ extends ShipConditions,
798
+ NightFleetConditions {
799
+ fleet_los_mod?: number | null;
800
+ }
861
801
 
862
- export type Align = "Left" | "Right";
802
+ export interface AttackPowerModifier {
803
+ a?: number;
804
+ b?: number;
805
+ }
863
806
 
864
- export interface MasterData extends MasterBattleDefinitions {
865
- created_at: number;
866
- gears: MasterGear[];
867
- gear_attrs: MasterAttrRule<GearAttr>[];
868
- ships: MasterShip[];
869
- ship_attrs: MasterAttrRule<ShipAttr>[];
870
- ibonuses: MasterIBonuses;
871
- equippability: MasterEquippability;
807
+ export interface SpecialEnemyModifiers {
808
+ precap_general_mod: AttackPowerModifier;
809
+ stype_mod: AttackPowerModifier;
810
+ landing_craft_synergy_mod: AttackPowerModifier;
811
+ toku_daihatsu_tank_mod: AttackPowerModifier;
812
+ m4a1dd_mod: AttackPowerModifier;
813
+ honi_mod: AttackPowerModifier;
814
+ toku_daihatsu_chiha_mod: AttackPowerModifier;
815
+ toku_daihatsu_chiha_kai_mod: AttackPowerModifier;
816
+ postcap_general_mod: AttackPowerModifier;
817
+ pt_mod: AttackPowerModifier | null;
872
818
  }
873
819
 
874
- export interface NationalityDef {
875
- id: number;
876
- ctypes: number[];
820
+ export interface CustomPowerModifiers {
821
+ precap_mod?: AttackPowerModifier;
822
+ postcap_mod?: AttackPowerModifier;
823
+ basic_power_mod?: AttackPowerModifier;
824
+ historical_mod?: AttackPowerModifier;
877
825
  }
878
826
 
879
- export interface MasterAttrRule<T> {
880
- tag: T;
881
- name: string;
882
- expr: CompiledEvaler;
827
+ export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
828
+
829
+ export type OrgType =
830
+ | "Single"
831
+ | "CarrierTaskForce"
832
+ | "SurfaceTaskForce"
833
+ | "TransportEscort"
834
+ | "EnemySingle"
835
+ | "EnemyCombined";
836
+
837
+ export interface ShipPosition {
838
+ org_type?: OrgType;
839
+ fleet_type?: FleetType;
840
+ fleet_len?: number;
841
+ index?: number;
883
842
  }
884
843
 
844
+ export type Histogram<K extends keyof any, V> = Partial<Record<K, V>>;
845
+
885
846
  export interface MasterIBonuses {
886
847
  shelling_power: MasterIBonusRule[];
887
848
  shelling_accuracy: MasterIBonusRule[];
@@ -907,130 +868,171 @@ export interface MasterIBonusRule {
907
868
  formula: CompiledEvaler;
908
869
  }
909
870
 
910
- export interface ShipPosition {
911
- org_type?: OrgType;
912
- fleet_type?: FleetType;
913
- fleet_len?: number;
914
- index?: number;
871
+ export interface ShipAnalyzerConfig {
872
+ air_state?: AirState;
873
+ engagement?: Engagement;
874
+ left?: AttackAnalyzerShipConfig;
875
+ right?: AttackAnalyzerShipConfig;
915
876
  }
916
877
 
917
- export type ShipAttr =
918
- | "Unknown"
919
- | "NightCarrier"
920
- | "Installation"
921
- | "RoyalNavy"
922
- | "Kai2"
923
- | "TurbineSpeedBonus"
924
- | "NewModelBoilerSpeedBonus"
925
- | "Pillbox"
926
- | "IsolatedIsland"
927
- | "HarbourSummerPrincess"
928
- | "SupplyDepot"
929
- | "NewSupplyDepot"
930
- | "PtImp"
931
- | "BattleshipSummerPrincess"
932
- | "HeavyCruiserSummerPrincess"
933
- | "AnchorageWaterDemonVacationMode"
934
- | "FrenchBattleshipPrincess"
935
- | "DockPrincess";
936
-
937
- export interface ShipConditions extends ShipPosition {
938
- formation?: Formation;
939
- amagiri_index?: number | null;
878
+ export interface FleetCutinReport<T> {
879
+ cutin: FleetCutin;
880
+ rate: number | null;
881
+ formation: Formation;
882
+ attacks: FleetCutinAttackReport<T>[];
940
883
  }
941
884
 
942
- export type GearTypeIdArray = [number, number, number, number, number];
885
+ export interface FleetCutinAttackReport<T> extends AttackReport<T> {
886
+ index: number;
887
+ ship_id: number;
888
+ power_mod: number;
889
+ }
943
890
 
944
- export interface SimulatorResult {
945
- items: SimulatorResultItem[];
946
- sunk_vec: [number, number, number][];
891
+ export interface CompDayCutinAnalysis {
892
+ rank3_air_state: AirState;
893
+ rank2_air_state: AirState;
894
+ main_fleet_los_mod: number | null;
895
+ escort_fleet_los_mod: number | null;
896
+ ships: ShipDayCutinAnalysis[];
947
897
  }
948
898
 
949
- export interface SimulatorResultItem {
950
- id: string;
951
- fleet_type: FleetType;
899
+ export interface ShipDayCutinAnalysis {
900
+ ship_id: number;
901
+ role: Role;
952
902
  index: number;
953
- damage_state_map: Record<DamageState, number>;
903
+ rank3: DayCutinReport;
904
+ rank2: DayCutinReport;
954
905
  }
955
906
 
956
- export interface ShipAnalyzerConfig {
957
- air_state?: AirState;
958
- engagement?: Engagement;
959
- left?: AttackAnalyzerShipConfig;
960
- right?: AttackAnalyzerShipConfig;
907
+ export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
908
+ observation_term: number | null;
961
909
  }
962
910
 
963
- export type AirSquadronMode = "Sortie" | "AirDefense";
964
-
965
- export interface AirSquadronState extends GearVecState, SlotSizeVecState {
966
- id?: string;
967
- mode?: AirSquadronMode;
911
+ export interface AttackReport<T> {
912
+ style: T;
913
+ proc_rate: number | null;
914
+ attack_power: AttackPower | null;
915
+ attack_power_params: AttackPowerParams | null;
916
+ hits: number;
917
+ hit_rate: HitRate | null;
918
+ hit_rate_params: HitRateParams | null;
919
+ damage: DamageReport | null;
968
920
  }
969
921
 
970
- export type AirState =
971
- | "AirSupremacy"
972
- | "AirSuperiority"
973
- | "AirParity"
974
- | "AirDenial"
975
- | "AirIncapability";
922
+ export interface ShellingStyle {
923
+ tag: "ShellingStyle";
924
+ attack_type: ShellingType;
925
+ cutin: DayCutinLike | null;
926
+ power_mod: number;
927
+ accuracy_mod: number;
928
+ hits: number;
929
+ }
976
930
 
977
- export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
931
+ export interface NightAttackStyle {
932
+ tag: "NightAttackStyle";
933
+ attack_type: NightAttackType;
934
+ cutin: NightCutinLike | null;
935
+ power_mod: number;
936
+ accuracy_mod: number;
937
+ hits: number;
938
+ }
978
939
 
979
- export interface AttackPowerModifier {
980
- a?: number;
981
- b?: number;
940
+ export interface AswAttackStyle {
941
+ tag: "AswAttackStyle";
942
+ attack_type: AswAttackType;
982
943
  }
983
944
 
984
- export interface SpecialEnemyModifiers {
985
- precap_general_mod: AttackPowerModifier;
986
- stype_mod: AttackPowerModifier;
987
- landing_craft_synergy_mod: AttackPowerModifier;
988
- toku_daihatsu_tank_mod: AttackPowerModifier;
989
- m4a1dd_mod: AttackPowerModifier;
990
- honi_mod: AttackPowerModifier;
991
- postcap_general_mod: AttackPowerModifier;
992
- pt_mod: AttackPowerModifier | null;
945
+ export interface TorpedoAttackStyle {
946
+ tag: "TorpedoAttackStyle";
947
+ attack_type: TorpedoAttackType;
993
948
  }
994
949
 
995
- export interface CustomPowerModifiers {
996
- precap_mod?: AttackPowerModifier;
997
- postcap_mod?: AttackPowerModifier;
998
- basic_power_mod?: AttackPowerModifier;
999
- historical_mod?: AttackPowerModifier;
950
+ export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
951
+
952
+ export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
953
+
954
+ export interface SupportShellingStyle {
955
+ tag: "SupportShellingStyle";
956
+ attack_type: SupportShellingType;
1000
957
  }
1001
958
 
1002
- export type AswAttackType = "DepthCharge" | "Aerial";
959
+ export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
1003
960
 
1004
- export type ShellingType = "Normal" | "Aerial";
961
+ export interface EquippabilityRule {
962
+ ship: CompiledEvaler;
963
+ keys?: string[];
964
+ include?: string;
965
+ exclude?: string;
966
+ }
1005
967
 
1006
- export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
968
+ export interface MasterEquippability {
969
+ equip_stype: EquipStype[];
970
+ equip_exslot: number[];
971
+ equip_ship: MstEquipShip[];
972
+ equip_exslot_ship: Record<number, MstEquipExslotShip>;
973
+ rules: EquippabilityRule[];
974
+ }
1007
975
 
1008
- export type SupportShellingType = ShellingType;
976
+ export interface MstEquipExslotShip {
977
+ api_ctypes: Record<number, number> | null;
978
+ api_ship_ids: Record<number, number> | null;
979
+ api_stypes: Record<number, number> | null;
980
+ }
1009
981
 
1010
- export type AttackType =
1011
- | { t: "Asw"; c: AswAttackType }
1012
- | { t: "Shelling"; c: ShellingType }
1013
- | { t: "Night"; c: NightAttackType }
1014
- | { t: "Torpedo" }
1015
- | { t: "SupportShelling"; c: SupportShellingType };
982
+ export interface MstEquipShip {
983
+ api_ship_id: number;
984
+ api_equip_type: number[];
985
+ }
1016
986
 
1017
- export type DayPhaseAttackType =
1018
- | { t: "Shelling"; c: ShellingType }
1019
- | { t: "Asw"; c: AswAttackType };
987
+ export interface EquipStype {
988
+ id: number;
989
+ equip_type: number[];
990
+ }
1020
991
 
1021
- export type NightPhaseAttackType =
1022
- | { t: "Night"; c: NightAttackType }
1023
- | { t: "Asw"; c: AswAttackType };
992
+ export interface CompAnalyzerConfig {
993
+ engagement: Engagement;
994
+ formation: Formation;
995
+ anti_air_cutin: number | null;
996
+ ship_anti_air_resist: number;
997
+ fleet_anti_air_resist: number;
998
+ left_night_fleet_conditions: NightFleetConditions;
999
+ right_night_fleet_conditions: NightFleetConditions;
1000
+ }
1024
1001
 
1025
- export type TorpedoAttackType = null;
1002
+ export interface CompNightAnalysis {
1003
+ night_cutin: CompNightCutinAnalysis;
1004
+ fleet_cutin: FleetCutinReport<NightAttackStyle>[];
1005
+ }
1026
1006
 
1027
- export type ContactRank = "Rank1" | "Rank2" | "Rank3";
1007
+ export interface CompDayAnalysis {
1008
+ day_cutin: CompDayCutinAnalysis;
1009
+ fleet_cutin: FleetCutinReport<ShellingStyle>[];
1010
+ }
1028
1011
 
1029
- export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
1012
+ export interface CompAnalysis {
1013
+ day: CompDayAnalysis;
1014
+ night: CompNightAnalysis;
1015
+ contact: ContactAnalysis;
1016
+ anti_air: CompAntiAirAnalysis;
1017
+ }
1030
1018
 
1031
- export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
1019
+ export interface OrgState {
1020
+ id?: string;
1021
+ f1?: FleetState;
1022
+ f2?: FleetState;
1023
+ f3?: FleetState;
1024
+ f4?: FleetState;
1025
+ a1?: AirSquadronState;
1026
+ a2?: AirSquadronState;
1027
+ a3?: AirSquadronState;
1028
+ hq_level?: number;
1029
+ org_type?: OrgType;
1030
+ sortie?: FleetKey;
1031
+ route_sup?: FleetKey;
1032
+ boss_sup?: FleetKey;
1033
+ }
1032
1034
 
1033
- export type Role = "Main" | "Escort";
1035
+ export type FleetKey = "f1" | "f2" | "f3" | "f4";
1034
1036
 
1035
1037
  /**
1036
1038
  */
@@ -1089,7 +1091,7 @@ export class Analyzer {
1089
1091
  config: ShipAnalyzerConfig,
1090
1092
  left: Ship,
1091
1093
  right: Ship,
1092
- attacker_is_left: boolean
1094
+ attacker_is_left: boolean,
1093
1095
  ): AttackAnalysis;
1094
1096
  /**
1095
1097
  * @param {NodeAttackAnalyzerConfig} config
@@ -1104,7 +1106,7 @@ export class Analyzer {
1104
1106
  left_comp: Comp,
1105
1107
  left_ship: Ship,
1106
1108
  right_comp: Comp,
1107
- right_ship: Ship
1109
+ right_ship: Ship,
1108
1110
  ): NodeAttackAnalysis;
1109
1111
  /**
1110
1112
  * @param {Comp} comp
@@ -1123,7 +1125,7 @@ export class Analyzer {
1123
1125
  player_comp: Comp,
1124
1126
  enemy_comp: Comp,
1125
1127
  config: NodeAttackAnalyzerConfig,
1126
- times: number
1128
+ times: number,
1127
1129
  ): SimulatorResult;
1128
1130
  }
1129
1131
  /**
@@ -1203,7 +1205,7 @@ export class Comp {
1203
1205
  */
1204
1206
  fighter_power(
1205
1207
  escort_participates: boolean,
1206
- air_type: AirWaveType
1208
+ air_type: AirWaveType,
1207
1209
  ): number | undefined;
1208
1210
  /**
1209
1211
  * マップ索敵
@@ -1342,7 +1344,7 @@ export class Fleet {
1342
1344
  get_remaining_fuel(
1343
1345
  id: string,
1344
1346
  rate: number,
1345
- ceil: boolean
1347
+ ceil: boolean,
1346
1348
  ): number | undefined;
1347
1349
  /**
1348
1350
  * @param {string} id
@@ -1353,7 +1355,7 @@ export class Fleet {
1353
1355
  get_remaining_ammo(
1354
1356
  id: string,
1355
1357
  rate: number,
1356
- ceil: boolean
1358
+ ceil: boolean,
1357
1359
  ): number | undefined;
1358
1360
  /**
1359
1361
  * @returns {number}
@@ -1734,7 +1736,7 @@ export class Org {
1734
1736
  create_move_ship_payload(
1735
1737
  id: string,
1736
1738
  x: number,
1737
- y: number
1739
+ y: number,
1738
1740
  ): MoveShipPayload | undefined;
1739
1741
  /**
1740
1742
  * @param {FleetKey} key
@@ -1963,7 +1965,7 @@ export class Ship {
1963
1965
  evasion_term(
1964
1966
  formation_mod: number,
1965
1967
  postcap_additive: number,
1966
- postcap_multiplicative: number
1968
+ postcap_multiplicative: number,
1967
1969
  ): number | undefined;
1968
1970
  /**
1969
1971
  * @param {number} armor_penetration