fleethub-core 1.11.14 → 1.11.16

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