fleethub-core 1.11.15 → 1.11.17

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