fleethub-core 1.10.5 → 1.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,96 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
+ /**
4
+ */
5
+ export function set_panic_hook(): void;
3
6
  /**
4
7
  * @param {ShipConditions} value
5
8
  * @returns {ShipConditions}
6
9
  */
7
10
  export function parse_ship_conditions(value: ShipConditions): ShipConditions;
8
- /**
9
- */
10
- export function set_panic_hook(): void;
11
11
  export type SpeedGroup = "A" | "B1" | "B2" | "C";
12
12
 
13
+ export type ShipType =
14
+ | "Unknown"
15
+ | "DE"
16
+ | "DD"
17
+ | "CL"
18
+ | "CLT"
19
+ | "CA"
20
+ | "CAV"
21
+ | "CVL"
22
+ | "FBB"
23
+ | "BB"
24
+ | "BBV"
25
+ | "CV"
26
+ | "XBB"
27
+ | "SS"
28
+ | "SSV"
29
+ | "AP"
30
+ | "AV"
31
+ | "LHA"
32
+ | "CVB"
33
+ | "AR"
34
+ | "AS"
35
+ | "CT"
36
+ | "AO";
37
+
38
+ export type ShipCategory =
39
+ | "Battleship"
40
+ | "AircraftCarrier"
41
+ | "HeavyCruiser"
42
+ | "LightCruiser"
43
+ | "Destroyer"
44
+ | "CoastalDefenseShip"
45
+ | "Submarine"
46
+ | "AuxiliaryShip";
47
+
48
+ export interface HitRate {
49
+ normal: number;
50
+ critical: number;
51
+ total: number;
52
+ }
53
+
54
+ export interface HitRateParams {
55
+ accuracy_term: number;
56
+ evasion_term: number;
57
+ target_morale_mod: number;
58
+ critical_rate_constant: number;
59
+ critical_percentage_bonus: number;
60
+ hit_percentage_bonus: number;
61
+ }
62
+
63
+ export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
64
+ formation?: Formation;
65
+ }
66
+
67
+ export interface NodeAttackAnalyzerConfig {
68
+ air_state?: AirState;
69
+ engagement?: Engagement;
70
+ node_state?: NodeState;
71
+ left?: NodeAttackAnalyzerShipConfig;
72
+ right?: NodeAttackAnalyzerShipConfig;
73
+ }
74
+
75
+ export interface NodeAttackAnalysis {
76
+ left: AttackAnalysis;
77
+ right: AttackAnalysis;
78
+ shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
79
+ night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
80
+ }
81
+
82
+ export type GearTypeIdArray = [number, number, number, number, number];
83
+
13
84
  export type SlotSizeVec = (number | null)[];
14
85
 
