fleethub-core 1.2.0 → 1.3.1

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.
@@ -28,64 +28,26 @@ export function org_type_side(org_type: OrgType): Side;
28
28
  /**
29
29
  */
30
30
  export function set_panic_hook(): void;
31
- export type EBonusFnGearInput = {
32
- gear_id: number;
33
- types: GearTypes;
34
- firepower: number;
35
- torpedo: number;
36
- anti_air: number;
37
- armor: number;
38
- evasion: number;
39
- asw: number;
40
- los: number;
41
- bombing: number;
42
- accuracy: number;
43
- range: number;
44
- radius: number;
45
- stars: number;
46
- ace: number;
47
- };
48
-
49
- export type EBonusFnShipInput = {
50
- ship_id: number;
51
- ctype: number;
52
- stype: number;
53
- yomi: string;
31
+ export type CompDayCutinRateInfo = {
32
+ main: FleetDayCutinRateInfo;
33
+ escort: FleetDayCutinRateInfo | null;
54
34
  };
55
35
 
56
- export type EBonuses = {
57
- firepower: number;
58
- torpedo: number;
59
- anti_air: number;
60
- armor: number;
61
- evasion: number;
62
- asw: number;
63
- los: number;
64
- bombing: number;
65
- accuracy: number;
66
- range: number;
36
+ export type FleetDayCutinRateInfo = {
37
+ fleet_los_mod: number | null;
38
+ ships: ShipDayCutinRateInfo[];
67
39
  };
68
40
 
69
- export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
70
-
71
- export type AirState =
72
- | "AirSupremacy"
73
- | "AirSuperiority"
74
- | "AirParity"
75
- | "AirDenial"
76
- | "AirIncapability";
77
-
78
- export type ShellingSupportSimulatorParams = {
79
- attacker_formation: Formation;
80
- target_formation: Formation;
81
- engagement: Engagement;
82
- custom_mods: CustomModifiers;
41
+ export type ShipDayCutinRateInfo = {
42
+ ship_id: number;
43
+ air_supremacy: DayCutinRateInfo;
44
+ air_superiority: DayCutinRateInfo;
83
45
  };
84
46
 
85
- export type NightSituation = {
86
- night_contact_rank: ContactRank | null;
87
- starshell: boolean;
88
- searchlight: boolean;
47
+ export type DayCutinRateInfo = {
48
+ observation_term: number | null;
49
+ rates: [DayCutin | null, number | null][];
50
+ total_cutin_rate: number | null;
89
51
  };
90
52
 
91
53
  export type DamageInfo = {
@@ -101,64 +63,6 @@ export type DamageInfo = {
101
63
  damage_state_map: NumMap<DamageState, number>;
102
64
  };
103
65
 
104
- export type FleetCutin =
105
- | "NelsonTouch"
106
- | "NagatoCutin"
107
- | "ColoradoCutin"
108
- | "KongouCutin";
109
-
110
- export type BattleConfig = {
111
- formation: NestedFormationDef[];
112
- anti_air_cutin: AntiAirCutinDef[];
113
- day_cutin: DayCutinDef[];
114
- night_cutin: NightCutinDef[];
115
- };
116
-
117
- export type NightCutinDef = {
118
- tag: NightCutin;
119
- hits: number;
120
- chance_denom: number | null;
121
- power_mod: number | null;
122
- accuracy_mod: number | null;
123
- };
124
-
125
- export type DayCutinDef = {
126
- tag: DayCutin;
127
- hits: number;
128
- chance_denom: number | null;
129
- power_mod: number | null;
130
- accuracy_mod: number | null;
131
- };
132
-
133
- export type AntiAirCutinDef = {
134
- id: number;
135
- chance_numer: number | null;
136
- multiplier: number | null;
137
- minimum_bonus: number | null;
138
- sequential: boolean | null;
139
- };
140
-
141
- export type NestedFormationDef =
142
- | FormationDef
143
- | { top_half: FormationDef; bottom_half: FormationDef };
144
-
145
- export type FormationDef = {
146
- tag: Formation;
147
- protection_rate: number | null;
148
- fleet_anti_air_mod: number;
149
- shelling: FormationWarfareDef;
150
- torpedo: FormationWarfareDef;
151
- asw: FormationWarfareDef;
152
- night: FormationWarfareDef;
153
- shelling_support: FormationWarfareDef;
154
- };
155
-
156
- export type FormationWarfareDef = {
157
- power_mod: number | null;
158
- accuracy_mod: number | null;
159
- evasion_mod: number | null;
160
- };
161
-
162
66
  export type AirWaveType = "Jet" | "LandBase" | "Carrier";
163
67
 
164
68
  export type SimulatorResult = {
@@ -196,59 +100,64 @@ export type NightContactChance = {
196
100
  total: number;
197
101
  };
198
102
 
199
- export type GearTypes = [number, number, number, number, number];
103
+ export type NumMap<K, V> = Partial<Record<K, V>>;
200
104
 
201
- export type MasterGear = {
202
- gear_id: number;
203
- name: string;
204
- types: GearTypes;
205
- special_type?: number;
206
- max_hp?: number;
207
- firepower?: number;
208
- armor?: number;
209
- torpedo?: number;
210
- anti_air?: number;
211
- speed?: number;
212
- bombing?: number;
213
- asw?: number;
214
- los?: number;
215
- luck?: number;
216
- accuracy?: number;
217
- evasion?: number;
218
- range?: number;
219
- radius?: number;
220
- cost?: number;
221
- improvable?: boolean;
222
- adjusted_anti_air_resistance?: number;
223
- fleet_anti_air_resistance?: number;
105
+ export type CompMeta = { fleets: Record<FleetType, FleetMeta> };
106
+
107
+ export type FleetMeta = {
108
+ id: string;
109
+ len: number;
110
+ ships: [string, ShipMeta | null][];
224
111
  };
225
112
 
226
- export type MasterVariantDef = { tag: string; id: number; name: string };
113
+ export type ShipMeta = { id: string; ship_id: number };
227
114
 
228
- export type MasterAttrRule = { tag: string; name: string; expr: string };
115
+ export type ContactRank = "Rank1" | "Rank2" | "Rank3";
229
116
 
230
- export type MasterIBonusRule = { expr: string; formula: string };
117
+ export type WarfareContext = {
118
+ attacker_env: WarfareShipEnvironment;
119
+ target_env: WarfareShipEnvironment;
120
+ engagement: Engagement;
121
+ air_state: AirState;
122
+ custom_mods: CustomModifiers;
123
+ };
231
124
 
232
- export type MasterIBonuses = {
233
- shelling_power: MasterIBonusRule[];
234
- carrier_shelling_power: MasterIBonusRule[];
235
- shelling_accuracy: MasterIBonusRule[];
236
- torpedo_power: MasterIBonusRule[];
237
- torpedo_accuracy: MasterIBonusRule[];
238
- torpedo_evasion: MasterIBonusRule[];
239
- asw_power: MasterIBonusRule[];
240
- asw_accuracy: MasterIBonusRule[];
241
- night_power: MasterIBonusRule[];
242
- night_accuracy: MasterIBonusRule[];
243
- defense_power: MasterIBonusRule[];
244
- contact_selection: MasterIBonusRule[];
245
- fighter_power: MasterIBonusRule[];
246
- adjusted_anti_air: MasterIBonusRule[];
247
- fleet_anti_air: MasterIBonusRule[];
248
- elos: MasterIBonusRule[];
125
+ export type WarfareShipEnvironment = {
126
+ org_type: OrgType;
127
+ role: Role;
128
+ ship_index: number;
129
+ fleet_len: number;
130
+ formation: Formation;
131
+ fleet_los_mod: number | null;
249
132
  };
250
133
 
251
- export type StatInterval = [number | null, number | null];
134
+ export type AswAttackType = "DepthCharge" | "Aircraft";
135
+
136
+ export type MasterData = {
137
+ gears: MasterGear[];
138
+ gear_attrs: MasterAttrRule[];
139
+ ships: MasterShip[];
140
+ ship_attrs: MasterAttrRule[];
141
+ equippable: MasterEquippable;
142
+ ibonuses: MasterIBonuses;
143
+ config: BattleConfig;
144
+ };
145
+
146
+ export type MasterEquippable = {
147
+ equip_stype: EquipStype[];
148
+ equip_exslot: number[];
149
+ equip_ship: MstEquipShip[];
150
+ equip_exslot_ship: MstEquipExslotShip[];
151
+ };
152
+
153
+ export type MstEquipExslotShip = {
154
+ api_slotitem_id: number;
155
+ api_ship_ids: number[];
156
+ };
157
+
158
+ export type MstEquipShip = { api_ship_id: number; api_equip_type: number[] };
159
+
160
+ export type EquipStype = { id: number; equip_type: number[] };
252
161
 
253
162
  export type MasterShip = {
254
163
  ship_id: number;
@@ -273,68 +182,220 @@ export type MasterShip = {
273
182
  next_id?: number;
274
183
  next_level?: number;
275
184
  slotnum: number;
276
- slots: Array<number | null>;
185
+ slots: SlotSizeVec;
277
186
  stock: Array<GearState>;
278
187
  speed_group?: SpeedGroup;
279
188
  useful?: boolean;
280
189
  };
281
190
 
282
- export type EquipStype = { id: number; equip_type: number[] };
283
-
284
- export type MstEquipShip = { api_ship_id: number; api_equip_type: number[] };
191
+ export type StatInterval = [number | null, number | null];
285
192
 
286
- export type MstEquipExslotShip = {
287
- api_slotitem_id: number;
288
- api_ship_ids: number[];
193
+ export type MasterIBonuses = {
194
+ shelling_power: MasterIBonusRule[];
195
+ carrier_shelling_power: MasterIBonusRule[];
196
+ shelling_accuracy: MasterIBonusRule[];
197
+ torpedo_power: MasterIBonusRule[];
198
+ torpedo_accuracy: MasterIBonusRule[];
199
+ torpedo_evasion: MasterIBonusRule[];
200
+ asw_power: MasterIBonusRule[];
201
+ asw_accuracy: MasterIBonusRule[];
202
+ night_power: MasterIBonusRule[];
203
+ night_accuracy: MasterIBonusRule[];
204
+ defense_power: MasterIBonusRule[];
205
+ contact_selection: MasterIBonusRule[];
206
+ fighter_power: MasterIBonusRule[];
207
+ adjusted_anti_air: MasterIBonusRule[];
208
+ fleet_anti_air: MasterIBonusRule[];
209
+ elos: MasterIBonusRule[];
289
210
  };
290
211
 
291
- export type MasterEquippable = {
292
- equip_stype: EquipStype[];
293
- equip_exslot: number[];
294
- equip_ship: MstEquipShip[];
295
- equip_exslot_ship: MstEquipExslotShip[];
296
- };
212
+ export type MasterIBonusRule = { expr: string; formula: string };
297
213
 
298
- export type MasterData = {
299
- gears: MasterGear[];
300
- gear_attrs: MasterAttrRule[];
301
- ships: MasterShip[];
302
- ship_attrs: MasterAttrRule[];
303
- equippable: MasterEquippable;
304
- ibonuses: MasterIBonuses;
305
- config: BattleConfig;
214
+ export type MasterAttrRule = { tag: string; name: string; expr: string };
215
+
216
+ export type MasterVariantDef = { tag: string; id: number; name: string };
217
+
218
+ export type MasterGear = {
219
+ gear_id: number;
220
+ name: string;
221
+ types: GearTypeIdArray;
222
+ special_type?: number;
223
+ max_hp?: number;
224
+ firepower?: number;
225
+ armor?: number;
226
+ torpedo?: number;
227
+ anti_air?: number;
228
+ speed?: number;
229
+ bombing?: number;
230
+ asw?: number;
231
+ los?: number;
232
+ luck?: number;
233
+ accuracy?: number;
234
+ evasion?: number;
235
+ range?: number;
236
+ radius?: number;
237
+ cost?: number;
238
+ improvable?: boolean;
239
+ adjusted_anti_air_resistance?: number;
240
+ fleet_anti_air_resistance?: number;
306
241
  };
307
242
 
308
- export type ContactRank = "Rank1" | "Rank2" | "Rank3";
243
+ export type GearCategory =
244
+ | "Fighter"
245
+ | "Bomber"
246
+ | "Recon"
247
+ | "MainGun"
248
+ | "Secondary"
249
+ | "Torpedo"
250
+ | "AntiSub"
251
+ | "Radar"
252
+ | "Landing"
253
+ | "Ration"
254
+ | "LandBased"
255
+ | "Misc";
309
256
 
310
- export type CompMeta = { fleets: Record<FleetType, FleetMeta> };
257
+ export type GearType =
258
+ | "Unknown"
259
+ | "SmallMainGun"
260
+ | "MediumMainGun"
261
+ | "LargeMainGun"
262
+ | "SecondaryGun"
263
+ | "Torpedo"
264
+ | "CbFighter"
265
+ | "CbDiveBomber"
266
+ | "CbTorpedoBomber"
267
+ | "CbRecon"
268
+ | "ReconSeaplane"
269
+ | "SeaplaneBomber"
270
+ | "SmallRadar"
271
+ | "LargeRadar"
272
+ | "Sonar"
273
+ | "DepthCharge"
274
+ | "ExtraArmor"
275
+ | "Engine"
276
+ | "AntiAirShell"
277
+ | "ApShell"
278
+ | "VtFuze"
279
+ | "AntiAirGun"
280
+ | "MidgetSubmarine"
281
+ | "EmergencyRepair"
282
+ | "LandingCraft"
283
+ | "Rotorcraft"
284
+ | "AntiSubPatrolAircraft"
285
+ | "MediumArmor"
286
+ | "LargeArmor"
287
+ | "Searchlight"
288
+ | "SupplyContainer"
289
+ | "ShipRepairFacility"
290
+ | "SubmarineTorpedo"
291
+ | "Starshell"
292
+ | "CommandFacility"
293
+ | "AviationPersonnel"
294
+ | "AntiAirFireDirector"
295
+ | "AntiGroundEquipment"
296
+ | "LargeMainGun2"
297
+ | "ShipPersonnel"
298
+ | "LargeSonar"
299
+ | "LargeFlyingBoat"
300
+ | "LargeSearchlight"
301
+ | "CombatRation"
302
+ | "Supplies"
303
+ | "SeaplaneFighter"
304
+ | "AmphibiousTank"
305
+ | "LbAttacker"
306
+ | "LbFighter"
307
+ | "LbRecon"
308
+ | "TransportationMaterial"
309
+ | "SubmarineEquipment"
310
+ | "LargeLbAircraft"
311
+ | "JetFighter"
312
+ | "JetFighterBomber"
313
+ | "JetTorpedoBomber"
314
+ | "JetRecon"
315
+ | "LargeRadar2"
316
+ | "CbRecon2";
311
317
 
312
- export type FleetMeta = {
313
- id: string;
314
- len: number;
315
- ships: [string, ShipMeta | null][];
316
- };
318
+ export type GearTypeIdArray = [number, number, number, number, number];
317
319
 
318
- export type ShipMeta = { id: string; ship_id: number };
320
+ export type ShipAttr =
321
+ | "Abyssal"
322
+ | "NightCarrier"
323
+ | "Installation"
324
+ | "RoyalNavy"
325
+ | "Kai2"
326
+ | "TurbineSpeedBonus"
327
+ | "Pillbox"
328
+ | "IsolatedIsland"
329
+ | "HarbourSummerPrincess"
330
+ | "SupplyDepot"
331
+ | "PtImp"
332
+ | "BattleshipSummerPrincess"
333
+ | "HeavyCruiserSummerPrincess";
319
334
 
320
- export type WarfareContext = {
321
- attacker_env: WarfareShipEnvironment;
322
- target_env: WarfareShipEnvironment;
323
- engagement: Engagement;
324
- air_state: AirState;
325
- custom_mods: CustomModifiers;
326
- };
335
+ export type GearAttr =
336
+ | "Abyssal"
337
+ | "HighAngleMount"
338
+ | "NightFighter"
339
+ | "NightAttacker"
340
+ | "HeavyBomber"
341
+ | "MainGun"
342
+ | "Radar"
343
+ | "SurfaceRadar"
344
+ | "AirRadar"
345
+ | "DepthChargeProjector"
346
+ | "AdditionalDepthCharge"
347
+ | "AntiSubMortar"
348
+ | "AntiSubWeapon"
349
+ | "AntiSubAircraft"
350
+ | "LateModelBowTorpedo"
351
+ | "Seaplane"
352
+ | "CbAircraft"
353
+ | "LbAircraft"
354
+ | "JetAircraft"
355
+ | "Fighter"
356
+ | "Recon"
357
+ | "ObservationSeaplane"
358
+ | "CbFighterBomber"
359
+ | "AntiInstDiveBomber"
360
+ | "NightRecon"
361
+ | "CbSwordfish"
362
+ | "SemiNightPlane"
363
+ | "HighAltitudeInterceptor";
327
364
 
328
- export type WarfareShipEnvironment = {
329
- org_type: OrgType;
330
- role: Role;
331
- ship_index: number;
332
- fleet_len: number;
333
- formation: Formation;
334
- fleet_los_mod: number | null;
335
- };
365
+ export type ShipType =
366
+ | "Unknown"
367
+ | "DE"
368
+ | "DD"
369
+ | "CL"
370
+ | "CLT"
371
+ | "CA"
372
+ | "CAV"
373
+ | "CVL"
374
+ | "FBB"
375
+ | "BB"
376
+ | "BBV"
377
+ | "CV"
378
+ | "XBB"
379
+ | "SS"
380
+ | "SSV"
381
+ | "AP"
382
+ | "AV"
383
+ | "LHA"
384
+ | "CVB"
385
+ | "AR"
386
+ | "AS"
387
+ | "CT"
388
+ | "AO";
336
389
 
337
- export type AswAttackType = "DepthCharge" | "Aircraft";
390
+ export type ShipCategory =
391
+ | "Battleship"
392
+ | "AircraftCarrier"
393
+ | "HeavyCruiser"
394
+ | "LightCruiser"
395
+ | "Destroyer"
396
+ | "CoastalDefenseShip"
397
+ | "Submarine"
398
+ | "AuxiliaryShip";
338
399
 
339
400
  export type ShellingSpecialAttack =
340
401
  | { DayCutin: DayCutin }
@@ -354,6 +415,66 @@ export type DayCutin =
354
415
 
355
416
  export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
356
417
 
418
+ export type EBonusFnGearInput = {
419
+ gear_id: number;
420
+ types: GearTypeIdArray;
421
+ firepower: number;
422
+ torpedo: number;
423
+ anti_air: number;
424
+ armor: number;
425
+ evasion: number;
426
+ asw: number;
427
+ los: number;
428
+ bombing: number;
429
+ accuracy: number;
430
+ range: number;
431
+ radius: number;
432
+ stars: number;
433
+ ace: number;
434
+ };
435
+
436
+ export type EBonusFnShipInput = {
437
+ ship_id: number;
438
+ ctype: number;
439
+ stype: number;
440
+ yomi: string;
441
+ };
442
+
443
+ export type EBonuses = {
444
+ firepower: number;
445
+ torpedo: number;
446
+ anti_air: number;
447
+ armor: number;
448
+ evasion: number;
449
+ asw: number;
450
+ los: number;
451
+ bombing: number;
452
+ accuracy: number;
453
+ range: number;
454
+ };
455
+
456
+ export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
457
+
458
+ export type AirState =
459
+ | "AirSupremacy"
460
+ | "AirSuperiority"
461
+ | "AirParity"
462
+ | "AirDenial"
463
+ | "AirIncapability";
464
+
465
+ export type ShellingSupportSimulatorParams = {
466
+ attacker_formation: Formation;
467
+ target_formation: Formation;
468
+ engagement: Engagement;
469
+ custom_mods: CustomModifiers;
470
+ };
471
+
472
+ export type NightSituation = {
473
+ night_contact_rank: ContactRank | null;
474
+ starshell: boolean;
475
+ searchlight: boolean;
476
+ };
477
+
357
478
  export type AttackPower = {
358
479
  precap: number;
359
480
  is_capped: boolean;
@@ -491,158 +612,9 @@ export type OrgState = {
491
612
  boss_sup?: string;
492
613
  };
493
614
 
494
- export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
495
-
496
- export type ShipStateMap = Record<ShipKey, ShipState>;
497
-
498
- export type CompDayCutinRateInfo = {
499
- main: FleetDayCutinRateInfo;
500
- escort: FleetDayCutinRateInfo | null;
501
- };
502
-
503
- export type FleetDayCutinRateInfo = {
504
- fleet_los_mod: number | null;
505
- ships: ShipDayCutinRateInfo[];
506
- };
507
-
508
- export type ShipDayCutinRateInfo = {
509
- ship_id: number;
510
- air_supremacy: DayCutinRateInfo;
511
- air_superiority: DayCutinRateInfo;
512
- };
513
-
514
- export type DayCutinRateInfo = {
515
- observation_term: number | null;
516
- rates: [DayCutin | null, number | null][];
517
- total_cutin_rate: number | null;
518
- };
519
-
520
- export type GearAttr =
521
- | "Abyssal"
522
- | "HighAngleMount"
523
- | "NightFighter"
524
- | "NightAttacker"
525
- | "HeavyBomber"
526
- | "MainGun"
527
- | "Radar"
528
- | "SurfaceRadar"
529
- | "AirRadar"
530
- | "DepthChargeProjector"
531
- | "AdditionalDepthCharge"
532
- | "AntiSubMortar"
533
- | "AntiSubWeapon"
534
- | "AntiSubAircraft"
535
- | "LateModelBowTorpedo"
536
- | "Seaplane"
537
- | "CbAircraft"
538
- | "LbAircraft"
539
- | "JetAircraft"
540
- | "Fighter"
541
- | "Recon"
542
- | "ObservationSeaplane"
543
- | "CbFighterBomber"
544
- | "AntiInstDiveBomber"
545
- | "NightRecon"
546
- | "CbSwordfish"
547
- | "SemiNightPlane"
548
- | "HighAltitudeInterceptor";
549
-
550
- export type GearCategory =
551
- | "Fighter"
552
- | "Bomber"
553
- | "Recon"
554
- | "MainGun"
555
- | "Secondary"
556
- | "Torpedo"
557
- | "AntiSub"
558
- | "Radar"
559
- | "Landing"
560
- | "Ration"
561
- | "LandBased"
562
- | "Misc";
563
-
564
- export type GearType =
565
- | "Unknown"
566
- | "SmallMainGun"
567
- | "MediumMainGun"
568
- | "LargeMainGun"
569
- | "SecondaryGun"
570
- | "Torpedo"
571
- | "CbFighter"
572
- | "CbDiveBomber"
573
- | "CbTorpedoBomber"
574
- | "CbRecon"
575
- | "ReconSeaplane"
576
- | "SeaplaneBomber"
577
- | "SmallRadar"
578
- | "LargeRadar"
579
- | "Sonar"
580
- | "DepthCharge"
581
- | "ExtraArmor"
582
- | "Engine"
583
- | "AntiAirShell"
584
- | "ApShell"
585
- | "VtFuze"
586
- | "AntiAirGun"
587
- | "MidgetSubmarine"
588
- | "EmergencyRepair"
589
- | "LandingCraft"
590
- | "Rotorcraft"
591
- | "AntiSubPatrolAircraft"
592
- | "MediumArmor"
593
- | "LargeArmor"
594
- | "Searchlight"
595
- | "SupplyContainer"
596
- | "ShipRepairFacility"
597
- | "SubmarineTorpedo"
598
- | "Starshell"
599
- | "CommandFacility"
600
- | "AviationPersonnel"
601
- | "AntiAirFireDirector"
602
- | "AntiGroundEquipment"
603
- | "LargeMainGun2"
604
- | "ShipPersonnel"
605
- | "LargeSonar"
606
- | "LargeFlyingBoat"
607
- | "LargeSearchlight"
608
- | "CombatRation"
609
- | "Supplies"
610
- | "SeaplaneFighter"
611
- | "AmphibiousTank"
612
- | "LbAttacker"
613
- | "LbFighter"
614
- | "LbRecon"
615
- | "TransportationMaterial"
616
- | "SubmarineEquipment"
617
- | "LargeLbAircraft"
618
- | "JetFighter"
619
- | "JetFighterBomber"
620
- | "JetTorpedoBomber"
621
- | "JetRecon"
622
- | "LargeRadar2"
623
- | "CbRecon2";
624
-
625
- export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
626
-
627
- export type ShellingAttackType = "Normal" | "Carrier";
628
-
629
- export type FleetCutinAnalysis = {
630
- shelling: FleetCutinInfo[];
631
- night: FleetCutinInfo[];
632
- };
633
-
634
- export type FleetCutinInfo = {
635
- cutin: FleetCutin;
636
- formation: Formation;
637
- items: FleetCutinInfoItem[];
638
- };
639
-
640
- export type FleetCutinInfoItem = {
641
- ship_id: number;
642
- cutin: FleetCutin;
643
- fleet_cutin_mod: number;
644
- stats: AttackStats;
645
- };
615
+ export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
616
+
617
+ export type ShipStateMap = Record<ShipKey, ShipState>;
646
618
 
647
619
  export type CompAntiAirInfo = {
648
620
  fleet_anti_air: number;
@@ -660,20 +632,6 @@ export type ShipAntiAirInfo = {
660
632
  anti_air_propellant_barrage_chance: number | null;
661
633
  };
662
634
 
663
- export type CompContactChanceInfo = {
664
- single: AirstrikeContactChance[] | null;
665
- combined: AirstrikeContactChance[] | null;
666
- };
667
-
668
- export type AirstrikeContactChance = {
669
- air_state: AirState;
670
- trigger_rate: number;
671
- rank3: number;
672
- rank2: number;
673
- rank1: number;
674
- total: number;
675
- };
676
-
677
635
  export type Formation = SingleFormation | CombinedFormation;
678
636
 
679
637
  export type CombinedFormation =
@@ -690,6 +648,10 @@ export type SingleFormation =
690
648
  | "LineAbreast"
691
649
  | "Vanguard";
692
650
 
651
+ export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
652
+
653
+ export type ShellingAttackType = "Normal" | "Carrier";
654
+
693
655
  export type NightBattleAttackType =
694
656
  | { t: "NightAttack"; c: NightAttackType }
695
657
  | { t: "Asw"; c: AswAttackType };
@@ -698,6 +660,24 @@ export type DayBattleAttackType =
698
660
  | { t: "Shelling"; c: ShellingAttackType }
699
661
  | { t: "Asw"; c: AswAttackType };
700
662
 
663
+ export type FleetCutinAnalysis = {
664
+ shelling: FleetCutinInfo[];
665
+ night: FleetCutinInfo[];
666
+ };
667
+
668
+ export type FleetCutinInfo = {
669
+ cutin: FleetCutin;
670
+ formation: Formation;
671
+ items: FleetCutinInfoItem[];
672
+ };
673
+
674
+ export type FleetCutinInfoItem = {
675
+ ship_id: number;
676
+ cutin: FleetCutin;
677
+ fleet_cutin_mod: number;
678
+ stats: AttackStats;
679
+ };
680
+
701
681
  export type AttackInfo<AttackType, Cutin> = {
702
682
  attack_type: AttackType;
703
683
  items: AttackInfoItem<Cutin>[];
@@ -719,191 +699,47 @@ export type AttackStats = {
719
699
  damage: DamageInfo | null;
720
700
  };
721
701
 
722
- export type SpecialEnemyType =
723
- | "None"
724
- | "SoftSkinned"
725
- | "Pillbox"
726
- | "IsolatedIsland"
727
- | "SupplyDepot"
728
- | "HarbourSummerPrincess"
729
- | "PtImp"
730
- | "BattleshipSummerPrincess"
731
- | "HeavyCruiserSummerPrincess";
732
-
733
- export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
734
-
735
- export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
702
+ export type CompContactChanceInfo = {
703
+ single: AirstrikeContactChance[] | null;
704
+ combined: AirstrikeContactChance[] | null;
705
+ };
736
706
 
737
- export type SpeedGroup = "A" | "B1" | "B2" | "C";
707
+ export type AirstrikeContactChance = {
708
+ air_state: AirState;
709
+ trigger_rate: number;
710
+ rank3: number;
711
+ rank2: number;
712
+ rank1: number;
713
+ total: number;
714
+ };
738
715
 
739
- export type ShipAttr =
740
- | "Abyssal"
741
- | "NightCarrier"
742
- | "Installation"
743
- | "RoyalNavy"
744
- | "Kai2"
745
- | "TurbineSpeedBonus"
746
- | "Pillbox"
747
- | "IsolatedIsland"
748
- | "HarbourSummerPrincess"
749
- | "SupplyDepot"
750
- | "PtImp"
751
- | "BattleshipSummerPrincess"
752
- | "HeavyCruiserSummerPrincess";
716
+ import * as bindings from "../bindings";
717
+ export * from "../bindings";
753
718
 
754
- export type ShipClass =
755
- | "Unknown"
756
- | "AyanamiClass"
757
- | "IseClass"
758
- | "KagaClass"
759
- | "KumaClass"
760
- | "AkatsukiClass"
761
- | "KongouClass"
762
- | "FurutakaClass"
763
- | "TakaoClass"
764
- | "MogamiClass"
765
- | "HatsuharuClass"
766
- | "ShouhouClass"
767
- | "FubukiClass"
768
- | "AobaClass"
769
- | "AkagiClass"
770
- | "ChitoseClass"
771
- | "SendaiClass"
772
- | "SouryuuClass"
773
- | "AsashioClass"
774
- | "NagatoClass"
775
- | "NagaraClass"
776
- | "TenryuuClass"
777
- | "ShimakazeClass"
778
- | "ShiratsuyuClass"
779
- | "HiyouClass"
780
- | "HiryuuClass"
781
- | "FusouClass"
782
- | "HoushouClass"
783
- | "MutsukiClass"
784
- | "MyoukouClass"
785
- | "KagerouClass"
786
- | "ToneClass"
787
- | "RyuujouClass"
788
- | "ShoukakuClass"
789
- | "YuubariClass"
790
- | "KaidaiVIClass"
791
- | "JunsenTypeBKai2"
792
- | "YamatoClass"
793
- | "YuugumoClass"
794
- | "JunsenTypeB"
795
- | "Junsen3Class"
796
- | "AganoClass"
797
- | "FleetOfFog"
798
- | "TaihouClass"
799
- | "I400Class"
800
- | "HeiClassAmphibiousAssaultShip"
801
- | "Type3SubmergenceTransportVehicle"
802
- | "BismarckClass"
803
- | "Z1Class"
804
- | "RepairShip"
805
- | "TaigeiClass"
806
- | "RyuuhouClass"
807
- | "OoyodoClass"
808
- | "UnryuuClass"
809
- | "AkizukiClass"
810
- | "AdmiralHipperClass"
811
- | "KatoriClass"
812
- | "TypeIXCClass"
813
- | "VittorioVenetoClass"
814
- | "AkitsushimaClass"
815
- | "RevisedKazahayaClass"
816
- | "MaestraleClass"
817
- | "MizuhoClass"
818
- | "GrafZeppelinClass"
819
- | "ZaraClass"
820
- | "IowaClass"
821
- | "KamikazeClass"
822
- | "QueenElizabethClass"
823
- | "AquilaClass"
824
- | "LexingtonClass"
825
- | "CommandantTesteClass"
826
- | "JunsenTypeAKai2"
827
- | "KamoiClass"
828
- | "GangutClass"
829
- | "ShimushuClass"
830
- | "KasugaMaruClass"
831
- | "TaiyouClass"
832
- | "EtorofuClass"
833
- | "ArkRoyalClass"
834
- | "RichelieuClass"
835
- | "MarconiClass"
836
- | "TashkentClass"
837
- | "JClass"
838
- | "CasablancaClass"
839
- | "EssexClass"
840
- | "HiburiClass"
841
- | "RoSeries"
842
- | "JohnCButlerClass"
843
- | "NelsonClass"
844
- | "GotlandClass"
845
- | "NisshinClass"
846
- | "FletcherClass"
847
- | "DucaDegliAbruzziClass"
848
- | "ColoradoClass"
849
- | "MikuraClass"
850
- | "NorthamptonClass"
851
- | "PerthClass"
852
- | "R1"
853
- | "DeRuyterClass"
854
- | "AtlantaClass"
855
- | "JingeiClass"
856
- | "MatsuClass"
857
- | "SouthDakotaClass"
858
- | "JunsenTypeC"
859
- | "TypeDCoastalDefenseShip"
860
- | "YorktownClass"
861
- | "StLouisClass"
862
- | "NorthCarolinaClass"
863
- | "TownClass"
864
- | "SentakaType"
865
- | "BrooklynClass"
866
- | "AuxiliaryTransportShip"
867
- | "IllustriousClass"
868
- | "ConteDiCavourClass";
719
+ export type SlotSizeVec = (number | null)[];
869
720
 
870
- export type ShipType =
871
- | "Unknown"
872
- | "DE"
873
- | "DD"
874
- | "CL"
875
- | "CLT"
876
- | "CA"
877
- | "CAV"
878
- | "CVL"
879
- | "FBB"
880
- | "BB"
881
- | "BBV"
882
- | "CV"
883
- | "XBB"
884
- | "SS"
885
- | "SSV"
886
- | "AP"
887
- | "AV"
888
- | "LHA"
889
- | "CVB"
890
- | "AR"
891
- | "AS"
892
- | "CT"
893
- | "AO";
721
+ export type NightAttackType = "Normal" | "ArkRoyal" | "Carrier";
894
722
 
895
- export type ShipCategory =
896
- | "Battleship"
897
- | "AircraftCarrier"
898
- | "HeavyCruiser"
899
- | "LightCruiser"
900
- | "Destroyer"
901
- | "CoastalDefenseShip"
902
- | "Submarine"
903
- | "AuxiliaryShip";
723
+ export type NightSpecialAttack =
724
+ | { NightCutin: NightCutin }
725
+ | { FleetCutin: FleetCutin };
904
726
 
905
- import * as bindings from "../bindings";
906
- export * from "../bindings";
727
+ export type NightCutin =
728
+ | "MainTorpRadar"
729
+ | "TorpLookoutRadar"
730
+ | "TorpTsloTorp"
731
+ | "TorpTsloDrum"
732
+ | "DoubleAttack"
733
+ | "TorpTorpMain"
734
+ | "TorpTorpTorp"
735
+ | "MainMainSec"
736
+ | "MainMainMain"
737
+ | "SubTorpTorp"
738
+ | "SubRadarTorp"
739
+ | "Cvci1_25"
740
+ | "Cvci1_20"
741
+ | "Cvci1_18"
742
+ | "Photobomber";
907
743
 
908
744
  export type HitRate = { total: number; normal: number; critical: number };
909
745
 
@@ -942,28 +778,80 @@ export type WarfareAnalyzerShipEnvironment = {
942
778
  custom_mods: CustomModifiers;
943
779
  };
944
780
 
945
- export type NightAttackType = "Normal" | "ArkRoyal" | "Carrier";
781
+ export type SpecialEnemyType =
782
+ | "None"
783
+ | "SoftSkinned"
784
+ | "Pillbox"
785
+ | "IsolatedIsland"
786
+ | "SupplyDepot"
787
+ | "HarbourSummerPrincess"
788
+ | "PtImp"
789
+ | "BattleshipSummerPrincess"
790
+ | "HeavyCruiserSummerPrincess";
946
791
 
947
- export type NightSpecialAttack =
948
- | { NightCutin: NightCutin }
949
- | { FleetCutin: FleetCutin };
792
+ export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
950
793
 
951
- export type NightCutin =
952
- | "MainTorpRadar"
953
- | "TorpLookoutRadar"
954
- | "TorpTsloTorp"
955
- | "TorpTsloDrum"
956
- | "DoubleAttack"
957
- | "TorpTorpMain"
958
- | "TorpTorpTorp"
959
- | "MainMainSec"
960
- | "MainMainMain"
961
- | "SubTorpTorp"
962
- | "SubRadarTorp"
963
- | "Cvci1_25"
964
- | "Cvci1_20"
965
- | "Cvci1_18"
966
- | "Photobomber";
794
+ export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
795
+
796
+ export type SpeedGroup = "A" | "B1" | "B2" | "C";
797
+
798
+ export type FleetCutin =
799
+ | "NelsonTouch"
800
+ | "NagatoCutin"
801
+ | "ColoradoCutin"
802
+ | "KongouCutin";
803
+
804
+ export type BattleConfig = {
805
+ formation: NestedFormationDef[];
806
+ anti_air_cutin: AntiAirCutinDef[];
807
+ day_cutin: DayCutinDef[];
808
+ night_cutin: NightCutinDef[];
809
+ };
810
+
811
+ export type NightCutinDef = {
812
+ tag: NightCutin;
813
+ hits: number;
814
+ chance_denom: number | null;
815
+ power_mod: number | null;
816
+ accuracy_mod: number | null;
817
+ };
818
+
819
+ export type DayCutinDef = {
820
+ tag: DayCutin;
821
+ hits: number;
822
+ chance_denom: number | null;
823
+ power_mod: number | null;
824
+ accuracy_mod: number | null;
825
+ };
826
+
827
+ export type AntiAirCutinDef = {
828
+ id: number;
829
+ chance_numer: number | null;
830
+ multiplier: number | null;
831
+ minimum_bonus: number | null;
832
+ sequential: boolean | null;
833
+ };
834
+
835
+ export type NestedFormationDef =
836
+ | FormationDef
837
+ | { top_half: FormationDef; bottom_half: FormationDef };
838
+
839
+ export type FormationDef = {
840
+ tag: Formation;
841
+ protection_rate: number | null;
842
+ fleet_anti_air_mod: number;
843
+ shelling: FormationWarfareDef;
844
+ torpedo: FormationWarfareDef;
845
+ asw: FormationWarfareDef;
846
+ night: FormationWarfareDef;
847
+ shelling_support: FormationWarfareDef;
848
+ };
849
+
850
+ export type FormationWarfareDef = {
851
+ power_mod: number | null;
852
+ accuracy_mod: number | null;
853
+ evasion_mod: number | null;
854
+ };
967
855
 
968
856
  /**
969
857
  */
@@ -1082,6 +970,10 @@ export class Comp {
1082
970
  * @returns {boolean}
1083
971
  */
1084
972
  is_combined(): boolean;
973
+ /**
974
+ * @returns {boolean}
975
+ */
976
+ is_player(): boolean;
1085
977
  /**
1086
978
  * @returns {boolean}
1087
979
  */
@@ -1143,6 +1035,15 @@ export class Comp {
1143
1035
  * @returns {number}
1144
1036
  */
1145
1037
  transport_point(): number;
1038
+ /**
1039
+ * @param {Ship} ship
1040
+ * @param {Formation} formation
1041
+ * @returns {WarfareShipEnvironment}
1042
+ */
1043
+ create_warfare_ship_environment(
1044
+ ship: Ship,
1045
+ formation: Formation
1046
+ ): WarfareShipEnvironment;
1146
1047
  /**
1147
1048
  */
1148
1049
  boss_sup?: Fleet;
@@ -1530,9 +1431,8 @@ export class Gear {
1530
1431
  */
1531
1432
  torpedo: number;
1532
1433
  /**
1533
- * @returns {any}
1534
1434
  */
1535
- readonly types: any;
1435
+ types: Uint8Array;
1536
1436
  /**
1537
1437
  */
1538
1438
  xxh3: BigInt;
@@ -1665,6 +1565,10 @@ export class Org {
1665
1565
  * @returns {(string)[]}
1666
1566
  */
1667
1567
  get_air_squadron_gear_ids_by_proficiency(): string[];
1568
+ /**
1569
+ * @returns {Side}
1570
+ */
1571
+ side(): Side;
1668
1572
  /**
1669
1573
  * @returns {boolean}
1670
1574
  */
@@ -1911,10 +1815,6 @@ export class Ship {
1911
1815
  * @returns {number | undefined}
1912
1816
  */
1913
1817
  basic_defense_power(armor_penetration: number): number | undefined;
1914
- /**
1915
- * @returns {Uint8Array}
1916
- */
1917
- get_possible_anti_air_cutin_ids(): Uint8Array;
1918
1818
  /**
1919
1819
  * @returns {number}
1920
1820
  */
@@ -1948,9 +1848,8 @@ export class Ship {
1948
1848
  */
1949
1849
  readonly asw: number | undefined;
1950
1850
  /**
1951
- * @returns {number}
1952
1851
  */
1953
- readonly ctype: number;
1852
+ ctype: number;
1954
1853
  /**
1955
1854
  */
1956
1855
  current_hp: number;
@@ -2042,9 +1941,6 @@ export class Ship {
2042
1941
  * @returns {number | undefined}
2043
1942
  */
2044
1943
  readonly range: number | undefined;
2045
- /**
2046
- */
2047
- ship_class: ShipClass;
2048
1944
  /**
2049
1945
  */
2050
1946
  ship_id: number;
@@ -2055,6 +1951,9 @@ export class Ship {
2055
1951
  * @returns {number}
2056
1952
  */
2057
1953
  readonly slotnum: number;
1954
+ /**
1955
+ */
1956
+ slots: SlotSizeVec;
2058
1957
  /**
2059
1958
  * @returns {number}
2060
1959
  */