fleethub-core 1.7.9 → 1.8.0

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,128 +1,91 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
+ /**
4
+ * @param {ShipConditions} value
5
+ * @returns {ShipConditions}
6
+ */
7
+ export function parse_ship_conditions(value: ShipConditions): ShipConditions;
3
8
  /**
4
9
  */
5
10
  export function set_panic_hook(): void;
6
- declare namespace ShipType {
7
- export type Unknown = "Unknown";
8
- export type DE = "DE";
9
- export type DD = "DD";
10
- export type CL = "CL";
11
- export type CLT = "CLT";
12
- export type CA = "CA";
13
- export type CAV = "CAV";
14
- export type CVL = "CVL";
15
- export type FBB = "FBB";
16
- export type BB = "BB";
17
- export type BBV = "BBV";
18
- export type CV = "CV";
19
- export type XBB = "XBB";
20
- export type SS = "SS";
21
- export type SSV = "SSV";
22
- export type AP = "AP";
23
- export type AV = "AV";
24
- export type LHA = "LHA";
25
- export type CVB = "CVB";
26
- export type AR = "AR";
27
- export type AS = "AS";
28
- export type CT = "CT";
29
- export type AO = "AO";
11
+ declare namespace Side {
12
+ export type Player = "Player";
13
+ export type Enemy = "Enemy";
30
14
  }
31
15
 
32
- export type ShipType =
33
- | ShipType.Unknown
34
- | ShipType.DE
35
- | ShipType.DD
36
- | ShipType.CL
37
- | ShipType.CLT
38
- | ShipType.CA
39
- | ShipType.CAV
40
- | ShipType.CVL
41
- | ShipType.FBB
42
- | ShipType.BB
43
- | ShipType.BBV
44
- | ShipType.CV
45
- | ShipType.XBB
46
- | ShipType.SS
47
- | ShipType.SSV
48
- | ShipType.AP
49
- | ShipType.AV
50
- | ShipType.LHA
51
- | ShipType.CVB
52
- | ShipType.AR
53
- | ShipType.AS
54
- | ShipType.CT
55
- | ShipType.AO;
16
+ export type Side = Side.Player | Side.Enemy;
56
17
 
57
- declare namespace ShipCategory {
58
- export type Battleship = "Battleship";
59
- export type AircraftCarrier = "AircraftCarrier";
60
- export type HeavyCruiser = "HeavyCruiser";
61
- export type LightCruiser = "LightCruiser";
62
- export type Destroyer = "Destroyer";
63
- export type CoastalDefenseShip = "CoastalDefenseShip";
64
- export type Submarine = "Submarine";
65
- export type AuxiliaryShip = "AuxiliaryShip";
18
+ export interface ShipConditions extends ShipPosition {
19
+ formation?: Formation;
66
20
  }
67
21
 
68
- export type ShipCategory =
69
- | ShipCategory.Battleship
70
- | ShipCategory.AircraftCarrier
71
- | ShipCategory.HeavyCruiser
72
- | ShipCategory.LightCruiser
73
- | ShipCategory.Destroyer
74
- | ShipCategory.CoastalDefenseShip
75
- | ShipCategory.Submarine
76
- | ShipCategory.AuxiliaryShip;
22
+ export interface BattleDefinitions {
23
+ formation: Record<Formation, NestedFormationDef>;
24
+ anti_air_cutin: Record<number, AntiAirCutinDef>;
25
+ day_cutin: Record<DayCutin, DayCutinDef>;
26
+ night_cutin: Record<NightCutin, NightCutinDef>;
27
+ }
77
28
 
78
- type __ShellingSpecialAttackDayCutin = DayCutin;
79
- type __ShellingSpecialAttackFleetCutin = FleetCutin;
80
- declare namespace ShellingSpecialAttack {
81
- export type DayCutin = { DayCutin: __ShellingSpecialAttackDayCutin };
82
- export type FleetCutin = { FleetCutin: __ShellingSpecialAttackFleetCutin };
29
+ export interface NightCutinDef {
30
+ tag: NightCutin;
31
+ hits: number;
32
+ type_factor: number | null;
33
+ power_mod: number | null;
34
+ accuracy_mod: number | null;
83
35
  }
84
36
 
85
- export type ShellingSpecialAttack =
86
- | ShellingSpecialAttack.DayCutin
87
- | ShellingSpecialAttack.FleetCutin;
37
+ export interface DayCutinDef {
38
+ tag: DayCutin;
39
+ hits: number;
40
+ type_factor: number | null;
41
+ power_mod: number | null;
42
+ accuracy_mod: number | null;
43
+ }
88
44
 
89
- declare namespace DayCutin {
90
- export type MainMain = "MainMain";
91
- export type MainAp = "MainAp";
92
- export type MainRadar = "MainRadar";
93
- export type MainSec = "MainSec";
94
- export type DoubleAttack = "DoubleAttack";
95
- export type FBA = "FBA";
96
- export type BBA = "BBA";
97
- export type BA = "BA";
98
- export type Zuiun = "Zuiun";
99
- export type AirSea = "AirSea";
45
+ export interface AntiAirCutinDef {
46
+ id: number;
47
+ type_factor: number | null;
48
+ multiplier: number | null;
49
+ guaranteed: number | null;
50
+ sequential: boolean | null;
100
51
  }
101
52
 
102
- export type DayCutin =
103
- | DayCutin.MainMain
104
- | DayCutin.MainAp
105
- | DayCutin.MainRadar
106
- | DayCutin.MainSec
107
- | DayCutin.DoubleAttack
108
- | DayCutin.FBA
109
- | DayCutin.BBA
110
- | DayCutin.BA
111
- | DayCutin.Zuiun
112
- | DayCutin.AirSea;
53
+ type __NestedFormationDefFormationDef = FormationDef;
54
+ declare namespace NestedFormationDef {
55
+ export type Normal = __NestedFormationDefFormationDef;
56
+ export type Vanguard = {
57
+ top_half: __NestedFormationDefFormationDef;
58
+ bottom_half: __NestedFormationDefFormationDef;
59
+ };
60
+ }
113
61
 
114
- declare namespace Engagement {
115
- export type GreenT = "GreenT";
116
- export type Parallel = "Parallel";
117
- export type HeadOn = "HeadOn";
118
- export type RedT = "RedT";
62
+ export type NestedFormationDef =
63
+ | NestedFormationDef.Normal
64
+ | NestedFormationDef.Vanguard;
65
+
66
+ export interface FormationDef {
67
+ tag: Formation;
68
+ protection_rate: number | null;
69
+ fleet_anti_air_mod: number;
70
+ shelling: FormationCombatModifiersDef;
71
+ torpedo: FormationCombatModifiersDef;
72
+ asw: FormationCombatModifiersDef;
73
+ night: FormationCombatModifiersDef;
74
+ support_shelling: FormationCombatModifiersDef;
119
75
  }
120
76
 
121
- export type Engagement =
122
- | Engagement.GreenT
123
- | Engagement.Parallel
124
- | Engagement.HeadOn
125
- | Engagement.RedT;
77
+ export interface FormationCombatModifiersDef {
78
+ power_mod?: number;
79
+ accuracy_mod?: number;
80
+ evasion_mod?: number;
81
+ }
82
+
83
+ export interface ShipAnalyzerConfig {
84
+ air_state?: AirState;
85
+ engagement?: Engagement;
86
+ left?: AttackAnalyzerShipConfig;
87
+ right?: AttackAnalyzerShipConfig;
88
+ }
126
89
 
127
90
  declare namespace SpecialEnemyType {
128
91
  export type None = "None";
@@ -147,64 +110,114 @@ export type SpecialEnemyType =
147
110
  | SpecialEnemyType.BattleshipSummerPrincess
148
111
  | SpecialEnemyType.HeavyCruiserSummerPrincess;
149
112
 
150
- declare namespace MoraleState {
151
- export type Sparkle = "Sparkle";
152
- export type Normal = "Normal";
153
- export type Orange = "Orange";
154
- export type Red = "Red";
155
- }
156
-
157
- export type MoraleState =
158
- | MoraleState.Sparkle
159
- | MoraleState.Normal
160
- | MoraleState.Orange
161
- | MoraleState.Red;
162
-
163
- declare namespace DamageState {
164
- export type Normal = "Normal";
165
- export type Shouha = "Shouha";
166
- export type Chuuha = "Chuuha";
167
- export type Taiha = "Taiha";
168
- export type Sunk = "Sunk";
113
+ type __NightCutinLikeFleetCutin = FleetCutin;
114
+ type __NightCutinLikeNightCutin = NightCutin;
115
+ declare namespace NightCutinLike {
116
+ export type NightCutin = __NightCutinLikeNightCutin;
117
+ export type FleetCutin = __NightCutinLikeFleetCutin;
169
118
  }
170
119
 
171
- export type DamageState =
172
- | DamageState.Normal
173
- | DamageState.Shouha
174
- | DamageState.Chuuha
175
- | DamageState.Taiha
176
- | DamageState.Sunk;
120
+ export type NightCutinLike =
121
+ | NightCutinLike.NightCutin
122
+ | NightCutinLike.FleetCutin;
177
123
 
178
- declare namespace SpeedGroup {
179
- export type A = "A";
180
- export type B1 = "B1";
181
- export type B2 = "B2";
182
- export type C = "C";
124
+ type __DayCutinLikeDayCutin = DayCutin;
125
+ type __DayCutinLikeFleetCutin = FleetCutin;
126
+ declare namespace DayCutinLike {
127
+ export type DayCutin = __DayCutinLikeDayCutin;
128
+ export type FleetCutin = __DayCutinLikeFleetCutin;
183
129
  }
184
130
 
185
- export type SpeedGroup =
186
- | SpeedGroup.A
187
- | SpeedGroup.B1
188
- | SpeedGroup.B2
189
- | SpeedGroup.C;
131
+ export type DayCutinLike = DayCutinLike.DayCutin | DayCutinLike.FleetCutin;
190
132
 
191
133
  declare namespace FleetCutin {
192
134
  export type NelsonTouch = "NelsonTouch";
193
- export type NagatoCutin = "NagatoCutin";
194
- export type ColoradoCutin = "ColoradoCutin";
195
- export type KongouCutin = "KongouCutin";
135
+ export type NagatoClassCutin = "NagatoClassCutin";
136
+ export type ColoradoClassCutin = "ColoradoClassCutin";
137
+ export type KongouClassCutin = "KongouClassCutin";
196
138
  export type Yamato2ShipCutin = "Yamato2ShipCutin";
197
139
  export type Yamato3ShipCutin = "Yamato3ShipCutin";
198
140
  }
199
141
 
200
142
  export type FleetCutin =
201
143
  | FleetCutin.NelsonTouch
202
- | FleetCutin.NagatoCutin
203
- | FleetCutin.ColoradoCutin
204
- | FleetCutin.KongouCutin
144
+ | FleetCutin.NagatoClassCutin
145
+ | FleetCutin.ColoradoClassCutin
146
+ | FleetCutin.KongouClassCutin
205
147
  | FleetCutin.Yamato2ShipCutin
206
148
  | FleetCutin.Yamato3ShipCutin;
207
149
 
150
+ declare namespace NightCutin {
151
+ export type MainTorpRadar = "MainTorpRadar";
152
+ export type TorpLookoutRadar = "TorpLookoutRadar";
153
+ export type TorpTsloTorp = "TorpTsloTorp";
154
+ export type TorpTsloDrum = "TorpTsloDrum";
155
+ export type DoubleAttack = "DoubleAttack";
156
+ export type TorpTorpMain = "TorpTorpMain";
157
+ export type TorpTorpTorp = "TorpTorpTorp";
158
+ export type MainMainSec = "MainMainSec";
159
+ export type MainMainMain = "MainMainMain";
160
+ export type SubTorpTorp = "SubTorpTorp";
161
+ export type SubRadarTorp = "SubRadarTorp";
162
+ export type Cvci1_25 = "Cvci1_25";
163
+ export type Cvci1_20 = "Cvci1_20";
164
+ export type Cvci1_18 = "Cvci1_18";
165
+ export type Photobomber = "Photobomber";
166
+ }
167
+
168
+ export type NightCutin =
169
+ | NightCutin.MainTorpRadar
170
+ | NightCutin.TorpLookoutRadar
171
+ | NightCutin.TorpTsloTorp
172
+ | NightCutin.TorpTsloDrum
173
+ | NightCutin.DoubleAttack
174
+ | NightCutin.TorpTorpMain
175
+ | NightCutin.TorpTorpTorp
176
+ | NightCutin.MainMainSec
177
+ | NightCutin.MainMainMain
178
+ | NightCutin.SubTorpTorp
179
+ | NightCutin.SubRadarTorp
180
+ | NightCutin.Cvci1_25
181
+ | NightCutin.Cvci1_20
182
+ | NightCutin.Cvci1_18
183
+ | NightCutin.Photobomber;
184
+
185
+ declare namespace DayCutin {
186
+ export type Zuiun = "Zuiun";
187
+ export type AirSea = "AirSea";
188
+ export type MainMain = "MainMain";
189
+ export type MainAp = "MainAp";
190
+ export type MainRadar = "MainRadar";
191
+ export type MainSec = "MainSec";
192
+ export type DoubleAttack = "DoubleAttack";
193
+ export type FBA = "FBA";
194
+ export type BBA = "BBA";
195
+ export type BA = "BA";
196
+ }
197
+
198
+ export type DayCutin =
199
+ | DayCutin.Zuiun
200
+ | DayCutin.AirSea
201
+ | DayCutin.MainMain
202
+ | DayCutin.MainAp
203
+ | DayCutin.MainRadar
204
+ | DayCutin.MainSec
205
+ | DayCutin.DoubleAttack
206
+ | DayCutin.FBA
207
+ | DayCutin.BBA
208
+ | DayCutin.BA;
209
+
210
+ declare namespace ContactRank {
211
+ export type Rank1 = "Rank1";
212
+ export type Rank2 = "Rank2";
213
+ export type Rank3 = "Rank3";
214
+ }
215
+
216
+ export type ContactRank =
217
+ | ContactRank.Rank1
218
+ | ContactRank.Rank2
219
+ | ContactRank.Rank3;
220
+
208
221
  declare namespace AirWaveType {
209
222
  export type Jet = "Jet";
210
223
  export type LandBase = "LandBase";
@@ -228,96 +241,28 @@ export interface SimulatorResultItem {
228
241
  damage_state_map: Record<DamageState, number>;
229
242
  }
230
243
 
231
- declare namespace AswAttackType {
232
- export type DepthCharge = "DepthCharge";
233
- export type Aircraft = "Aircraft";
234
- }
235
-
236
- export type AswAttackType = AswAttackType.DepthCharge | AswAttackType.Aircraft;
237
-
238
- declare namespace OrgType {
239
- export type Single = "Single";
240
- export type CarrierTaskForce = "CarrierTaskForce";
241
- export type SurfaceTaskForce = "SurfaceTaskForce";
242
- export type TransportEscort = "TransportEscort";
243
- export type EnemySingle = "EnemySingle";
244
- export type EnemyCombined = "EnemyCombined";
245
- }
246
-
247
- export type OrgType =
248
- | OrgType.Single
249
- | OrgType.CarrierTaskForce
250
- | OrgType.SurfaceTaskForce
251
- | OrgType.TransportEscort
252
- | OrgType.EnemySingle
253
- | OrgType.EnemyCombined;
254
-
255
- export interface WarfareContext {
256
- attacker_env: WarfareShipEnvironment;
257
- target_env: WarfareShipEnvironment;
258
- engagement: Engagement;
259
- air_state: AirState;
260
- }
261
-
262
- export interface WarfareShipEnvironment {
263
- org_type: OrgType;
264
- role: Role;
265
- ship_index: number;
266
- fleet_len: number;
267
- formation: Formation;
268
- fleet_los_mod: number | null;
269
- }
270
-
271
- export interface CompMeta {
272
- fleets: Record<FleetType, FleetMeta>;
273
- }
274
-
275
- export interface FleetMeta {
276
- id: string;
277
- len: number;
278
- ships: [string, ShipMeta | null][];
279
- }
280
-
281
- export interface ShipMeta {
282
- id: string;
283
- ship_id: number;
284
- }
285
-
286
- export interface MasterData {
287
- gears: MasterGear[];
288
- gear_attrs: MasterAttrRule<GearAttr>[];
289
- ships: MasterShip[];
290
- ship_attrs: MasterAttrRule<ShipAttr>[];
291
- ibonuses: MasterIBonuses;
292
- equippable: MasterEquippable;
293
- formation: NestedFormationDef[];
294
- anti_air_cutin: AntiAirCutinDef[];
295
- day_cutin: DayCutinDef[];
296
- night_cutin: NightCutinDef[];
297
- }
298
-
299
- export interface MasterConfig {
300
- formation: NestedFormationDef[];
301
- anti_air_cutin: AntiAirCutinDef[];
302
- day_cutin: DayCutinDef[];
303
- night_cutin: NightCutinDef[];
304
- }
305
-
306
- export interface MasterAttrRule<T> {
307
- tag: T;
308
- name: string;
309
- expr: string;
244
+ declare namespace DamageState {
245
+ export type Normal = "Normal";
246
+ export type Shouha = "Shouha";
247
+ export type Chuuha = "Chuuha";
248
+ export type Taiha = "Taiha";
249
+ export type Sunk = "Sunk";
310
250
  }
311
251
 
312
- export type NumMap<K, V> = Partial<Record<K, V>>;
252
+ export type DamageState =
253
+ | DamageState.Normal
254
+ | DamageState.Shouha
255
+ | DamageState.Chuuha
256
+ | DamageState.Taiha
257
+ | DamageState.Sunk;
313
258
 
314
- declare namespace Role {
315
- export type Main = "Main";
316
- export type Escort = "Escort";
259
+ export interface ShipPosition {
260
+ org_type?: OrgType;
261
+ role?: Role;
262
+ fleet_len?: number;
263
+ index?: number;
317
264
  }
318
265
 
319
- export type Role = Role.Main | Role.Escort;
320
-
321
266
  declare namespace GearCategory {
322
267
  export type Fighter = "Fighter";
323
268
  export type Bomber = "Bomber";
@@ -470,26 +415,289 @@ export type GearType =
470
415
  | GearType.LargeRadar2
471
416
  | GearType.CbRecon2;
472
417
 
473
- export interface CompDayCutinRateInfo {
474
- main: FleetDayCutinRateInfo;
475
- escort: FleetDayCutinRateInfo | null;
418
+ declare namespace FleetType {
419
+ export type Main = "Main";
420
+ export type Escort = "Escort";
421
+ export type RouteSup = "RouteSup";
422
+ export type BossSup = "BossSup";
476
423
  }
477
424
 
478
- export interface FleetDayCutinRateInfo {
479
- fleet_los_mod: number | null;
480
- ships: ShipDayCutinRateInfo[];
425
+ export type FleetType =
426
+ | FleetType.Main
427
+ | FleetType.Escort
428
+ | FleetType.RouteSup
429
+ | FleetType.BossSup;
430
+
431
+ export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
432
+ formation?: Formation;
481
433
  }
482
434
 
483
- export interface ShipDayCutinRateInfo {
435
+ export interface NodeAttackAnalyzerConfig {
436
+ air_state?: AirState;
437
+ engagement?: Engagement;
438
+ left?: NodeAttackAnalyzerShipConfig;
439
+ right?: NodeAttackAnalyzerShipConfig;
440
+ }
441
+
442
+ export interface NodeAttackAnalysis {
443
+ left: AttackAnalysis;
444
+ right: AttackAnalysis;
445
+ }
446
+
447
+ export interface CompMeta {
448
+ fleets: Record<FleetType, FleetMeta>;
449
+ }
450
+
451
+ export interface FleetMeta {
452
+ id: string;
453
+ len: number;
454
+ ships: [string, ShipMeta | null][];
455
+ }
456
+
457
+ export interface ShipMeta {
458
+ id: string;
484
459
  ship_id: number;
485
- air_supremacy: DayCutinRateInfo;
486
- air_superiority: DayCutinRateInfo;
487
460
  }
488
461
 
489
- export interface DayCutinRateInfo {
490
- observation_term: number | null;
491
- rates: [DayCutin | null, number | null][];
492
- total_cutin_rate: number | null;
462
+ declare namespace Engagement {
463
+ export type GreenT = "GreenT";
464
+ export type Parallel = "Parallel";
465
+ export type HeadOn = "HeadOn";
466
+ export type RedT = "RedT";
467
+ }
468
+
469
+ export type Engagement =
470
+ | Engagement.GreenT
471
+ | Engagement.Parallel
472
+ | Engagement.HeadOn
473
+ | Engagement.RedT;
474
+
475
+ export type TorpedoAttackType = null;
476
+
477
+ type __NightPhaseAttackTypeAswAttackType = AswAttackType;
478
+ type __NightPhaseAttackTypeNightAttackType = NightAttackType;
479
+ declare namespace NightPhaseAttackType {
480
+ export type Night = { t: "Night"; c: __NightPhaseAttackTypeNightAttackType };
481
+ export type Asw = { t: "Asw"; c: __NightPhaseAttackTypeAswAttackType };
482
+ }
483
+
484
+ export type NightPhaseAttackType =
485
+ | NightPhaseAttackType.Night
486
+ | NightPhaseAttackType.Asw;
487
+
488
+ type __DayPhaseAttackTypeAswAttackType = AswAttackType;
489
+ type __DayPhaseAttackTypeShellingType = ShellingType;
490
+ declare namespace DayPhaseAttackType {
491
+ export type Shelling = { t: "Shelling"; c: __DayPhaseAttackTypeShellingType };
492
+ export type Asw = { t: "Asw"; c: __DayPhaseAttackTypeAswAttackType };
493
+ }
494
+
495
+ export type DayPhaseAttackType =
496
+ | DayPhaseAttackType.Shelling
497
+ | DayPhaseAttackType.Asw;
498
+
499
+ type __AttackTypeAswAttackType = AswAttackType;
500
+ type __AttackTypeNightAttackType = NightAttackType;
501
+ type __AttackTypeShellingType = ShellingType;
502
+ type __AttackTypeSupportShellingType = SupportShellingType;
503
+ declare namespace AttackType {
504
+ export type Asw = { t: "Asw"; c: __AttackTypeAswAttackType };
505
+ export type Shelling = { t: "Shelling"; c: __AttackTypeShellingType };
506
+ export type Night = { t: "Night"; c: __AttackTypeNightAttackType };
507
+ export type Torpedo = { t: "Torpedo"; c: null };
508
+ export type SupportShelling = {
509
+ t: "SupportShelling";
510
+ c: __AttackTypeSupportShellingType;
511
+ };
512
+ }
513
+
514
+ export type AttackType =
515
+ | AttackType.Asw
516
+ | AttackType.Shelling
517
+ | AttackType.Night
518
+ | AttackType.Torpedo
519
+ | AttackType.SupportShelling;
520
+
521
+ export type SupportShellingType = ShellingType;
522
+
523
+ declare namespace NightAttackType {
524
+ export type Normal = "Normal";
525
+ export type Swordfish = "Swordfish";
526
+ export type Carrier = "Carrier";
527
+ }
528
+
529
+ export type NightAttackType =
530
+ | NightAttackType.Normal
531
+ | NightAttackType.Swordfish
532
+ | NightAttackType.Carrier;
533
+
534
+ declare namespace ShellingType {
535
+ export type Normal = "Normal";
536
+ export type Carrier = "Carrier";
537
+ }
538
+
539
+ export type ShellingType = ShellingType.Normal | ShellingType.Carrier;
540
+
541
+ declare namespace AswAttackType {
542
+ export type DepthCharge = "DepthCharge";
543
+ export type Aircraft = "Aircraft";
544
+ }
545
+
546
+ export type AswAttackType = AswAttackType.DepthCharge | AswAttackType.Aircraft;
547
+
548
+ declare namespace AirStateRank {
549
+ export type Rank0 = "Rank0";
550
+ export type Rank1 = "Rank1";
551
+ export type Rank2 = "Rank2";
552
+ export type Rank3 = "Rank3";
553
+ }
554
+
555
+ export type AirStateRank =
556
+ | AirStateRank.Rank0
557
+ | AirStateRank.Rank1
558
+ | AirStateRank.Rank2
559
+ | AirStateRank.Rank3;
560
+
561
+ declare namespace AirState {
562
+ export type AirSupremacy = "AirSupremacy";
563
+ export type AirSuperiority = "AirSuperiority";
564
+ export type AirParity = "AirParity";
565
+ export type AirDenial = "AirDenial";
566
+ export type AirIncapability = "AirIncapability";
567
+ }
568
+
569
+ export type AirState =
570
+ | AirState.AirSupremacy
571
+ | AirState.AirSuperiority
572
+ | AirState.AirParity
573
+ | AirState.AirDenial
574
+ | AirState.AirIncapability;
575
+
576
+ export interface MasterData {
577
+ gears: MasterGear[];
578
+ gear_attrs: MasterAttrRule<GearAttr>[];
579
+ ships: MasterShip[];
580
+ ship_attrs: MasterAttrRule<ShipAttr>[];
581
+ ibonuses: MasterIBonuses;
582
+ equippable: MasterEquippable;
583
+ formation: NestedFormationDef[];
584
+ anti_air_cutin: AntiAirCutinDef[];
585
+ day_cutin: DayCutinDef[];
586
+ night_cutin: NightCutinDef[];
587
+ }
588
+
589
+ export interface MasterConfig {
590
+ formation: NestedFormationDef[];
591
+ anti_air_cutin: AntiAirCutinDef[];
592
+ day_cutin: DayCutinDef[];
593
+ night_cutin: NightCutinDef[];
594
+ }
595
+
596
+ export interface MasterAttrRule<T> {
597
+ tag: T;
598
+ name: string;
599
+ expr: string;
600
+ }
601
+
602
+ export interface AttackAnalyzerConfig {
603
+ air_state?: AirState;
604
+ engagement?: Engagement;
605
+ attacker?: AttackAnalyzerShipConfig;
606
+ target?: AttackAnalyzerShipConfig;
607
+ }
608
+
609
+ export interface AttackAnalyzerShipConfig
610
+ extends ShipConditions,
611
+ NightFleetConditions {
612
+ fleet_los_mod?: number | null;
613
+ }
614
+
615
+ declare namespace ShipAttr {
616
+ export type Unknown = "Unknown";
617
+ export type Abyssal = "Abyssal";
618
+ export type NightCarrier = "NightCarrier";
619
+ export type Installation = "Installation";
620
+ export type RoyalNavy = "RoyalNavy";
621
+ export type Kai2 = "Kai2";
622
+ export type TurbineSpeedBonus = "TurbineSpeedBonus";
623
+ export type Pillbox = "Pillbox";
624
+ export type IsolatedIsland = "IsolatedIsland";
625
+ export type HarbourSummerPrincess = "HarbourSummerPrincess";
626
+ export type SupplyDepot = "SupplyDepot";
627
+ export type PtImp = "PtImp";
628
+ export type BattleshipSummerPrincess = "BattleshipSummerPrincess";
629
+ export type HeavyCruiserSummerPrincess = "HeavyCruiserSummerPrincess";
630
+ }
631
+
632
+ export type ShipAttr =
633
+ | ShipAttr.Unknown
634
+ | ShipAttr.Abyssal
635
+ | ShipAttr.NightCarrier
636
+ | ShipAttr.Installation
637
+ | ShipAttr.RoyalNavy
638
+ | ShipAttr.Kai2
639
+ | ShipAttr.TurbineSpeedBonus
640
+ | ShipAttr.Pillbox
641
+ | ShipAttr.IsolatedIsland
642
+ | ShipAttr.HarbourSummerPrincess
643
+ | ShipAttr.SupplyDepot
644
+ | ShipAttr.PtImp
645
+ | ShipAttr.BattleshipSummerPrincess
646
+ | ShipAttr.HeavyCruiserSummerPrincess;
647
+
648
+ declare namespace OrgType {
649
+ export type Single = "Single";
650
+ export type CarrierTaskForce = "CarrierTaskForce";
651
+ export type SurfaceTaskForce = "SurfaceTaskForce";
652
+ export type TransportEscort = "TransportEscort";
653
+ export type EnemySingle = "EnemySingle";
654
+ export type EnemyCombined = "EnemyCombined";
655
+ }
656
+
657
+ export type OrgType =
658
+ | OrgType.Single
659
+ | OrgType.CarrierTaskForce
660
+ | OrgType.SurfaceTaskForce
661
+ | OrgType.TransportEscort
662
+ | OrgType.EnemySingle
663
+ | OrgType.EnemyCombined;
664
+
665
+ export interface ShipEnvironment {
666
+ org_type?: OrgType;
667
+ role?: Role;
668
+ index?: number;
669
+ fleet_len?: number;
670
+ formation?: Formation;
671
+ fleet_los_mod?: number | null;
672
+ night_conditions?: NightFleetConditions;
673
+ }
674
+
675
+ export interface NightFleetConditions {
676
+ night_contact_rank?: ContactRank | null;
677
+ starshell_index?: number | null;
678
+ searchlight_index?: number | null;
679
+ activates_large_searchlight?: boolean;
680
+ }
681
+
682
+ export interface NightConditions {
683
+ player?: NightFleetConditions;
684
+ enemy?: NightFleetConditions;
685
+ }
686
+
687
+ export interface BattleConditions {
688
+ org_type: OrgType;
689
+ role: Role;
690
+ ship_index: number;
691
+ fleet_len: number;
692
+ formation: Formation;
693
+ fleet_los_mod: number | null;
694
+ night_conditions: NightFleetConditions;
695
+ }
696
+
697
+ export interface SupportShellingSimulatorParams {
698
+ attacker_formation?: Formation;
699
+ target_formation?: Formation;
700
+ engagement: Engagement;
493
701
  }
494
702
 
495
703
  export interface EBonuses {
@@ -505,60 +713,159 @@ export interface EBonuses {
505
713
  range: number;
506
714
  }
507
715
 
508
- export interface ShipInput {
509
- ship_id: number;
510
- ctype: number;
511
- stype: number;
512
- yomi: string;
716
+ export interface ShipInput {
717
+ ship_id: number;
718
+ ctype: number;
719
+ stype: number;
720
+ yomi: string;
721
+ }
722
+
723
+ export interface GearInput {
724
+ gear_id: number;
725
+ types: GearTypeIdArray;
726
+ firepower: number;
727
+ torpedo: number;
728
+ anti_air: number;
729
+ armor: number;
730
+ evasion: number;
731
+ asw: number;
732
+ los: number;
733
+ bombing: number;
734
+ accuracy: number;
735
+ range: number;
736
+ radius: number;
737
+ stars: number;
738
+ ace: number;
739
+ }
740
+
741
+ export type GearVecInput = GearInput[];
742
+
743
+ declare namespace Role {
744
+ export type Main = "Main";
745
+ export type Escort = "Escort";
746
+ }
747
+
748
+ export type Role = Role.Main | Role.Escort;
749
+
750
+ declare namespace GearAttr {
751
+ export type Unknown = "Unknown";
752
+ export type Abyssal = "Abyssal";
753
+ export type HighAngleMount = "HighAngleMount";
754
+ export type NightFighter = "NightFighter";
755
+ export type NightAttacker = "NightAttacker";
756
+ export type HeavyBomber = "HeavyBomber";
757
+ export type NightRecon = "NightRecon";
758
+ export type MainGun = "MainGun";
759
+ export type Radar = "Radar";
760
+ export type SurfaceRadar = "SurfaceRadar";
761
+ export type AirRadar = "AirRadar";
762
+ export type DepthChargeProjector = "DepthChargeProjector";
763
+ export type SynergisticDepthCharge = "SynergisticDepthCharge";
764
+ export type AntiSubMortar = "AntiSubMortar";
765
+ export type AntiSubWeapon = "AntiSubWeapon";
766
+ export type ApDepthCharge = "ApDepthCharge";
767
+ export type AntiSubAircraft = "AntiSubAircraft";
768
+ export type LateModelBowTorpedo = "LateModelBowTorpedo";
769
+ export type Seaplane = "Seaplane";
770
+ export type CbAircraft = "CbAircraft";
771
+ export type LbAircraft = "LbAircraft";
772
+ export type JetAircraft = "JetAircraft";
773
+ export type Fighter = "Fighter";
774
+ export type Recon = "Recon";
775
+ export type ObservationSeaplane = "ObservationSeaplane";
776
+ export type CbFighterBomber = "CbFighterBomber";
777
+ export type AntiInstDiveBomber = "AntiInstDiveBomber";
778
+ export type CbSwordfish = "CbSwordfish";
779
+ export type SemiNightPlane = "SemiNightPlane";
780
+ export type HighAltitudeInterceptor = "HighAltitudeInterceptor";
781
+ }
782
+
783
+ export type GearAttr =
784
+ | GearAttr.Unknown
785
+ | GearAttr.Abyssal
786
+ | GearAttr.HighAngleMount
787
+ | GearAttr.NightFighter
788
+ | GearAttr.NightAttacker
789
+ | GearAttr.HeavyBomber
790
+ | GearAttr.NightRecon
791
+ | GearAttr.MainGun
792
+ | GearAttr.Radar
793
+ | GearAttr.SurfaceRadar
794
+ | GearAttr.AirRadar
795
+ | GearAttr.DepthChargeProjector
796
+ | GearAttr.SynergisticDepthCharge
797
+ | GearAttr.AntiSubMortar
798
+ | GearAttr.AntiSubWeapon
799
+ | GearAttr.ApDepthCharge
800
+ | GearAttr.AntiSubAircraft
801
+ | GearAttr.LateModelBowTorpedo
802
+ | GearAttr.Seaplane
803
+ | GearAttr.CbAircraft
804
+ | GearAttr.LbAircraft
805
+ | GearAttr.JetAircraft
806
+ | GearAttr.Fighter
807
+ | GearAttr.Recon
808
+ | GearAttr.ObservationSeaplane
809
+ | GearAttr.CbFighterBomber
810
+ | GearAttr.AntiInstDiveBomber
811
+ | GearAttr.CbSwordfish
812
+ | GearAttr.SemiNightPlane
813
+ | GearAttr.HighAltitudeInterceptor;
814
+
815
+ export interface SupportShellingStyle {
816
+ tag: "SupportShellingStyle";
817
+ attack_type: SupportShellingType;
818
+ }
819
+
820
+ type __NightPhaseAttackStyleAswAttackStyle = AswAttackStyle;
821
+ type __NightPhaseAttackStyleNightAttackStyle = NightAttackStyle;
822
+ declare namespace NightPhaseAttackStyle {
823
+ export type Night = __NightPhaseAttackStyleNightAttackStyle;
824
+ export type Asw = __NightPhaseAttackStyleAswAttackStyle;
513
825
  }
514
826
 
515
- export interface GearInput {
516
- gear_id: number;
517
- types: GearTypeIdArray;
518
- firepower: number;
519
- torpedo: number;
520
- anti_air: number;
521
- armor: number;
522
- evasion: number;
523
- asw: number;
524
- los: number;
525
- bombing: number;
526
- accuracy: number;
527
- range: number;
528
- radius: number;
529
- stars: number;
530
- ace: number;
827
+ export type NightPhaseAttackStyle =
828
+ | NightPhaseAttackStyle.Night
829
+ | NightPhaseAttackStyle.Asw;
830
+
831
+ type __DayPhaseAttackStyleAswAttackStyle = AswAttackStyle;
832
+ type __DayPhaseAttackStyleShellingStyle = ShellingStyle;
833
+ declare namespace DayPhaseAttackStyle {
834
+ export type Shelling = __DayPhaseAttackStyleShellingStyle;
835
+ export type Asw = __DayPhaseAttackStyleAswAttackStyle;
531
836
  }
532
837
 
533
- export type GearVecInput = GearInput[];
838
+ export type DayPhaseAttackStyle =
839
+ | DayPhaseAttackStyle.Shelling
840
+ | DayPhaseAttackStyle.Asw;
534
841
 
535
- declare namespace AirStateRank {
536
- export type Rank0 = "Rank0";
537
- export type Rank1 = "Rank1";
538
- export type Rank2 = "Rank2";
539
- export type Rank3 = "Rank3";
842
+ export interface TorpedoAttackStyle {
843
+ tag: "TorpedoAttackStyle";
844
+ attack_type: TorpedoAttackType;
540
845
  }
541
846
 
542
- export type AirStateRank =
543
- | AirStateRank.Rank0
544
- | AirStateRank.Rank1
545
- | AirStateRank.Rank2
546
- | AirStateRank.Rank3;
847
+ export interface AswAttackStyle {
848
+ tag: "AswAttackStyle";
849
+ attack_type: AswAttackType;
850
+ }
547
851
 
548
- declare namespace AirState {
549
- export type AirSupremacy = "AirSupremacy";
550
- export type AirSuperiority = "AirSuperiority";
551
- export type AirParity = "AirParity";
552
- export type AirDenial = "AirDenial";
553
- export type AirIncapability = "AirIncapability";
852
+ export interface NightAttackStyle {
853
+ tag: "NightAttackStyle";
854
+ attack_type: NightAttackType;
855
+ cutin: NightCutinLike | null;
856
+ power_mod: number;
857
+ accuracy_mod: number;
858
+ hits: number;
554
859
  }
555
860
 
556
- export type AirState =
557
- | AirState.AirSupremacy
558
- | AirState.AirSuperiority
559
- | AirState.AirParity
560
- | AirState.AirDenial
561
- | AirState.AirIncapability;
861
+ export interface ShellingStyle {
862
+ tag: "ShellingStyle";
863
+ attack_type: ShellingType;
864
+ cutin: DayCutinLike | null;
865
+ power_mod: number;
866
+ accuracy_mod: number;
867
+ hits: number;
868
+ }
562
869
 
563
870
  export interface MasterIBonuses {
564
871
  shelling_power: MasterIBonusRule[];
@@ -584,41 +891,30 @@ export interface MasterIBonusRule {
584
891
  formula: CompiledEvaler;
585
892
  }
586
893
 
587
- declare namespace ShellingAttackType {
588
- export type Normal = "Normal";
589
- export type Carrier = "Carrier";
590
- }
591
-
592
- export type ShellingAttackType =
593
- | ShellingAttackType.Normal
594
- | ShellingAttackType.Carrier;
595
-
596
- export interface NightSituation {
597
- night_contact_rank: ContactRank | null;
598
- starshell: boolean;
599
- searchlight: boolean;
894
+ export interface NightContactChance {
895
+ rank1: number;
896
+ rank2: number;
897
+ rank3: number;
600
898
  }
601
899
 
602
- export interface FleetCutinAnalysis {
603
- shelling: FleetCutinInfo[];
604
- night: FleetCutinInfo[];
900
+ export interface CompNightCutinAnalysis {
901
+ night_contact_chance: NightContactChance;
902
+ ships: ShipNightCutinAnalysis[];
605
903
  }
606
904
 
607
- export interface FleetCutinInfo {
608
- cutin: FleetCutin;
609
- rate: number | null;
610
- formation: Formation;
611
- items: FleetCutinInfoItem[];
905
+ export interface ShipNightCutinAnalysis {
906
+ ship_id: number;
907
+ index: number;
908
+ normal: NightCutinActionReport;
909
+ chuuha: NightCutinActionReport;
612
910
  }
613
911
 
614
- export interface FleetCutinInfoItem {
615
- ship_id: number;
616
- cutin: FleetCutin;
617
- fleet_cutin_mod: number;
618
- stats: AttackStats;
912
+ export interface NightCutinActionReport
913
+ extends ActionReport<NightPhaseAttackStyle> {
914
+ cutin_term: number | null;
619
915
  }
620
916
 
621
- export interface DamageInfo {
917
+ export interface DamageReport {
622
918
  miss_damage_min: number;
623
919
  miss_damage_max: number;
624
920
  normal_damage_min: number;
@@ -627,42 +923,29 @@ export interface DamageInfo {
627
923
  critical_damage_max: number;
628
924
  normal_scratch_rate: number;
629
925
  critical_scratch_rate: number;
630
- damage_map: NumMap<number, number>;
631
- damage_state_map: NumMap<DamageState, number>;
926
+ damage_density: Histogram<number, number>;
927
+ damage_state_density: Histogram<DamageState, number>;
632
928
  }
633
929
 
634
- declare namespace ShipAttr {
635
- export type Unknown = "Unknown";
636
- export type Abyssal = "Abyssal";
637
- export type NightCarrier = "NightCarrier";
638
- export type Installation = "Installation";
639
- export type RoyalNavy = "RoyalNavy";
640
- export type Kai2 = "Kai2";
641
- export type TurbineSpeedBonus = "TurbineSpeedBonus";
642
- export type Pillbox = "Pillbox";
643
- export type IsolatedIsland = "IsolatedIsland";
644
- export type HarbourSummerPrincess = "HarbourSummerPrincess";
645
- export type SupplyDepot = "SupplyDepot";
646
- export type PtImp = "PtImp";
647
- export type BattleshipSummerPrincess = "BattleshipSummerPrincess";
648
- export type HeavyCruiserSummerPrincess = "HeavyCruiserSummerPrincess";
930
+ export interface CompAntiAirAnalysis {
931
+ fleet_adjusted_anti_air: number;
932
+ ships: AntiAirReport[];
933
+ anti_air_cutin_chance: [number, number][];
649
934
  }
650
935
 
651
- export type ShipAttr =
652
- | ShipAttr.Unknown
653
- | ShipAttr.Abyssal
654
- | ShipAttr.NightCarrier
655
- | ShipAttr.Installation
656
- | ShipAttr.RoyalNavy
657
- | ShipAttr.Kai2
658
- | ShipAttr.TurbineSpeedBonus
659
- | ShipAttr.Pillbox
660
- | ShipAttr.IsolatedIsland
661
- | ShipAttr.HarbourSummerPrincess
662
- | ShipAttr.SupplyDepot
663
- | ShipAttr.PtImp
664
- | ShipAttr.BattleshipSummerPrincess
665
- | ShipAttr.HeavyCruiserSummerPrincess;
936
+ export interface AntiAirReport {
937
+ ship_id: number;
938
+ role: Role;
939
+ index: number;
940
+ adjusted_anti_air: number | null;
941
+ proportional_shotdown_rate: number | null;
942
+ fixed_shotdown_number: number | null;
943
+ guaranteed: number | null;
944
+ anti_air_cutin_chance: [number, number][];
945
+ anti_air_propellant_barrage_chance: number | null;
946
+ }
947
+
948
+ export type Histogram<K, V> = Partial<Record<K, V>>;
666
949
 
667
950
  type __FormationCombinedFormation = CombinedFormation;
668
951
  type __FormationSingleFormation = SingleFormation;
@@ -697,164 +980,33 @@ declare namespace SingleFormation {
697
980
 
698
981
  export type SingleFormation =
699
982
  | SingleFormation.LineAhead
700
- | SingleFormation.DoubleLine
701
- | SingleFormation.Diamond
702
- | SingleFormation.Echelon
703
- | SingleFormation.LineAbreast
704
- | SingleFormation.Vanguard;
705
-
706
- export interface CustomPowerModifiers {
707
- precap_mod?: AttackPowerModifier;
708
- postcap_mod?: AttackPowerModifier;
709
- basic_power_mod?: AttackPowerModifier;
710
- }
711
-
712
- export interface SpecialEnemyModifiers {
713
- precap_general_mod: AttackPowerModifier;
714
- stype_mod: AttackPowerModifier;
715
- landing_craft_synergy_mod: AttackPowerModifier;
716
- toku_daihatsu_tank_mod: AttackPowerModifier;
717
- m4a1dd_mod: AttackPowerModifier;
718
- honi_mod: AttackPowerModifier;
719
- postcap_general_mod: AttackPowerModifier;
720
- pt_mod: AttackPowerModifier;
721
- }
722
-
723
- export interface AttackPowerModifier {
724
- a?: number;
725
- b?: number;
726
- }
727
-
728
- export interface ShellingSupportSimulatorParams {
729
- attacker_formation: Formation;
730
- target_formation: Formation;
731
- engagement: Engagement;
732
- }
733
-
734
- export interface AttackPower {
735
- precap: number;
736
- is_capped: boolean;
737
- capped: number;
738
- normal: number;
739
- critical: number;
740
- armor_penetration: number;
741
- remaining_ammo_mod: number;
742
- }
743
-
744
- export interface AttackPowerParams {
745
- basic: number;
746
- cap: number;
747
- precap_mod: AttackPowerModifier;
748
- postcap_mod: AttackPowerModifier;
749
- ap_shell_mod: number | null;
750
- carrier_power: number | null;
751
- proficiency_critical_mod: number | null;
752
- armor_penetration: number;
753
- remaining_ammo_mod: number;
754
- special_enemy_mods: SpecialEnemyModifiers;
755
- custom_mods: CustomPowerModifiers;
756
- }
757
-
758
- export interface SpecialEnemyModifiers {
759
- precap_general_mod: AttackPowerModifier;
760
- stype_mod: AttackPowerModifier;
761
- landing_craft_synergy_mod: AttackPowerModifier;
762
- toku_daihatsu_tank_mod: AttackPowerModifier;
763
- m4a1dd_mod: AttackPowerModifier;
764
- honi_mod: AttackPowerModifier;
765
- postcap_general_mod: AttackPowerModifier;
766
- pt_mod: AttackPowerModifier;
767
- }
768
-
769
- export interface CompContactChanceInfo {
770
- single: AirstrikeContactChance[] | null;
771
- combined: AirstrikeContactChance[] | null;
772
- }
773
-
774
- export interface AirstrikeContactChance {
775
- air_state: AirState;
776
- trigger_rate: number;
777
- rank3: number;
778
- rank2: number;
779
- rank1: number;
780
- total: number;
781
- }
782
-
783
- declare namespace GearAttr {
784
- export type Unknown = "Unknown";
785
- export type Abyssal = "Abyssal";
786
- export type HighAngleMount = "HighAngleMount";
787
- export type NightFighter = "NightFighter";
788
- export type NightAttacker = "NightAttacker";
789
- export type HeavyBomber = "HeavyBomber";
790
- export type MainGun = "MainGun";
791
- export type Radar = "Radar";
792
- export type SurfaceRadar = "SurfaceRadar";
793
- export type AirRadar = "AirRadar";
794
- export type DepthChargeProjector = "DepthChargeProjector";
795
- export type SynergisticDepthCharge = "SynergisticDepthCharge";
796
- export type AntiSubMortar = "AntiSubMortar";
797
- export type AntiSubWeapon = "AntiSubWeapon";
798
- export type AntiSubAircraft = "AntiSubAircraft";
799
- export type LateModelBowTorpedo = "LateModelBowTorpedo";
800
- export type Seaplane = "Seaplane";
801
- export type CbAircraft = "CbAircraft";
802
- export type LbAircraft = "LbAircraft";
803
- export type JetAircraft = "JetAircraft";
804
- export type Fighter = "Fighter";
805
- export type Recon = "Recon";
806
- export type ObservationSeaplane = "ObservationSeaplane";
807
- export type CbFighterBomber = "CbFighterBomber";
808
- export type AntiInstDiveBomber = "AntiInstDiveBomber";
809
- export type NightRecon = "NightRecon";
810
- export type CbSwordfish = "CbSwordfish";
811
- export type SemiNightPlane = "SemiNightPlane";
812
- export type HighAltitudeInterceptor = "HighAltitudeInterceptor";
813
- }
814
-
815
- export type GearAttr =
816
- | GearAttr.Unknown
817
- | GearAttr.Abyssal
818
- | GearAttr.HighAngleMount
819
- | GearAttr.NightFighter
820
- | GearAttr.NightAttacker
821
- | GearAttr.HeavyBomber
822
- | GearAttr.MainGun
823
- | GearAttr.Radar
824
- | GearAttr.SurfaceRadar
825
- | GearAttr.AirRadar
826
- | GearAttr.DepthChargeProjector
827
- | GearAttr.SynergisticDepthCharge
828
- | GearAttr.AntiSubMortar
829
- | GearAttr.AntiSubWeapon
830
- | GearAttr.AntiSubAircraft
831
- | GearAttr.LateModelBowTorpedo
832
- | GearAttr.Seaplane
833
- | GearAttr.CbAircraft
834
- | GearAttr.LbAircraft
835
- | GearAttr.JetAircraft
836
- | GearAttr.Fighter
837
- | GearAttr.Recon
838
- | GearAttr.ObservationSeaplane
839
- | GearAttr.CbFighterBomber
840
- | GearAttr.AntiInstDiveBomber
841
- | GearAttr.NightRecon
842
- | GearAttr.CbSwordfish
843
- | GearAttr.SemiNightPlane
844
- | GearAttr.HighAltitudeInterceptor;
983
+ | SingleFormation.DoubleLine
984
+ | SingleFormation.Diamond
985
+ | SingleFormation.Echelon
986
+ | SingleFormation.LineAbreast
987
+ | SingleFormation.Vanguard;
845
988
 
846
- declare namespace FleetType {
847
- export type Main = "Main";
848
- export type Escort = "Escort";
849
- export type RouteSup = "RouteSup";
850
- export type BossSup = "BossSup";
989
+ export interface CustomPowerModifiers {
990
+ precap_mod?: AttackPowerModifier;
991
+ postcap_mod?: AttackPowerModifier;
992
+ basic_power_mod?: AttackPowerModifier;
851
993
  }
852
994
 
853
- export type FleetType =
854
- | FleetType.Main
855
- | FleetType.Escort
856
- | FleetType.RouteSup
857
- | FleetType.BossSup;
995
+ export interface SpecialEnemyModifiers {
996
+ precap_general_mod: AttackPowerModifier;
997
+ stype_mod: AttackPowerModifier;
998
+ landing_craft_synergy_mod: AttackPowerModifier;
999
+ toku_daihatsu_tank_mod: AttackPowerModifier;
1000
+ m4a1dd_mod: AttackPowerModifier;
1001
+ honi_mod: AttackPowerModifier;
1002
+ postcap_general_mod: AttackPowerModifier;
1003
+ pt_mod: AttackPowerModifier;
1004
+ }
1005
+
1006
+ export interface AttackPowerModifier {
1007
+ a?: number;
1008
+ b?: number;
1009
+ }
858
1010
 
859
1011
  export interface MasterEquippable {
860
1012
  equip_stype: EquipStype[];
@@ -878,153 +1030,171 @@ export interface EquipStype {
878
1030
  equip_type: number[];
879
1031
  }
880
1032
 
881
- export interface AttackInfo<AttackType, Cutin> {
882
- attack_type: AttackType;
883
- items: AttackInfoItem<Cutin>[];
884
- damage_state_map: NumMap<DamageState, number> | null;
1033
+ export interface HitRate {
1034
+ normal: number;
1035
+ critical: number;
1036
+ total: number;
885
1037
  }
886
1038
 
887
- export interface AttackInfoItem<Cutin> {
888
- cutin: Cutin;
889
- rate: number | null;
890
- stats: AttackStats;
1039
+ export interface HitRateParams {
1040
+ accuracy_term: number;
1041
+ evasion_term: number;
1042
+ target_morale_mod: number;
1043
+ critical_rate_constant: number;
1044
+ critical_percentage_bonus: number;
1045
+ hit_percentage_bonus: number;
891
1046
  }
892
1047
 
893
- export interface AttackStats {
894
- attack_power: AttackPower | null;
895
- attack_power_params: AttackPowerParams | null;
896
- hits: number;
897
- hit_rate: HitRate | null;
898
- hit_rate_params: HitRateParams | null;
899
- damage: DamageInfo | null;
1048
+ export interface AttackPower {
1049
+ precap: number;
1050
+ is_capped: boolean;
1051
+ capped: number;
1052
+ normal: number;
1053
+ critical: number;
1054
+ armor_penetration: number;
1055
+ remaining_ammo_mod: number;
900
1056
  }
901
1057
 
902
- export interface CompAntiAirInfo {
903
- fleet_adjusted_anti_air: number;
904
- ships: ShipAntiAirInfo[];
905
- anti_air_cutin_chance: [number, number][];
1058
+ export interface AttackPowerParams {
1059
+ basic: number;
1060
+ cap: number;
1061
+ precap_mod: AttackPowerModifier;
1062
+ postcap_mod: AttackPowerModifier;
1063
+ ap_shell_mod: number | null;
1064
+ carrier_power: number | null;
1065
+ proficiency_critical_mod: number;
1066
+ armor_penetration: number;
1067
+ remaining_ammo_mod: number;
1068
+ special_enemy_mods: SpecialEnemyModifiers;
1069
+ custom_mods: CustomPowerModifiers;
906
1070
  }
907
1071
 
908
- export interface ShipAntiAirInfo {
909
- ship_id: number;
910
- adjusted_anti_air: number | null;
911
- proportional_shotdown_rate: number | null;
912
- fixed_shotdown_number: number | null;
913
- guaranteed: number | null;
914
- anti_air_cutin_chance: [number, number][];
915
- anti_air_propellant_barrage_chance: number | null;
1072
+ export interface SpecialEnemyModifiers {
1073
+ precap_general_mod: AttackPowerModifier;
1074
+ stype_mod: AttackPowerModifier;
1075
+ landing_craft_synergy_mod: AttackPowerModifier;
1076
+ toku_daihatsu_tank_mod: AttackPowerModifier;
1077
+ m4a1dd_mod: AttackPowerModifier;
1078
+ honi_mod: AttackPowerModifier;
1079
+ postcap_general_mod: AttackPowerModifier;
1080
+ pt_mod: AttackPowerModifier;
916
1081
  }
917
1082
 
918
- export type SlotSizeVec = (number | null)[];
919
-
920
- declare namespace Side {
921
- export type Player = "Player";
922
- export type Enemy = "Enemy";
1083
+ export interface CompDayCutinAnalysis {
1084
+ rank3_air_state: AirState;
1085
+ rank2_air_state: AirState;
1086
+ main_fleet_los_mod: number | null;
1087
+ escort_fleet_los_mod: number | null;
1088
+ ships: ShipDayCutinAnalysis[];
923
1089
  }
924
1090
 
925
- export type Side = Side.Player | Side.Enemy;
1091
+ export interface ShipDayCutinAnalysis {
1092
+ ship_id: number;
1093
+ role: Role;
1094
+ index: number;
1095
+ rank3: DayCutinReport;
1096
+ rank2: DayCutinReport;
1097
+ }
926
1098
 
927
- declare namespace NightAttackType {
928
- export type Normal = "Normal";
929
- export type ArkRoyal = "ArkRoyal";
930
- export type Carrier = "Carrier";
1099
+ export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
1100
+ observation_term: number | null;
931
1101
  }
932
1102
 
933
- export type NightAttackType =
934
- | NightAttackType.Normal
935
- | NightAttackType.ArkRoyal
936
- | NightAttackType.Carrier;
1103
+ export interface ContactAnalysis {
1104
+ single: DayContactChance[] | null;
1105
+ combined: DayContactChance[] | null;
1106
+ }
937
1107
 
938
- type __NightSpecialAttackFleetCutin = FleetCutin;
939
- type __NightSpecialAttackNightCutin = NightCutin;
940
- declare namespace NightSpecialAttack {
941
- export type NightCutin = { NightCutin: __NightSpecialAttackNightCutin };
942
- export type FleetCutin = { FleetCutin: __NightSpecialAttackFleetCutin };
1108
+ export interface DayContactChance {
1109
+ air_state: AirState;
1110
+ trigger_rate: number;
1111
+ rank3: number;
1112
+ rank2: number;
1113
+ rank1: number;
1114
+ total: number;
943
1115
  }
944
1116
 
945
- export type NightSpecialAttack =
946
- | NightSpecialAttack.NightCutin
947
- | NightSpecialAttack.FleetCutin;
1117
+ export interface AttackAnalysis {
1118
+ attacker_is_player: boolean;
1119
+ attacker_ship_id: number;
1120
+ target_ship_id: number;
1121
+ day: ActionReport<DayPhaseAttackStyle>;
1122
+ night: ActionReport<NightPhaseAttackStyle>;
1123
+ closing_torpedo: ActionReport<TorpedoAttackStyle>;
1124
+ opening_asw: ActionReport<AswAttackStyle>;
1125
+ support_shelling: ActionReport<SupportShellingStyle>;
1126
+ }
948
1127
 
949
- declare namespace NightCutin {
950
- export type MainTorpRadar = "MainTorpRadar";
951
- export type TorpLookoutRadar = "TorpLookoutRadar";
952
- export type TorpTsloTorp = "TorpTsloTorp";
953
- export type TorpTsloDrum = "TorpTsloDrum";
954
- export type DoubleAttack = "DoubleAttack";
955
- export type TorpTorpMain = "TorpTorpMain";
956
- export type TorpTorpTorp = "TorpTorpTorp";
957
- export type MainMainSec = "MainMainSec";
958
- export type MainMainMain = "MainMainMain";
959
- export type SubTorpTorp = "SubTorpTorp";
960
- export type SubRadarTorp = "SubRadarTorp";
961
- export type Cvci1_25 = "Cvci1_25";
962
- export type Cvci1_20 = "Cvci1_20";
963
- export type Cvci1_18 = "Cvci1_18";
964
- export type Photobomber = "Photobomber";
1128
+ export interface MasterShip {
1129
+ ship_id: number;
1130
+ name: string;
1131
+ yomi: string;
1132
+ stype: number;
1133
+ ctype: number;
1134
+ sort_id?: number;
1135
+ max_hp: StatInterval;
1136
+ firepower: StatInterval;
1137
+ armor: StatInterval;
1138
+ torpedo: StatInterval;
1139
+ evasion: StatInterval;
1140
+ anti_air: StatInterval;
1141
+ asw: StatInterval;
1142
+ los: StatInterval;
1143
+ luck: StatInterval;
1144
+ torpedo_accuracy?: number;
1145
+ basic_evasion_term?: number;
1146
+ speed: number;
1147
+ range?: number;
1148
+ fuel?: number;
1149
+ ammo?: number;
1150
+ next_id?: number;
1151
+ next_level?: number;
1152
+ slotnum: number;
1153
+ slots: SlotSizeVec;
1154
+ stock: GearState[];
1155
+ speed_group?: SpeedGroup;
1156
+ useful?: boolean;
965
1157
  }
966
1158
 
967
- export type NightCutin =
968
- | NightCutin.MainTorpRadar
969
- | NightCutin.TorpLookoutRadar
970
- | NightCutin.TorpTsloTorp
971
- | NightCutin.TorpTsloDrum
972
- | NightCutin.DoubleAttack
973
- | NightCutin.TorpTorpMain
974
- | NightCutin.TorpTorpTorp
975
- | NightCutin.MainMainSec
976
- | NightCutin.MainMainMain
977
- | NightCutin.SubTorpTorp
978
- | NightCutin.SubRadarTorp
979
- | NightCutin.Cvci1_25
980
- | NightCutin.Cvci1_20
981
- | NightCutin.Cvci1_18
982
- | NightCutin.Photobomber;
1159
+ export type StatInterval = [number | null, number | null];
983
1160
 
984
- export interface HitRate {
985
- total: number;
986
- normal: number;
987
- critical: number;
1161
+ export interface CompAnalyzerConfig {
1162
+ engagement: Engagement;
1163
+ formation: Formation;
1164
+ anti_air_cutin: number | null;
1165
+ ship_anti_air_resist: number;
1166
+ fleet_anti_air_resist: number;
1167
+ left_night_fleet_conditions: NightFleetConditions;
1168
+ right_night_fleet_conditions: NightFleetConditions;
988
1169
  }
989
1170
 
990
- export interface HitRateParams {
991
- accuracy_term: number;
992
- evasion_term: number;
993
- target_morale_mod: number;
994
- critical_rate_constant: number;
995
- critical_percentage_bonus: number;
996
- hit_percentage_bonus: number;
1171
+ export interface CompNightAnalysis {
1172
+ night_cutin: CompNightCutinAnalysis;
1173
+ fleet_cutin: FleetCutinReport<NightAttackStyle>[];
997
1174
  }
998
1175
 
999
- type __NightBattleAttackTypeAswAttackType = AswAttackType;
1000
- type __NightBattleAttackTypeNightAttackType = NightAttackType;
1001
- declare namespace NightBattleAttackType {
1002
- export type NightAttack = {
1003
- t: "NightAttack";
1004
- c: __NightBattleAttackTypeNightAttackType;
1005
- };
1006
- export type Asw = { t: "Asw"; c: __NightBattleAttackTypeAswAttackType };
1176
+ export interface CompDayAnalysis {
1177
+ day_cutin: CompDayCutinAnalysis;
1178
+ fleet_cutin: FleetCutinReport<ShellingStyle>[];
1007
1179
  }
1008
1180
 
1009
- export type NightBattleAttackType =
1010
- | NightBattleAttackType.NightAttack
1011
- | NightBattleAttackType.Asw;
1012
-
1013
- type __DayBattleAttackTypeAswAttackType = AswAttackType;
1014
- type __DayBattleAttackTypeShellingAttackType = ShellingAttackType;
1015
- declare namespace DayBattleAttackType {
1016
- export type Shelling = {
1017
- t: "Shelling";
1018
- c: __DayBattleAttackTypeShellingAttackType;
1019
- };
1020
- export type Asw = { t: "Asw"; c: __DayBattleAttackTypeAswAttackType };
1181
+ export interface CompAnalysis {
1182
+ day: CompDayAnalysis;
1183
+ night: CompNightAnalysis;
1184
+ contact: ContactAnalysis;
1185
+ anti_air: CompAntiAirAnalysis;
1021
1186
  }
1022
1187
 
1023
- export type DayBattleAttackType =
1024
- | DayBattleAttackType.Shelling
1025
- | DayBattleAttackType.Asw;
1026
-
1027
- export type GearTypeIdArray = [number, number, number, number, number];
1188
+ export interface AttackReport<T> {
1189
+ style: T;
1190
+ proc_rate: number | null;
1191
+ attack_power: AttackPower | null;
1192
+ attack_power_params: AttackPowerParams | null;
1193
+ hits: number;
1194
+ hit_rate: HitRate | null;
1195
+ hit_rate_params: HitRateParams | null;
1196
+ damage: DamageReport | null;
1197
+ }
1028
1198
 
1029
1199
  export type ShipStateMap = Record<ShipKey, ShipState>;
1030
1200
 
@@ -1111,134 +1281,44 @@ export interface ShipState extends GearVecState, SlotSizeVecState {
1111
1281
  custom_power_mods?: CustomPowerModifiers;
1112
1282
  }
1113
1283
 
1114
- export interface SlotSizeVecState {
1115
- ss1?: number;
1116
- ss2?: number;
1117
- ss3?: number;
1118
- ss4?: number;
1119
- ss5?: number;
1120
- }
1121
-
1122
- export interface GearVecState {
1123
- g1?: GearState;
1124
- g2?: GearState;
1125
- g3?: GearState;
1126
- g4?: GearState;
1127
- g5?: GearState;
1128
- gx?: GearState;
1129
- }
1130
-
1131
- export interface GearState {
1132
- id?: string;
1133
- gear_id: number;
1134
- exp?: number;
1135
- stars?: number;
1136
- }
1137
-
1138
- declare namespace ContactRank {
1139
- export type Rank1 = "Rank1";
1140
- export type Rank2 = "Rank2";
1141
- export type Rank3 = "Rank3";
1142
- }
1143
-
1144
- export type ContactRank =
1145
- | ContactRank.Rank1
1146
- | ContactRank.Rank2
1147
- | ContactRank.Rank3;
1148
-
1149
- export interface BattleConfig {
1150
- formation: Record<Formation, NestedFormationDef>;
1151
- anti_air_cutin: Record<number, AntiAirCutinDef>;
1152
- day_cutin: Record<DayCutin, DayCutinDef>;
1153
- night_cutin: Record<NightCutin, NightCutinDef>;
1154
- }
1155
-
1156
- export interface NightCutinDef {
1157
- tag: NightCutin;
1158
- hits: number;
1159
- type_factor: number | null;
1160
- power_mod: number | null;
1161
- accuracy_mod: number | null;
1162
- }
1163
-
1164
- export interface DayCutinDef {
1165
- tag: DayCutin;
1166
- hits: number;
1167
- type_factor: number | null;
1168
- power_mod: number | null;
1169
- accuracy_mod: number | null;
1170
- }
1171
-
1172
- export interface AntiAirCutinDef {
1173
- id: number;
1174
- type_factor: number | null;
1175
- multiplier: number | null;
1176
- guaranteed: number | null;
1177
- sequential: boolean | null;
1284
+ export interface SlotSizeVecState {
1285
+ ss1?: number;
1286
+ ss2?: number;
1287
+ ss3?: number;
1288
+ ss4?: number;
1289
+ ss5?: number;
1178
1290
  }
1179
1291
 
1180
- type __NestedFormationDefFormationDef = FormationDef;
1181
- declare namespace NestedFormationDef {
1182
- export type Normal = __NestedFormationDefFormationDef;
1183
- export type Vanguard = {
1184
- top_half: __NestedFormationDefFormationDef;
1185
- bottom_half: __NestedFormationDefFormationDef;
1186
- };
1292
+ export interface GearVecState {
1293
+ g1?: GearState;
1294
+ g2?: GearState;
1295
+ g3?: GearState;
1296
+ g4?: GearState;
1297
+ g5?: GearState;
1298
+ gx?: GearState;
1187
1299
  }
1188
1300
 
1189
- export type NestedFormationDef =
1190
- | NestedFormationDef.Normal
1191
- | NestedFormationDef.Vanguard;
1192
-
1193
- export interface FormationDef {
1194
- tag: Formation;
1195
- protection_rate: number | null;
1196
- fleet_anti_air_mod: number;
1197
- shelling: FormationWarfareDef;
1198
- torpedo: FormationWarfareDef;
1199
- asw: FormationWarfareDef;
1200
- night: FormationWarfareDef;
1201
- shelling_support: FormationWarfareDef;
1301
+ export interface GearState {
1302
+ id?: string;
1303
+ gear_id: number;
1304
+ exp?: number;
1305
+ stars?: number;
1202
1306
  }
1203
1307
 
1204
- export interface FormationWarfareDef {
1205
- power_mod: number | null;
1206
- accuracy_mod: number | null;
1207
- evasion_mod: number | null;
1308
+ declare namespace SpeedGroup {
1309
+ export type A = "A";
1310
+ export type B1 = "B1";
1311
+ export type B2 = "B2";
1312
+ export type C = "C";
1208
1313
  }
1209
1314
 
1210
- export interface MasterShip {
1211
- ship_id: number;
1212
- name: string;
1213
- yomi: string;
1214
- stype: number;
1215
- ctype: number;
1216
- sort_id?: number;
1217
- max_hp: StatInterval;
1218
- firepower: StatInterval;
1219
- armor: StatInterval;
1220
- torpedo: StatInterval;
1221
- evasion: StatInterval;
1222
- anti_air: StatInterval;
1223
- asw: StatInterval;
1224
- los: StatInterval;
1225
- luck: StatInterval;
1226
- torpedo_accuracy?: number;
1227
- basic_evasion_term?: number;
1228
- speed: number;
1229
- range?: number;
1230
- fuel?: number;
1231
- ammo?: number;
1232
- next_id?: number;
1233
- next_level?: number;
1234
- slotnum: number;
1235
- slots: SlotSizeVec;
1236
- stock: GearState[];
1237
- speed_group?: SpeedGroup;
1238
- useful?: boolean;
1239
- }
1315
+ export type SpeedGroup =
1316
+ | SpeedGroup.A
1317
+ | SpeedGroup.B1
1318
+ | SpeedGroup.B2
1319
+ | SpeedGroup.C;
1240
1320
 
1241
- export type StatInterval = [number | null, number | null];
1321
+ export type SlotSizeVec = (number | null)[];
1242
1322
 
1243
1323
  export interface MasterGear {
1244
1324
  gear_id: number;
@@ -1261,56 +1341,119 @@ export interface MasterGear {
1261
1341
  radius?: number;
1262
1342
  cost?: number;
1263
1343
  improvable?: boolean;
1264
- ship_anti_air_resistance?: number;
1265
- fleet_anti_air_resistance?: number;
1344
+ ship_anti_air_resist?: number;
1345
+ fleet_anti_air_resist?: number;
1266
1346
  }
1267
1347
 
1268
- export interface WarfareInfo {
1269
- day: AttackInfo<DayBattleAttackType, DayCutin | null> | null;
1270
- closing_torpedo: AttackInfo<null, null> | null;
1271
- night: AttackInfo<NightBattleAttackType, NightCutin | null> | null;
1272
- shelling_support: AttackInfo<null, null> | null;
1273
- opening_asw: AttackInfo<null, null> | null;
1348
+ export interface ActionReport<T> {
1349
+ data: Record<string, AttackReport<T>>;
1350
+ damage_state_density: Histogram<DamageState, number> | null;
1351
+ is_active: boolean;
1274
1352
  }
1275
1353
 
1276
- export interface WarfareAnalyzerContext {
1277
- attacker_env: WarfareAnalyzerShipEnvironment;
1278
- target_env: WarfareAnalyzerShipEnvironment;
1279
- engagement: Engagement;
1280
- air_state: AirState;
1354
+ export type GearTypeIdArray = [number, number, number, number, number];
1355
+
1356
+ declare namespace ShipType {
1357
+ export type Unknown = "Unknown";
1358
+ export type DE = "DE";
1359
+ export type DD = "DD";
1360
+ export type CL = "CL";
1361
+ export type CLT = "CLT";
1362
+ export type CA = "CA";
1363
+ export type CAV = "CAV";
1364
+ export type CVL = "CVL";
1365
+ export type FBB = "FBB";
1366
+ export type BB = "BB";
1367
+ export type BBV = "BBV";
1368
+ export type CV = "CV";
1369
+ export type XBB = "XBB";
1370
+ export type SS = "SS";
1371
+ export type SSV = "SSV";
1372
+ export type AP = "AP";
1373
+ export type AV = "AV";
1374
+ export type LHA = "LHA";
1375
+ export type CVB = "CVB";
1376
+ export type AR = "AR";
1377
+ export type AS = "AS";
1378
+ export type CT = "CT";
1379
+ export type AO = "AO";
1281
1380
  }
1282
1381
 
1283
- export interface WarfareAnalyzerShipEnvironment {
1284
- org_type: OrgType;
1285
- role: Role;
1286
- ship_index: number;
1287
- fleet_len: number;
1288
- formation: Formation;
1289
- fleet_los_mod: number | null;
1290
- night_situation: NightSituation;
1382
+ export type ShipType =
1383
+ | ShipType.Unknown
1384
+ | ShipType.DE
1385
+ | ShipType.DD
1386
+ | ShipType.CL
1387
+ | ShipType.CLT
1388
+ | ShipType.CA
1389
+ | ShipType.CAV
1390
+ | ShipType.CVL
1391
+ | ShipType.FBB
1392
+ | ShipType.BB
1393
+ | ShipType.BBV
1394
+ | ShipType.CV
1395
+ | ShipType.XBB
1396
+ | ShipType.SS
1397
+ | ShipType.SSV
1398
+ | ShipType.AP
1399
+ | ShipType.AV
1400
+ | ShipType.LHA
1401
+ | ShipType.CVB
1402
+ | ShipType.AR
1403
+ | ShipType.AS
1404
+ | ShipType.CT
1405
+ | ShipType.AO;
1406
+
1407
+ declare namespace ShipCategory {
1408
+ export type Battleship = "Battleship";
1409
+ export type AircraftCarrier = "AircraftCarrier";
1410
+ export type HeavyCruiser = "HeavyCruiser";
1411
+ export type LightCruiser = "LightCruiser";
1412
+ export type Destroyer = "Destroyer";
1413
+ export type CoastalDefenseShip = "CoastalDefenseShip";
1414
+ export type Submarine = "Submarine";
1415
+ export type AuxiliaryShip = "AuxiliaryShip";
1291
1416
  }
1292
1417
 
1293
- export interface FleetNightCutinRateInfo {
1294
- night_contact_chance: NightContactChance;
1295
- ships: ShipNightCutinRateInfo[];
1418
+ export type ShipCategory =
1419
+ | ShipCategory.Battleship
1420
+ | ShipCategory.AircraftCarrier
1421
+ | ShipCategory.HeavyCruiser
1422
+ | ShipCategory.LightCruiser
1423
+ | ShipCategory.Destroyer
1424
+ | ShipCategory.CoastalDefenseShip
1425
+ | ShipCategory.Submarine
1426
+ | ShipCategory.AuxiliaryShip;
1427
+
1428
+ declare namespace MoraleState {
1429
+ export type Sparkle = "Sparkle";
1430
+ export type Normal = "Normal";
1431
+ export type Orange = "Orange";
1432
+ export type Red = "Red";
1296
1433
  }
1297
1434
 
1298
- export interface ShipNightCutinRateInfo {
1299
- ship_id: number;
1300
- normal: NightCutinRateInfo;
1301
- chuuha: NightCutinRateInfo;
1435
+ export type MoraleState =
1436
+ | MoraleState.Sparkle
1437
+ | MoraleState.Normal
1438
+ | MoraleState.Orange
1439
+ | MoraleState.Red;
1440
+
1441
+ export interface FleetCutinAnalysis {
1442
+ shelling: FleetCutinReport<ShellingStyle>[];
1443
+ night: FleetCutinReport<NightAttackStyle>[];
1302
1444
  }
1303
1445
 
1304
- export interface NightCutinRateInfo {
1305
- cutin_term: number | null;
1306
- rates: [NightCutin | null, number | null][];
1446
+ export interface FleetCutinReport<T> {
1447
+ cutin: FleetCutin;
1448
+ rate: number | null;
1449
+ formation: Formation;
1450
+ attacks: FleetCutinAttackReport<T>[];
1307
1451
  }
1308
1452
 
1309
- export interface NightContactChance {
1310
- rank1: number;
1311
- rank2: number;
1312
- rank3: number;
1313
- total: number;
1453
+ export interface FleetCutinAttackReport<T> extends AttackReport<T> {
1454
+ index: number;
1455
+ ship_id: number;
1456
+ power_mod: number;
1314
1457
  }
1315
1458
 
1316
1459
  /**
@@ -1347,71 +1490,76 @@ export class AirSquadron {
1347
1490
  radius(): number;
1348
1491
  /**
1349
1492
  */
1350
- id: string;
1493
+ hash: bigint;
1351
1494
  /**
1352
1495
  */
1353
- mode: AirSquadronMode;
1496
+ id: string;
1354
1497
  /**
1355
1498
  */
1356
- xxh3: bigint;
1499
+ mode: AirSquadronMode;
1357
1500
  }
1358
1501
  /**
1359
1502
  */
1360
1503
  export class Analyzer {
1361
1504
  free(): void;
1362
1505
  /**
1363
- * @param {Comp} comp
1364
- * @param {Formation} formation
1365
- * @param {number} ship_anti_air_resist
1366
- * @param {number} fleet_anti_air_resist
1367
- * @param {number | undefined} aaci
1368
- * @returns {CompAntiAirInfo}
1369
- */
1370
- analyze_anti_air(
1371
- comp: Comp,
1372
- formation: Formation,
1373
- ship_anti_air_resist: number,
1374
- fleet_anti_air_resist: number,
1375
- aaci?: number
1376
- ): CompAntiAirInfo;
1377
- /**
1378
- * @param {Comp} comp
1379
- * @returns {CompDayCutinRateInfo}
1380
- */
1381
- analyze_day_cutin(comp: Comp): CompDayCutinRateInfo;
1382
- /**
1383
- * @param {Comp} comp
1384
- * @param {NightSituation} attacker_situation
1385
- * @param {NightSituation} target_situation
1386
- * @returns {FleetNightCutinRateInfo}
1387
- */
1388
- analyze_night_cutin(
1389
- comp: Comp,
1390
- attacker_situation: NightSituation,
1391
- target_situation: NightSituation
1392
- ): FleetNightCutinRateInfo;
1393
- /**
1394
- * @param {Comp} comp
1395
- * @returns {CompContactChanceInfo}
1396
- */
1397
- analyze_contact_chance(comp: Comp): CompContactChanceInfo;
1398
- /**
1399
- * @param {WarfareAnalyzerContext} params
1506
+ * @param {AttackAnalyzerConfig} config
1400
1507
  * @param {Ship} attacker
1401
1508
  * @param {Ship} target
1402
- * @returns {WarfareInfo}
1509
+ * @returns {AttackAnalysis}
1403
1510
  */
1404
- analyze_warfare(
1405
- params: WarfareAnalyzerContext,
1511
+ analyze_attack(
1512
+ config: AttackAnalyzerConfig,
1406
1513
  attacker: Ship,
1407
1514
  target: Ship
1408
- ): WarfareInfo;
1515
+ ): AttackAnalysis;
1516
+ /**
1517
+ * @param {ShipAnalyzerConfig} config
1518
+ * @param {Ship} left
1519
+ * @param {Ship} right
1520
+ * @param {boolean} attacker_is_left
1521
+ * @returns {AttackAnalysis}
1522
+ */
1523
+ analyze_attack_by_ship_analyzer(
1524
+ config: ShipAnalyzerConfig,
1525
+ left: Ship,
1526
+ right: Ship,
1527
+ attacker_is_left: boolean
1528
+ ): AttackAnalysis;
1529
+ /**
1530
+ * @param {NodeAttackAnalyzerConfig} config
1531
+ * @param {Comp} left_comp
1532
+ * @param {Ship} left_ship
1533
+ * @param {Comp} right_comp
1534
+ * @param {Ship} right_ship
1535
+ * @returns {NodeAttackAnalysis}
1536
+ */
1537
+ analyze_node_attack(
1538
+ config: NodeAttackAnalyzerConfig,
1539
+ left_comp: Comp,
1540
+ left_ship: Ship,
1541
+ right_comp: Comp,
1542
+ right_ship: Ship
1543
+ ): NodeAttackAnalysis;
1409
1544
  /**
1410
1545
  * @param {Comp} comp
1411
- * @param {Engagement} engagement
1412
- * @returns {FleetCutinAnalysis}
1546
+ * @param {CompAnalyzerConfig} config
1547
+ * @returns {CompAnalysis}
1548
+ */
1549
+ analyze_comp(comp: Comp, config: CompAnalyzerConfig): CompAnalysis;
1550
+ /**
1551
+ * @param {Comp} player_comp
1552
+ * @param {Comp} enemy_comp
1553
+ * @param {NodeAttackAnalyzerConfig} config
1554
+ * @param {number} times
1555
+ * @returns {SimulatorResult}
1413
1556
  */
1414
- analyze_fleet_cutin(comp: Comp, engagement: Engagement): FleetCutinAnalysis;
1557
+ simulate_support_shelling(
1558
+ player_comp: Comp,
1559
+ enemy_comp: Comp,
1560
+ config: NodeAttackAnalyzerConfig,
1561
+ times: number
1562
+ ): SimulatorResult;
1415
1563
  }
1416
1564
  /**
1417
1565
  */
@@ -1496,13 +1644,10 @@ export class Comp {
1496
1644
  transport_point(): number;
1497
1645
  /**
1498
1646
  * @param {Ship} ship
1499
- * @param {Formation} formation
1500
- * @returns {WarfareShipEnvironment}
1647
+ * @param {Formation | undefined} formation
1648
+ * @returns {ShipConditions}
1501
1649
  */
1502
- create_warfare_ship_environment(
1503
- ship: Ship,
1504
- formation: Formation
1505
- ): WarfareShipEnvironment;
1650
+ get_ship_conditions(ship: Ship, formation?: Formation): ShipConditions;
1506
1651
  /**
1507
1652
  */
1508
1653
  boss_sup?: Fleet;
@@ -1511,13 +1656,13 @@ export class Comp {
1511
1656
  escort?: Fleet;
1512
1657
  /**
1513
1658
  */
1514
- hq_level: number;
1659
+ readonly hq_level: number;
1515
1660
  /**
1516
1661
  */
1517
1662
  main: Fleet;
1518
1663
  /**
1519
1664
  */
1520
- org_type: OrgType;
1665
+ readonly org_type: OrgType;
1521
1666
  /**
1522
1667
  */
1523
1668
  route_sup?: Fleet;
@@ -1578,19 +1723,6 @@ export class FhCore {
1578
1723
  * @returns {Analyzer}
1579
1724
  */
1580
1725
  create_analyzer(): Analyzer;
1581
- /**
1582
- * @param {Comp} player
1583
- * @param {Comp} enemy
1584
- * @param {ShellingSupportSimulatorParams} params
1585
- * @param {number} times
1586
- * @returns {SimulatorResult}
1587
- */
1588
- simulate_shelling_support(
1589
- player: Comp,
1590
- enemy: Comp,
1591
- params: ShellingSupportSimulatorParams,
1592
- times: number
1593
- ): SimulatorResult;
1594
1726
  }
1595
1727
  /**
1596
1728
  */
@@ -1688,13 +1820,13 @@ export class Fleet {
1688
1820
  readonly fleet_los_mod: number | undefined;
1689
1821
  /**
1690
1822
  */
1691
- id: string;
1823
+ readonly hash: bigint;
1692
1824
  /**
1693
1825
  */
1694
- len: number;
1826
+ id: string;
1695
1827
  /**
1696
1828
  */
1697
- xxh3: bigint;
1829
+ readonly len: number;
1698
1830
  }
1699
1831
  /**
1700
1832
  */
@@ -1732,7 +1864,7 @@ export class Gear {
1732
1864
  /**
1733
1865
  * @returns {number}
1734
1866
  */
1735
- proficiency_critical_power_mod(): number;
1867
+ exp_critical_bonus(): number;
1736
1868
  /**
1737
1869
  * @param {number} slot_size
1738
1870
  * @returns {number}
@@ -1810,52 +1942,55 @@ export class Gear {
1810
1942
  can_be_deployed_to_land_base(): boolean;
1811
1943
  /**
1812
1944
  */
1813
- accuracy: number;
1945
+ readonly accuracy: number;
1814
1946
  /**
1815
1947
  */
1816
1948
  readonly ace: number;
1817
1949
  /**
1818
1950
  */
1819
- anti_air: number;
1951
+ readonly anti_air: number;
1820
1952
  /**
1821
1953
  */
1822
1954
  readonly anti_bomber: number;
1823
1955
  /**
1824
1956
  */
1825
- armor: number;
1957
+ readonly armor: number;
1826
1958
  /**
1827
1959
  */
1828
- asw: number;
1960
+ readonly asw: number;
1829
1961
  /**
1830
1962
  */
1831
- bombing: number;
1963
+ readonly bombing: number;
1832
1964
  /**
1833
1965
  */
1834
- cost: number;
1966
+ readonly cost: number;
1835
1967
  /**
1836
1968
  */
1837
- default_exp: number;
1969
+ readonly default_exp: number;
1838
1970
  /**
1839
1971
  */
1840
- evasion: number;
1972
+ readonly evasion: number;
1841
1973
  /**
1842
1974
  */
1843
- exp: number;
1975
+ readonly exp: number;
1844
1976
  /**
1845
1977
  */
1846
- firepower: number;
1978
+ readonly firepower: number;
1847
1979
  /**
1848
1980
  */
1849
- fleet_anti_air_resistance: number;
1981
+ readonly fleet_anti_air_resist: number;
1850
1982
  /**
1851
1983
  */
1852
- gear_id: number;
1984
+ readonly gear_id: number;
1853
1985
  /**
1854
1986
  */
1855
- gear_type: GearType;
1987
+ readonly gear_type: GearType;
1856
1988
  /**
1857
1989
  */
1858
1990
  readonly gear_type_id: number;
1991
+ /**
1992
+ */
1993
+ readonly hash: bigint;
1859
1994
  /**
1860
1995
  */
1861
1996
  readonly icon_id: number;
@@ -1864,49 +1999,46 @@ export class Gear {
1864
1999
  id: string;
1865
2000
  /**
1866
2001
  */
1867
- improvable: boolean;
2002
+ readonly improvable: boolean;
1868
2003
  /**
1869
2004
  */
1870
2005
  readonly interception: number;
1871
2006
  /**
1872
2007
  */
1873
- los: number;
2008
+ readonly los: number;
1874
2009
  /**
1875
2010
  */
1876
- luck: number;
2011
+ readonly luck: number;
1877
2012
  /**
1878
2013
  */
1879
- max_hp: number;
2014
+ readonly max_hp: number;
1880
2015
  /**
1881
2016
  */
1882
2017
  name: string;
1883
2018
  /**
1884
2019
  */
1885
- radius: number;
2020
+ readonly radius: number;
1886
2021
  /**
1887
2022
  */
1888
- range: number;
2023
+ readonly range: number;
1889
2024
  /**
1890
2025
  */
1891
- ship_anti_air_resistance: number;
2026
+ readonly ship_anti_air_resist: number;
1892
2027
  /**
1893
2028
  */
1894
2029
  readonly special_type_id: number;
1895
2030
  /**
1896
2031
  */
1897
- speed: number;
2032
+ readonly speed: number;
1898
2033
  /**
1899
2034
  */
1900
- stars: number;
2035
+ readonly stars: number;
1901
2036
  /**
1902
2037
  */
1903
- torpedo: number;
2038
+ readonly torpedo: number;
1904
2039
  /**
1905
2040
  */
1906
2041
  types: Uint8Array;
1907
- /**
1908
- */
1909
- xxh3: bigint;
1910
2042
  }
1911
2043
  /**
1912
2044
  */
@@ -2066,15 +2198,6 @@ export class Org {
2066
2198
  * @returns {number}
2067
2199
  */
2068
2200
  high_altitude_interception_power(): number;
2069
- /**
2070
- * @param {Ship} ship
2071
- * @param {Formation} formation
2072
- * @returns {WarfareShipEnvironment}
2073
- */
2074
- create_warfare_ship_environment(
2075
- ship: Ship,
2076
- formation: Formation
2077
- ): WarfareShipEnvironment;
2078
2201
  /**
2079
2202
  * @returns {Org}
2080
2203
  */
@@ -2084,22 +2207,22 @@ export class Org {
2084
2207
  boss_sup?: string;
2085
2208
  /**
2086
2209
  */
2087
- hq_level: number;
2210
+ readonly hash: bigint;
2211
+ /**
2212
+ */
2213
+ readonly hq_level: number;
2088
2214
  /**
2089
2215
  */
2090
2216
  id: string;
2091
2217
  /**
2092
2218
  */
2093
- org_type: OrgType;
2219
+ readonly org_type: OrgType;
2094
2220
  /**
2095
2221
  */
2096
2222
  route_sup?: string;
2097
2223
  /**
2098
2224
  */
2099
2225
  sortie: string;
2100
- /**
2101
- */
2102
- xxh3: bigint;
2103
2226
  }
2104
2227
  /**
2105
2228
  */
@@ -2254,6 +2377,13 @@ export class Ship {
2254
2377
  */
2255
2378
  fleet_los_factor(): number | undefined;
2256
2379
  /**
2380
+ * 加重対空
2381
+ * @param {Side} side
2382
+ * @returns {number | undefined}
2383
+ */
2384
+ ship_adjusted_anti_air(side: Side): number | undefined;
2385
+ /**
2386
+ * 艦隊対空補正
2257
2387
  * @returns {number}
2258
2388
  */
2259
2389
  fleet_anti_air_mod(): number;
@@ -2299,10 +2429,6 @@ export class Ship {
2299
2429
  * @returns {number | undefined}
2300
2430
  */
2301
2431
  ohko_power(): number | undefined;
2302
- /**
2303
- * @param {number} value
2304
- */
2305
- take_damage(value: number): void;
2306
2432
  /**
2307
2433
  * @returns {number | undefined}
2308
2434
  */
@@ -2322,7 +2448,7 @@ export class Ship {
2322
2448
  readonly accuracy: number;
2323
2449
  /**
2324
2450
  */
2325
- ammo: number;
2451
+ readonly ammo: number;
2326
2452
  /**
2327
2453
  */
2328
2454
  readonly anti_air: number | undefined;
@@ -2334,10 +2460,10 @@ export class Ship {
2334
2460
  readonly asw: number | undefined;
2335
2461
  /**
2336
2462
  */
2337
- ctype: number;
2463
+ readonly ctype: number;
2338
2464
  /**
2339
2465
  */
2340
- current_hp: number;
2466
+ readonly current_hp: number;
2341
2467
  /**
2342
2468
  */
2343
2469
  readonly evasion: number | undefined;
@@ -2346,7 +2472,10 @@ export class Ship {
2346
2472
  readonly firepower: number | undefined;
2347
2473
  /**
2348
2474
  */
2349
- fuel: number;
2475
+ readonly fuel: number;
2476
+ /**
2477
+ */
2478
+ readonly hash: bigint;
2350
2479
  /**
2351
2480
  */
2352
2481
  id: string;
@@ -2355,7 +2484,7 @@ export class Ship {
2355
2484
  readonly innate_torpedo_accuracy: number;
2356
2485
  /**
2357
2486
  */
2358
- level: number;
2487
+ readonly level: number;
2359
2488
  /**
2360
2489
  */
2361
2490
  readonly los: number | undefined;
@@ -2373,7 +2502,7 @@ export class Ship {
2373
2502
  readonly max_hp: number | undefined;
2374
2503
  /**
2375
2504
  */
2376
- morale: number;
2505
+ readonly morale: number;
2377
2506
  /**
2378
2507
  */
2379
2508
  readonly naked_anti_air: number | undefined;
@@ -2412,10 +2541,10 @@ export class Ship {
2412
2541
  readonly range: number | undefined;
2413
2542
  /**
2414
2543
  */
2415
- ship_id: number;
2544
+ readonly ship_id: number;
2416
2545
  /**
2417
2546
  */
2418
- ship_type: ShipType;
2547
+ readonly ship_type: ShipType;
2419
2548
  /**
2420
2549
  */
2421
2550
  readonly slotnum: number;
@@ -2437,9 +2566,6 @@ export class Ship {
2437
2566
  /**
2438
2567
  */
2439
2568
  readonly useful: boolean;
2440
- /**
2441
- */
2442
- xxh3: bigint;
2443
2569
  /**
2444
2570
  */
2445
2571
  readonly yomi: string;