86
+ export type Align = "Left" | "Right";
87
+
88
+ export type Side = "Player" | "Enemy";
89
+
90
+ export type Role = "Main" | "Escort";
91
+
92
+ export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
93
+
15
94
  export interface NightFleetConditions {
16
95
  night_contact_rank?: ContactRank | null;
17
96
  starshell_index?: number | null;
@@ -34,78 +113,119 @@ export interface BattleConditions {
34
113
  night_conditions: NightFleetConditions;
35
114
  }
36
115
 
37
- export interface MasterGear {
38
- gear_id: number;
39
- name: string;
40
- types: GearTypeIdArray;
41
- special_type?: number;
42
- max_hp?: number;
43
- firepower?: number;
44
- armor?: number;
45
- torpedo?: number;
46
- anti_air?: number;
47
- speed?: number;
48
- bombing?: number;
49
- asw?: number;
50
- los?: number;
51
- luck?: number;
52
- accuracy?: number;
53
- evasion?: number;
54
- range?: number;
55
- radius?: number;
56
- cost?: number;
57
- improvable?: boolean;
58
- ship_anti_air_resist?: number;
59
- fleet_anti_air_resist?: number;
60
- historical_aircraft_group?: number;
61
- }
116
+ export type AirWaveType = "Jet" | "LandBase" | "Carrier";
62
117
 
63
- export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
64
- formation?: Formation;
118
+ export interface EquippabilityRule {
119
+ ship: CompiledEvaler;
120
+ keys?: string[];
121
+ include?: string;
122
+ exclude?: string;
65
123
  }
66
124
 
67
- export interface NodeAttackAnalyzerConfig {
68
- air_state?: AirState;
69
- engagement?: Engagement;
70
- node_state?: NodeState;
71
- left?: NodeAttackAnalyzerShipConfig;
72
- right?: NodeAttackAnalyzerShipConfig;
125
+ export interface MasterEquippability {
126
+ equip_stype: EquipStype[];
127
+ equip_exslot: number[];
128
+ equip_ship: MstEquipShip[];
129
+ equip_exslot_ship: MstEquipExslotShip[];
130
+ rules: EquippabilityRule[];
73
131
  }
74
132
 
75
- export interface NodeAttackAnalysis {
76
- left: AttackAnalysis;
77
- right: AttackAnalysis;
78
- shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
79
- night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
133
+ export interface MstEquipExslotShip {
134
+ api_slotitem_id: number;
135
+ api_ship_ids: number[];
80
136
  }
81
137
 
82
- export interface CompAnalyzerConfig {
83
- engagement: Engagement;
84
- formation: Formation;
85
- anti_air_cutin: number | null;
86
- ship_anti_air_resist: number;
87
- fleet_anti_air_resist: number;
88
- left_night_fleet_conditions: NightFleetConditions;
89
- right_night_fleet_conditions: NightFleetConditions;
138
+ export interface MstEquipShip {
139
+ api_ship_id: number;
140
+ api_equip_type: number[];
90
141
  }
91
142
 
92
- export interface CompNightAnalysis {
93
- night_cutin: CompNightCutinAnalysis;
94
- fleet_cutin: FleetCutinReport<NightAttackStyle>[];
143
+ export interface EquipStype {
144
+ id: number;
145
+ equip_type: number[];
95
146
  }
96
147
 
97
- export interface CompDayAnalysis {
98
- day_cutin: CompDayCutinAnalysis;
99
- fleet_cutin: FleetCutinReport<ShellingStyle>[];
148
+ export interface ActionReport<T> {
149
+ data: Record<string, AttackReport<T>>;
150
+ damage_state_density: Histogram<DamageState, number> | null;
151
+ is_active: boolean;
100
152
  }
101
153
 
102
- export interface CompAnalysis {
103
- day: CompDayAnalysis;
104
- night: CompNightAnalysis;
105
- contact: ContactAnalysis;
106
- anti_air: CompAntiAirAnalysis;
154
+ export type NightCutinLike = NightCutin | FleetCutin;
155
+
156
+ export type DayCutinLike = DayCutin | FleetCutin;
157
+
158
+ export type FleetCutin =
159
+ | "NelsonTouch"
160
+ | "NagatoClassCutin"
161
+ | "ColoradoClassCutin"
162
+ | "KongouClassCutin"
163
+ | "Yamato2ShipCutin"
164
+ | "Yamato3ShipCutin";
165
+
166
+ export type NightCutin =
167
+ | "MainTorpRadar"
168
+ | "TorpLookoutRadar"
169
+ | "TorpTsloTorp"
170
+ | "TorpTsloDrum"
171
+ | "DoubleAttack"
172
+ | "TorpTorpMain"
173
+ | "TorpTorpTorp"
174
+ | "MainMainSec"
175
+ | "MainMainMain"
176
+ | "SubTorpTorp"
177
+ | "SubRadarTorp"
178
+ | "Cvci1_25"
179
+ | "Cvci1_20"
180
+ | "Cvci1_18"
181
+ | "Photobomber";
182
+
183
+ export type DayCutin =
184
+ | "Zuiun"
185
+ | "AirSea"
186
+ | "MainMain"
187
+ | "MainAp"
188
+ | "MainRadar"
189
+ | "MainSec"
190
+ | "DoubleAttack"
191
+ | "FBA"
192
+ | "BBA"
193
+ | "BA";
194
+
195
+ export interface MasterShip {
196
+ ship_id: number;
197
+ name: string;
198
+ yomi: string;
199
+ stype: number;
200
+ ctype: number;
201
+ nationality?: number;
202
+ sort_id?: number;
203
+ max_hp: StatInterval;
204
+ firepower: StatInterval;
205
+ armor: StatInterval;
206
+ torpedo: StatInterval;
207
+ evasion: StatInterval;
208
+ anti_air: StatInterval;
209
+ asw: StatInterval;
210
+ los: StatInterval;
211
+ luck: StatInterval;
212
+ torpedo_accuracy?: number;
213
+ basic_evasion_term?: number;
214
+ speed: number;
215
+ range?: number;
216
+ fuel?: number;
217
+ ammo?: number;
218
+ next_id?: number;
219
+ next_level?: number;
220
+ slotnum: number;
221
+ slots: SlotSizeVec;
222
+ stock: GearState[];
223
+ speed_group?: SpeedGroup;
224
+ useful?: boolean;
107
225
  }
108
226
 
227
+ export type StatInterval = [number | null, number | null];
228
+
109
229
  export interface OrgState {
110
230
  id?: string;
111
231
  f1?: FleetState;
@@ -187,149 +307,12 @@ export interface GearState {
187
307
  stars?: number;
188
308
  }
189
309
 
190
- export type Role = "Main" | "Escort";
191
-
192
- export interface ActionReport<T> {
193
- data: Record<string, AttackReport<T>>;
194
- damage_state_density: Histogram<DamageState, number> | null;
195
- is_active: boolean;
196
- }
197
-
198
- export type GearTypeIdArray = [number, number, number, number, number];
199
-
200
- export type Align = "Left" | "Right";
201
-
202
- export type Side = "Player" | "Enemy";
203
-
204
- export type ShipType =
205
- | "Unknown"
206
- | "DE"
207
- | "DD"
208
- | "CL"
209
- | "CLT"
210
- | "CA"
211
- | "CAV"
212
- | "CVL"
213
- | "FBB"
214
- | "BB"
215
- | "BBV"
216
- | "CV"
217
- | "XBB"
218
- | "SS"
219
- | "SSV"
220
- | "AP"
221
- | "AV"
222
- | "LHA"
223
- | "CVB"
224
- | "AR"
225
- | "AS"
226
- | "CT"
227
- | "AO";
228
-
229
- export type ShipCategory =
230
- | "Battleship"
231
- | "AircraftCarrier"
232
- | "HeavyCruiser"
233
- | "LightCruiser"
234
- | "Destroyer"
235
- | "CoastalDefenseShip"
236
- | "Submarine"
237
- | "AuxiliaryShip";
238
-
239
- export interface MasterIBonuses {
240
- shelling_power: MasterIBonusRule[];
241
- shelling_accuracy: MasterIBonusRule[];
242
- shelling_aerial_power: MasterIBonusRule[];
243
- torpedo_power: MasterIBonusRule[];
244
- torpedo_accuracy: MasterIBonusRule[];
245
- torpedo_evasion: MasterIBonusRule[];
246
- asw_power: MasterIBonusRule[];
247
- asw_accuracy: MasterIBonusRule[];
248
- night_power: MasterIBonusRule[];
249
- night_aerial_power: MasterIBonusRule[];
250
- night_accuracy: MasterIBonusRule[];
251
- defense_power: MasterIBonusRule[];
252
- contact_selection: MasterIBonusRule[];
253
- fighter_power: MasterIBonusRule[];
254
- ship_anti_air: MasterIBonusRule[];
255
- fleet_anti_air: MasterIBonusRule[];
256
- elos: MasterIBonusRule[];
257
- }
258
-
259
- export interface MasterIBonusRule {
260
- expr: CompiledEvaler;
261
- formula: CompiledEvaler;
262
- }
263
-
264
- export interface AttackReport<T> {
265
- style: T;
266
- proc_rate: number | null;
267
- attack_power: AttackPower | null;
268
- attack_power_params: AttackPowerParams | null;
269
- hits: number;
270
- hit_rate: HitRate | null;
271
- hit_rate_params: HitRateParams | null;
272
- damage: DamageReport | null;
273
- }
274
-
275
- export interface MoveShipPayload {
276
- current: [string, string, ShipKey];
277
- target: [string | null, string, ShipKey];
278
- }
279
-
280
- export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
281
-
282
- export type NightCutinLike = NightCutin | FleetCutin;
283
-
284
- export type DayCutinLike = DayCutin | FleetCutin;
285
-
286
- export type FleetCutin =
287
- | "NelsonTouch"
288
- | "NagatoClassCutin"
289
- | "ColoradoClassCutin"
290
- | "KongouClassCutin"
291
- | "Yamato2ShipCutin"
292
- | "Yamato3ShipCutin";
293
-
294
- export type NightCutin =
295
- | "MainTorpRadar"
296
- | "TorpLookoutRadar"
297
- | "TorpTsloTorp"
298
- | "TorpTsloDrum"
299
- | "DoubleAttack"
300
- | "TorpTorpMain"
301
- | "TorpTorpTorp"
302
- | "MainMainSec"
303
- | "MainMainMain"
304
- | "SubTorpTorp"
305
- | "SubRadarTorp"
306
- | "Cvci1_25"
307
- | "Cvci1_20"
308
- | "Cvci1_18"
309
- | "Photobomber";
310
-
311
- export type DayCutin =
312
- | "Zuiun"
313
- | "AirSea"
314
- | "MainMain"
315
- | "MainAp"
316
- | "MainRadar"
317
- | "MainSec"
318
- | "DoubleAttack"
319
- | "FBA"
320
- | "BBA"
321
- | "BA";
322
-
323
- export type AirWaveType = "Jet" | "LandBase" | "Carrier";
324
-
325
- export type ContactRank = "Rank1" | "Rank2" | "Rank3";
326
-
327
- export interface BattleDefinitions {
328
- formation: Record<Formation, NestedFormationDef>;
329
- anti_air_cutin: Record<number, AntiAirCutinDef>;
330
- day_cutin: Record<DayCutin, DayCutinDef>;
331
- night_cutin: Record<NightCutin, NightCutinDef>;
332
- historical_bonuses: HistoricalBonusDef[];
310
+ export interface BattleDefinitions {
311
+ formation: Record<Formation, NestedFormationDef>;
312
+ anti_air_cutin: Record<number, AntiAirCutinDef>;
313
+ day_cutin: Record<DayCutin, DayCutinDef>;
314
+ night_cutin: Record<NightCutin, NightCutinDef>;
315
+ historical_bonuses: HistoricalBonusDef[];
333
316
  }
334
317
 
335
318
  export interface NightCutinDef {
@@ -340,6 +323,12 @@ export interface NightCutinDef {
340
323
  accuracy_mod: number | null;
341
324
  }
342
325
 
326
+ export interface HistoricalParams {
327
+ power_mod: number;
328
+ accuracy_mod: number;
329
+ target_evasion_mod: number;
330
+ }
331
+
343
332
  export interface HistoricalBonusDef {
344
333
  map?: number;
345
334
  node?: CompiledEvaler;
@@ -389,44 +378,27 @@ export interface FormationCombatModifiersDef {
389
378
  evasion_mod?: number;
390
379
  }
391
380
 
392
- export interface SimulatorResult {
393
- items: SimulatorResultItem[];
394
- sunk_vec: [number, number, number][];
381
+ export interface MoveShipPayload {
382
+ current: [string, string, ShipKey];
383
+ target: [string | null, string, ShipKey];
395
384
  }
396
385
 
397
- export interface SimulatorResultItem {
398
- id: string;
399
- fleet_type: FleetType;
400
- index: number;
401
- damage_state_map: Record<DamageState, number>;
402
- }
386
+ export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
403
387
 
404
- export interface AttackPower {
405
- precap: number;
406
- is_capped: boolean;
407
- capped: number;
408
- normal: number;
409
- critical: number;
410
- armor_penetration: number;
411
- remaining_ammo_mod: number;
412
- }
388
+ export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
413
389
 
414
- export interface AttackPowerParams {
415
- basic: number;
416
- cap: number;
417
- precap_mod: AttackPowerModifier;
418
- postcap_mod: AttackPowerModifier;
419
- ap_shell_mod: number | null;
420
- aerial_power: number | null;
421
- proficiency_critical_mod: number;
422
- armor_penetration: number;
423
- remaining_ammo_mod: number;
424
- special_enemy_mods: SpecialEnemyModifiers;
425
- historical_mod: number;
426
- custom_mods: CustomPowerModifiers;
427
- }
390
+ export type ContactRank = "Rank1" | "Rank2" | "Rank3";
428
391
 
429
- export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
392
+ export interface AttackReport<T> {
393
+ style: T;
394
+ proc_rate: number | null;
395
+ attack_power: AttackPower | null;
396
+ attack_power_params: AttackPowerParams | null;
397
+ hits: number;
398
+ hit_rate: HitRate | null;
399
+ hit_rate_params: HitRateParams | null;
400
+ damage: DamageReport | null;
401
+ }
430
402
 
431
403
  export interface ShipConditions extends ShipPosition {
432
404
  formation?: Formation;
@@ -509,54 +481,31 @@ export type GearType =
509
481
  | "CbRecon2"
510
482
  | "SecondaryGun2";
511
483
 
512
- export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
484
+ export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
513
485
 
514
- export interface MasterData extends MasterBattleDefinitions {
515
- created_at: number;
516
- gears: MasterGear[];
517
- gear_attrs: MasterAttrRule<GearAttr>[];
518
- ships: MasterShip[];
519
- ship_attrs: MasterAttrRule<ShipAttr>[];
520
- ibonuses: MasterIBonuses;
521
- equippability: MasterEquippability;
486
+ export interface CustomPowerModifiers {
487
+ precap_mod?: AttackPowerModifier;
488
+ postcap_mod?: AttackPowerModifier;
489
+ basic_power_mod?: AttackPowerModifier;
490
+ historical_mod?: AttackPowerModifier;
522
491
  }
523
492
 
524
- export interface NationalityDef {
525
- id: number;
526
- ctypes: number[];
493
+ export interface SpecialEnemyModifiers {
494
+ precap_general_mod: AttackPowerModifier;
495
+ stype_mod: AttackPowerModifier;
496
+ landing_craft_synergy_mod: AttackPowerModifier;
497
+ toku_daihatsu_tank_mod: AttackPowerModifier;
498
+ m4a1dd_mod: AttackPowerModifier;
499
+ honi_mod: AttackPowerModifier;
500
+ postcap_general_mod: AttackPowerModifier;
501
+ pt_mod: AttackPowerModifier;
527
502
  }
528
503
 
529
- export interface MasterAttrRule<T> {
530
- tag: T;
531
- name: string;
532
- expr: CompiledEvaler;
504
+ export interface AttackPowerModifier {
505
+ a?: number;
506
+ b?: number;
533
507
  }
534
508
 
535
- export type TorpedoAttackType = null;
536
-
537
- export type NightPhaseAttackType =
538
- | { t: "Night"; c: NightAttackType }
539
- | { t: "Asw"; c: AswAttackType };
540
-
541
- export type DayPhaseAttackType =
542
- | { t: "Shelling"; c: ShellingType }
543
- | { t: "Asw"; c: AswAttackType };
544
-
545
- export type AttackType =
546
- | { t: "Asw"; c: AswAttackType }
547
- | { t: "Shelling"; c: ShellingType }
548
- | { t: "Night"; c: NightAttackType }
549
- | { t: "Torpedo" }
550
- | { t: "SupportShelling"; c: SupportShellingType };
551
-
552
- export type SupportShellingType = ShellingType;
553
-
554
- export type NightAttackType = "Normal" | "Swordfish" | "Carrier";
555
-
556
- export type ShellingType = "Normal" | "Carrier";
557
-
558
- export type AswAttackType = "DepthCharge" | "Aircraft";
559
-
560
509
  export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
561
510
 
562
511
  export type AirState =
@@ -566,13 +515,76 @@ export type AirState =
566
515
  | "AirDenial"
567
516
  | "AirIncapability";
568
517
 
569
- export type FhResult<T> = { Ok: T } | { Err: string };
518
+ export interface SimulatorResult {
519
+ items: SimulatorResultItem[];
520
+ sunk_vec: [number, number, number][];
521
+ }
570
522
 
571
- export interface ShipPosition {
572
- org_type?: OrgType;
573
- fleet_type?: FleetType;
574
- fleet_len?: number;
575
- index?: number;
523
+ export interface SimulatorResultItem {
524
+ id: string;
525
+ fleet_type: FleetType;
526
+ index: number;
527
+ damage_state_map: Record<DamageState, number>;
528
+ }
529
+
530
+ export type FhResult<T> = { Ok: T } | { Err: string };
531
+
532
+ export interface MasterGear {
533
+ gear_id: number;
534
+ name: string;
535
+ types: GearTypeIdArray;
536
+ special_type?: number;
537
+ max_hp?: number;
538
+ firepower?: number;
539
+ armor?: number;
540
+ torpedo?: number;
541
+ anti_air?: number;
542
+ speed?: number;
543
+ bombing?: number;
544
+ asw?: number;
545
+ los?: number;
546
+ luck?: number;
547
+ accuracy?: number;
548
+ evasion?: number;
549
+ range?: number;
550
+ radius?: number;
551
+ cost?: number;
552
+ improvable?: boolean;
553
+ ship_anti_air_resist?: number;
554
+ fleet_anti_air_resist?: number;
555
+ historical_aircraft_group?: number;
556
+ }
557
+
558
+ export interface AttackPower {
559
+ precap: number;
560
+ is_capped: boolean;
561
+ capped: number;
562
+ normal: number;
563
+ critical: number;
564
+ armor_penetration: number;
565
+ remaining_ammo_mod: number;
566
+ }
567
+
568
+ export interface AttackPowerParams {
569
+ basic: number;
570
+ cap: number;
571
+ precap_mod: AttackPowerModifier;
572
+ postcap_mod: AttackPowerModifier;
573
+ ap_shell_mod: number | null;
574
+ aerial_power: number | null;
575
+ proficiency_critical_mod: number;
576
+ armor_penetration: number;
577
+ remaining_ammo_mod: number;
578
+ special_enemy_mods: SpecialEnemyModifiers;
579
+ historical_mod: number;
580
+ custom_mods: CustomPowerModifiers;
581
+ }
582
+
583
+ export interface ShipPosition {
584
+ org_type?: OrgType;
585
+ fleet_type?: FleetType;
586
+ fleet_len?: number;
587
+ index?: number;
576
588
  }
577
589
 
578
590
  export interface CompMeta {
@@ -590,72 +602,33 @@ export interface ShipMeta {
590
602
  ship_id: number;
591
603
  }
592
604
 
593
- export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
594
-
595
- export interface CustomPowerModifiers {
596
- precap_mod?: AttackPowerModifier;
597
- postcap_mod?: AttackPowerModifier;
598
- basic_power_mod?: AttackPowerModifier;
599
- }
600
-
601
- export interface SpecialEnemyModifiers {
602
- precap_general_mod: AttackPowerModifier;
603
- stype_mod: AttackPowerModifier;
604
- landing_craft_synergy_mod: AttackPowerModifier;
605
- toku_daihatsu_tank_mod: AttackPowerModifier;
606
- m4a1dd_mod: AttackPowerModifier;
607
- honi_mod: AttackPowerModifier;
608
- postcap_general_mod: AttackPowerModifier;
609
- pt_mod: AttackPowerModifier;
605
+ export interface MasterIBonuses {
606
+ shelling_power: MasterIBonusRule[];
607
+ shelling_accuracy: MasterIBonusRule[];
608
+ shelling_aerial_power: MasterIBonusRule[];
609
+ torpedo_power: MasterIBonusRule[];
610
+ torpedo_accuracy: MasterIBonusRule[];
611
+ torpedo_evasion: MasterIBonusRule[];
612
+ asw_power: MasterIBonusRule[];
613
+ asw_accuracy: MasterIBonusRule[];
614
+ night_power: MasterIBonusRule[];
615
+ night_aerial_power: MasterIBonusRule[];
616
+ night_accuracy: MasterIBonusRule[];
617
+ defense_power: MasterIBonusRule[];
618
+ contact_selection: MasterIBonusRule[];
619
+ fighter_power: MasterIBonusRule[];
620
+ ship_anti_air: MasterIBonusRule[];
621
+ fleet_anti_air: MasterIBonusRule[];
622
+ elos: MasterIBonusRule[];
610
623
  }
611
624
 
612
- export interface AttackPowerModifier {
613
- a?: number;
614
- b?: number;
625
+ export interface MasterIBonusRule {
626
+ expr: CompiledEvaler;
627
+ formula: CompiledEvaler;
615
628
  }
616
629
 
617
630
  export type CompiledEvaler = string;
618
631
 
619
- export interface EBonuses {
620
- firepower: number;
621
- torpedo: number;
622
- anti_air: number;
623
- armor: number;
624
- evasion: number;
625
- asw: number;
626
- los: number;
627
- bombing: number;
628
- accuracy: number;
629
- range: number;
630
- }
631
-
632
- export interface ShipInput {
633
- ship_id: number;
634
- ctype: number;
635
- stype: number;
636
- yomi: string;
637
- }
638
-
639
- export interface GearInput {
640
- gear_id: number;
641
- types: GearTypeIdArray;
642
- firepower: number;
643
- torpedo: number;
644
- anti_air: number;
645
- armor: number;
646
- evasion: number;
647
- asw: number;
648
- los: number;
649
- bombing: number;
650
- accuracy: number;
651
- range: number;
652
- radius: number;
653
- stars: number;
654
- ace: number;
655
- }
656
-
657
- export type GearVecInput = GearInput[];
658
-
659
632
  export type ShipAttr =
660
633
  | "Unknown"
661
634
  | "Abyssal"
@@ -681,86 +654,6 @@ export type OrgType =
681
654
  | "EnemySingle"
682
655
  | "EnemyCombined";
683
656
 
684
- export type FleetKey = "f1" | "f2" | "f3" | "f4";
685
-
686
- export interface SupportShellingSimulatorParams {
687
- attacker_formation?: Formation;
688
- target_formation?: Formation;
689
- engagement: Engagement;
690
- }
691
-
692
- export interface MasterBattleDefinitions {
693
- formation: NestedFormationDef[];
694
- anti_air_cutin: AntiAirCutinDef[];
695
- day_cutin: DayCutinDef[];
696
- night_cutin: NightCutinDef[];
697
- historical_bonuses?: HistoricalBonusDef[];
698
- }
699
-
700
- export interface ShipAnalyzerConfig {
701
- air_state?: AirState;
702
- engagement?: Engagement;
703
- left?: AttackAnalyzerShipConfig;
704
- right?: AttackAnalyzerShipConfig;
705
- }
706
-
707
- export interface NightContactChance {
708
- rank1: number;
709
- rank2: number;
710
- rank3: number;
711
- }
712
-
713
- export interface CompNightCutinAnalysis {
714
- night_contact_chance: NightContactChance;
715
- ships: ShipNightCutinAnalysis[];
716
- }
717
-
718
- export interface ShipNightCutinAnalysis {
719
- ship_id: number;
720
- index: number;
721
- normal: NightCutinActionReport;
722
- chuuha: NightCutinActionReport;
723
- }
724
-
725
- export interface NightCutinActionReport
726
- extends ActionReport<NightPhaseAttackStyle> {
727
- cutin_term: number | null;
728
- }
729
-
730
- export interface AttackAnalyzerShipConfig
731
- extends ShipConditions,
732
- NightFleetConditions {
733
- fleet_los_mod?: number | null;
734
- }
735
-
736
- export interface CompAntiAirAnalysis {
737
- fleet_adjusted_anti_air: number;
738
- ships: AntiAirReport[];
739
- anti_air_cutin_chance: [number, number][];
740
- }
741
-
742
- export interface AntiAirReport {
743
- ship_id: number;
744
- role: Role;
745
- index: number;
746
- adjusted_anti_air: number | null;
747
- proportional_shotdown_rate: number | null;
748
- fixed_shotdown_number: number | null;
749
- guaranteed: number | null;
750
- anti_air_cutin_chance: [number, number][];
751
- anti_air_propellant_barrage_chance: number | null;
752
- }
753
-
754
- export interface NodeState {
755
- map?: number;
756
- node?: NodeId;
757
- phase?: number;
758
- debuff?: boolean;
759
- disable_historical_mod?: boolean;
760
- }
761
-
762
- export type NodeId = string;
763
-
764
657
  export type GearAttr =
765
658
  | "Unknown"
766
659
  | "Abyssal"
@@ -793,41 +686,75 @@ export type GearAttr =
793
686
  | "SemiNightPlane"
794
687
  | "HighAltitudeInterceptor";
795
688
 
796
- export interface SupportShellingStyle {
797
- tag: "SupportShellingStyle";
798
- attack_type: SupportShellingType;
799
- }
689
+ export type FleetKey = "f1" | "f2" | "f3" | "f4";
800
690
 
801
- export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
691
+ export type TorpedoAttackType = null;
802
692
 
803
- export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
693
+ export type NightPhaseAttackType =
694
+ | { t: "Night"; c: NightAttackType }
695
+ | { t: "Asw"; c: AswAttackType };
804
696
 
805
- export interface TorpedoAttackStyle {
806
- tag: "TorpedoAttackStyle";
807
- attack_type: TorpedoAttackType;
808
- }
697
+ export type DayPhaseAttackType =
698
+ | { t: "Shelling"; c: ShellingType }
699
+ | { t: "Asw"; c: AswAttackType };
809
700
 
810
- export interface AswAttackStyle {
811
- tag: "AswAttackStyle";
812
- attack_type: AswAttackType;
813
- }
701
+ export type AttackType =
702
+ | { t: "Asw"; c: AswAttackType }
703
+ | { t: "Shelling"; c: ShellingType }
704
+ | { t: "Night"; c: NightAttackType }
705
+ | { t: "Torpedo" }
706
+ | { t: "SupportShelling"; c: SupportShellingType };
814
707
 
815
- export interface NightAttackStyle {
816
- tag: "NightAttackStyle";
817
- attack_type: NightAttackType;
818
- cutin: NightCutinLike | null;
819
- power_mod: number;
820
- accuracy_mod: number;
821
- hits: number;
708
+ export type SupportShellingType = ShellingType;
709
+
710
+ export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
711
+
712
+ export type ShellingType = "Normal" | "Aerial";
713
+
714
+ export type AswAttackType = "DepthCharge" | "Aerial";
715
+
716
+ export interface MasterData extends MasterBattleDefinitions {
717
+ created_at: number;
718
+ gears: MasterGear[];
719
+ gear_attrs: MasterAttrRule<GearAttr>[];
720
+ ships: MasterShip[];
721
+ ship_attrs: MasterAttrRule<ShipAttr>[];
722
+ ibonuses: MasterIBonuses;
723
+ equippability: MasterEquippability;
822
724
  }
823
725
 
824
- export interface ShellingStyle {
825
- tag: "ShellingStyle";
826
- attack_type: ShellingType;
827
- cutin: DayCutinLike | null;
828
- power_mod: number;
829
- accuracy_mod: number;
830
- hits: number;
726
+ export interface NationalityDef {
727
+ id: number;
728
+ ctypes: number[];
729
+ }
730
+
731
+ export interface MasterAttrRule<T> {
732
+ tag: T;
733
+ name: string;
734
+ expr: CompiledEvaler;
735
+ }
736
+
737
+ export interface NightContactChance {
738
+ rank1: number;
739
+ rank2: number;
740
+ rank3: number;
741
+ }
742
+
743
+ export interface CompNightCutinAnalysis {
744
+ night_contact_chance: NightContactChance;
745
+ ships: ShipNightCutinAnalysis[];
746
+ }
747
+
748
+ export interface ShipNightCutinAnalysis {
749
+ ship_id: number;
750
+ index: number;
751
+ normal: NightCutinActionReport;
752
+ chuuha: NightCutinActionReport;
753
+ }
754
+
755
+ export interface NightCutinActionReport
756
+ extends ActionReport<NightPhaseAttackStyle> {
757
+ cutin_term: number | null;
831
758
  }
832
759
 
833
760
  export interface FleetCutinReport<T> {
@@ -843,43 +770,34 @@ export interface FleetCutinAttackReport<T> extends AttackReport<T> {
843
770
  power_mod: number;
844
771
  }
845
772
 
846
- export interface DamageReport {
847
- miss_damage_min: number;
848
- miss_damage_max: number;
849
- normal_damage_min: number;
850
- normal_damage_max: number;
851
- critical_damage_min: number;
852
- critical_damage_max: number;
853
- normal_scratch_rate: number;
854
- critical_scratch_rate: number;
855
- damage_density: Histogram<number, number>;
856
- damage_state_density: Histogram<DamageState, number>;
857
- }
858
-
859
- export type Histogram<K, V> = Partial<Record<K, V>>;
860
-
861
- export type Formation = SingleFormation | CombinedFormation;
773
+ export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
862
774
 
863
- export type CombinedFormation =
864
- | "Cruising1"
865
- | "Cruising2"
866
- | "Cruising3"
867
- | "Cruising4";
775
+ export interface SupportShellingSimulatorParams {
776
+ attacker_formation?: Formation;
777
+ target_formation?: Formation;
778
+ engagement: Engagement;
779
+ }
868
780
 
869
- export type SingleFormation =
870
- | "LineAhead"
871
- | "DoubleLine"
872
- | "Diamond"
873
- | "Echelon"
874
- | "LineAbreast"
875
- | "Vanguard";
781
+ export interface MasterBattleDefinitions {
782
+ formation: NestedFormationDef[];
783
+ anti_air_cutin: AntiAirCutinDef[];
784
+ day_cutin: DayCutinDef[];
785
+ night_cutin: NightCutinDef[];
786
+ historical_bonuses?: HistoricalBonusDef[];
787
+ }
876
788
 
877
- export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
789
+ export interface ShipAnalyzerConfig {
790
+ air_state?: AirState;
791
+ engagement?: Engagement;
792
+ left?: AttackAnalyzerShipConfig;
793
+ right?: AttackAnalyzerShipConfig;
794
+ }
878
795
 
879
796
  export interface AttackAnalysis {
880
797
  attacker_is_player: boolean;
881
798
  attacker_ship_id: number;
882
799
  target_ship_id: number;
800
+ historical_params: HistoricalParams;
883
801
  day: ActionReport<DayPhaseAttackStyle>;
884
802
  night: ActionReport<NightPhaseAttackStyle>;
885
803
  closing_torpedo: ActionReport<TorpedoAttackStyle>;
@@ -887,95 +805,99 @@ export interface AttackAnalysis {
887
805
  support_shelling: ActionReport<SupportShellingStyle>;
888
806
  }
889
807
 
890
- export type SpecialEnemyType =
891
- | "None"
892
- | "SoftSkinned"
893
- | "Pillbox"
894
- | "IsolatedIsland"
895
- | "SupplyDepot"
896
- | "NewSupplyDepot"
897
- | "HarbourSummerPrincess"
898
- | "PtImp"
899
- | "BattleshipSummerPrincess"
900
- | "HeavyCruiserSummerPrincess";
808
+ export interface EBonuses {
809
+ firepower: number;
810
+ torpedo: number;
811
+ anti_air: number;
812
+ armor: number;
813
+ evasion: number;
814
+ asw: number;
815
+ los: number;
816
+ bombing: number;
817
+ accuracy: number;
818
+ range: number;
819
+ }
901
820
 
902
- export interface MasterShip {
821
+ export interface ShipInput {
903
822
  ship_id: number;
904
- name: string;
905
- yomi: string;
906
- stype: number;
907
823
  ctype: number;
908
- nationality?: number;
909
- sort_id?: number;
910
- max_hp: StatInterval;
911
- firepower: StatInterval;
912
- armor: StatInterval;
913
- torpedo: StatInterval;
914
- evasion: StatInterval;
915
- anti_air: StatInterval;
916
- asw: StatInterval;
917
- los: StatInterval;
918
- luck: StatInterval;
919
- torpedo_accuracy?: number;
920
- basic_evasion_term?: number;
921
- speed: number;
922
- range?: number;
923
- fuel?: number;
924
- ammo?: number;
925
- next_id?: number;
926
- next_level?: number;
927
- slotnum: number;
928
- slots: SlotSizeVec;
929
- stock: GearState[];
930
- speed_group?: SpeedGroup;
931
- useful?: boolean;
824
+ stype: number;
825
+ yomi: string;
932
826
  }
933
827
 
934
- export type StatInterval = [number | null, number | null];
935
-
936
- export interface EquippabilityRule {
937
- ship: CompiledEvaler;
938
- keys?: string[];
939
- include?: string;
940
- exclude?: string;
828
+ export interface GearInput {
829
+ gear_id: number;
830
+ types: GearTypeIdArray;
831
+ firepower: number;
832
+ torpedo: number;
833
+ anti_air: number;
834
+ armor: number;
835
+ evasion: number;
836
+ asw: number;
837
+ los: number;
838
+ bombing: number;
839
+ accuracy: number;
840
+ range: number;
841
+ radius: number;
842
+ stars: number;
843
+ ace: number;
941
844
  }
942
845
 
943
- export interface MasterEquippability {
944
- equip_stype: EquipStype[];
945
- equip_exslot: number[];
946
- equip_ship: MstEquipShip[];
947
- equip_exslot_ship: MstEquipExslotShip[];
948
- rules: EquippabilityRule[];
949
- }
846
+ export type GearVecInput = GearInput[];
950
847
 
951
- export interface MstEquipExslotShip {
952
- api_slotitem_id: number;
953
- api_ship_ids: number[];
848
+ export type Histogram<K, V> = Partial<Record<K, V>>;
849
+
850
+ export type Formation = SingleFormation | CombinedFormation;
851
+
852
+ export type CombinedFormation =
853
+ | "Cruising1"
854
+ | "Cruising2"
855
+ | "Cruising3"
856
+ | "Cruising4";
857
+
858
+ export type SingleFormation =
859
+ | "LineAhead"
860
+ | "DoubleLine"
861
+ | "Diamond"
862
+ | "Echelon"
863
+ | "LineAbreast"
864
+ | "Vanguard";
865
+
866
+ export interface SupportShellingStyle {
867
+ tag: "SupportShellingStyle";
868
+ attack_type: SupportShellingType;
954
869
  }
955
870
 
956
- export interface MstEquipShip {
957
- api_ship_id: number;
958
- api_equip_type: number[];
871
+ export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
872
+
873
+ export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
874
+
875
+ export interface TorpedoAttackStyle {
876
+ tag: "TorpedoAttackStyle";
877
+ attack_type: TorpedoAttackType;
959
878
  }
960
879
 
961
- export interface EquipStype {
962
- id: number;
963
- equip_type: number[];
880
+ export interface AswAttackStyle {
881
+ tag: "AswAttackStyle";
882
+ attack_type: AswAttackType;
964
883
  }
965
884
 
966
- export interface HitRate {
967
- normal: number;
968
- critical: number;
969
- total: number;
885
+ export interface NightAttackStyle {
886
+ tag: "NightAttackStyle";
887
+ attack_type: NightAttackType;
888
+ cutin: NightCutinLike | null;
889
+ power_mod: number;
890
+ accuracy_mod: number;
891
+ hits: number;
970
892
  }
971
893
 
972
- export interface HitRateParams {
973
- accuracy_term: number;
974
- evasion_term: number;
975
- target_morale_mod: number;
976
- critical_rate_constant: number;
977
- critical_percentage_bonus: number;
978
- hit_percentage_bonus: number;
894
+ export interface ShellingStyle {
895
+ tag: "ShellingStyle";
896
+ attack_type: ShellingType;
897
+ cutin: DayCutinLike | null;
898
+ power_mod: number;
899
+ accuracy_mod: number;
900
+ hits: number;
979
901
  }
980
902
 
981
903
  export interface CompDayCutinAnalysis {
@@ -998,6 +920,59 @@ export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
998
920
  observation_term: number | null;
999
921
  }
1000
922
 
923
+ export interface CompAntiAirAnalysis {
924
+ fleet_adjusted_anti_air: number;
925
+ ships: AntiAirReport[];
926
+ anti_air_cutin_chance: [number, number][];
927
+ }
928
+
929
+ export interface AntiAirReport {
930
+ ship_id: number;
931
+ role: Role;
932
+ index: number;
933
+ adjusted_anti_air: number | null;
934
+ proportional_shotdown_rate: number | null;
935
+ fixed_shotdown_number: number | null;
936
+ guaranteed: number | null;
937
+ anti_air_cutin_chance: [number, number][];
938
+ anti_air_propellant_barrage_chance: number | null;
939
+ }
940
+
941
+ export type SpecialEnemyType =
942
+ | "None"
943
+ | "SoftSkinned"
944
+ | "Pillbox"
945
+ | "IsolatedIsland"
946
+ | "SupplyDepot"
947
+ | "NewSupplyDepot"
948
+ | "HarbourSummerPrincess"
949
+ | "PtImp"
950
+ | "BattleshipSummerPrincess"
951
+ | "HeavyCruiserSummerPrincess";
952
+
953
+ export interface NodeState {
954
+ map?: number;
955
+ node?: NodeId;
956
+ phase?: number;
957
+ debuff?: boolean;
958
+ disable_historical_mod?: boolean;
959
+ }
960
+
961
+ export type NodeId = string;
962
+
963
+ export interface DamageReport {
964
+ miss_damage_min: number;
965
+ miss_damage_max: number;
966
+ normal_damage_min: number;
967
+ normal_damage_max: number;
968
+ critical_damage_min: number;
969
+ critical_damage_max: number;
970
+ normal_scratch_rate: number;
971
+ critical_scratch_rate: number;
972
+ damage_density: Histogram<number, number>;
973
+ damage_state_density: Histogram<DamageState, number>;
974
+ }
975
+
1001
976
  export interface ContactAnalysis {
1002
977
  single: DayContactChance[] | null;
1003
978
  combined: DayContactChance[] | null;
@@ -1012,6 +987,39 @@ export interface DayContactChance {
1012
987
  total: number;
1013
988
  }
1014
989
 
990
+ export interface CompAnalyzerConfig {
991
+ engagement: Engagement;
992
+ formation: Formation;
993
+ anti_air_cutin: number | null;
994
+ ship_anti_air_resist: number;
995
+ fleet_anti_air_resist: number;
996
+ left_night_fleet_conditions: NightFleetConditions;
997
+ right_night_fleet_conditions: NightFleetConditions;
998
+ }
999
+
1000
+ export interface CompNightAnalysis {
1001
+ night_cutin: CompNightCutinAnalysis;
1002
+ fleet_cutin: FleetCutinReport<NightAttackStyle>[];
1003
+ }
1004
+
1005
+ export interface CompDayAnalysis {
1006
+ day_cutin: CompDayCutinAnalysis;
1007
+ fleet_cutin: FleetCutinReport<ShellingStyle>[];
1008
+ }
1009
+
1010
+ export interface CompAnalysis {
1011
+ day: CompDayAnalysis;
1012
+ night: CompNightAnalysis;
1013
+ contact: ContactAnalysis;
1014
+ anti_air: CompAntiAirAnalysis;
1015
+ }
1016
+
1017
+ export interface AttackAnalyzerShipConfig
1018
+ extends ShipConditions,
1019
+ NightFleetConditions {
1020
+ fleet_los_mod?: number | null;
1021
+ }
1022
+
1015
1023
  /**
1016
1024
  */
1017
1025
  export class AirSquadron {