fleethub-core 1.12.5 → 1.12.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,13 +1,164 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
- /**
4
- */
5
- export function set_panic_hook(): void;
6
- /**
7
- * @param {ShipConditions} value
8
- * @returns {ShipConditions}
9
- */
10
3
  export function parse_ship_conditions(value: ShipConditions): ShipConditions;
4
+ export function set_panic_hook(): void;
5
+
6
+ export type CompiledEvaler = string;
7
+
8
+ export interface MasterData extends MasterBattleDefinitions {
9
+ created_at: number;
10
+ gears: MasterGear[];
11
+ gear_attrs: MasterAttrRule<GearAttr>[];
12
+ ships: MasterShip[];
13
+ ship_attrs: MasterAttrRule<ShipAttr>[];
14
+ ibonuses: MasterIBonuses;
15
+ equippability: MasterEquippability;
16
+ }
17
+
18
+ export interface NationalityDef {
19
+ id: number;
20
+ ctypes: number[];
21
+ }
22
+
23
+ export interface MasterAttrRule<T> {
24
+ tag: T;
25
+ name: string;
26
+ expr: CompiledEvaler;
27
+ }
28
+
29
+ export interface AttackAnalyzerShipConfig
30
+ extends ShipConditions,
31
+ NightFleetConditions {
32
+ balloons?: number;
33
+ fleet_los_mod?: number | null;
34
+ }
35
+
36
+ export type AirSquadronMode = "Sortie" | "AirDefense";
37
+
38
+ export interface AirSquadronState extends GearVecState, SlotSizeVecState {
39
+ id?: string;
40
+ mode?: AirSquadronMode;
41
+ }
42
+
43
+ export interface BattleConditions {
44
+ org_type: OrgType;
45
+ role: Role;
46
+ ship_index: number;
47
+ fleet_len: number;
48
+ formation: Formation;
49
+ fleet_los_mod: number | null;
50
+ night_conditions: NightFleetConditions;
51
+ }
52
+
53
+ export interface NightConditions {
54
+ player?: NightFleetConditions;
55
+ enemy?: NightFleetConditions;
56
+ }
57
+
58
+ export interface NightFleetConditions {
59
+ night_contact_rank?: ContactRank | null;
60
+ starshell_index?: number | null;
61
+ searchlight_index?: number | null;
62
+ activates_large_searchlight?: boolean;
63
+ }
64
+
65
+ export type GearAttr =
66
+ | "Unknown"
67
+ | "HighAngleMount"
68
+ | "NightFighter"
69
+ | "NightAttacker"
70
+ | "HeavyBomber"
71
+ | "NightRecon"
72
+ | "MainGun"
73
+ | "Radar"
74
+ | "SurfaceRadar"
75
+ | "AirRadar"
76
+ | "DepthChargeProjector"
77
+ | "SynergisticDepthCharge"
78
+ | "AntiSubMortar"
79
+ | "AntiSubWeapon"
80
+ | "ApDepthCharge"
81
+ | "AntiSubAircraft"
82
+ | "LateModelBowTorpedo"
83
+ | "Seaplane"
84
+ | "CbAircraft"
85
+ | "LbAircraft"
86
+ | "JetAircraft"
87
+ | "Fighter"
88
+ | "Recon"
89
+ | "ObservationSeaplane"
90
+ | "CbFighterBomber"
91
+ | "AntiInstDiveBomber"
92
+ | "CbSwordfish"
93
+ | "SemiNightPlane"
94
+ | "HighAltitudeInterceptor";
95
+
96
+ export interface ShipPosition {
97
+ org_type?: OrgType;
98
+ fleet_type?: FleetType;
99
+ fleet_len?: number;
100
+ index?: number;
101
+ }
102
+
103
+ export type Histogram<K extends keyof any, V> = Partial<Record<K, V>>;
104
+
105
+ export interface MasterGear {
106
+ gear_id: number;
107
+ name: string;
108
+ types: GearTypeIdArray;
109
+ special_type?: number;
110
+ max_hp?: number;
111
+ firepower?: number;
112
+ armor?: number;
113
+ torpedo?: number;
114
+ anti_air?: number;
115
+ speed?: number;
116
+ bombing?: number;
117
+ asw?: number;
118
+ los?: number;
119
+ luck?: number;
120
+ accuracy?: number;
121
+ evasion?: number;
122
+ range?: number;
123
+ radius?: number;
124
+ cost?: number;
125
+ improvable?: boolean;
126
+ ship_anti_air_resist?: number;
127
+ fleet_anti_air_resist?: number;
128
+ historical_aircraft_group?: number;
129
+ }
130
+
131
+ export interface CompAnalyzerConfig {
132
+ engagement: Engagement;
133
+ formation: Formation;
134
+ anti_air_cutin: number | null;
135
+ ship_anti_air_resist: number;
136
+ fleet_anti_air_resist: number;
137
+ left_night_fleet_conditions: NightFleetConditions;
138
+ right_night_fleet_conditions: NightFleetConditions;
139
+ }
140
+
141
+ export interface CompNightAnalysis {
142
+ night_cutin: CompNightCutinAnalysis;
143
+ fleet_cutin: FleetCutinReport<NightAttackStyle>[];
144
+ }
145
+
146
+ export interface CompDayAnalysis {
147
+ day_cutin: CompDayCutinAnalysis;
148
+ fleet_cutin: FleetCutinReport<ShellingStyle>[];
149
+ }
150
+
151
+ export interface CompAnalysis {
152
+ day: CompDayAnalysis;
153
+ night: CompNightAnalysis;
154
+ contact: ContactAnalysis;
155
+ anti_air: CompAntiAirAnalysis;
156
+ }
157
+
158
+ export type SpeedGroup = "A" | "B1" | "B2" | "C";
159
+
160
+ export type FhResult<T> = { Ok: T } | { Err: string };
161
+
11
162
  export interface MasterShip {
12
163
  ship_id: number;
13
164
  name: string;
@@ -42,437 +193,58 @@ export interface MasterShip {
42
193
 
43
194
  export type StatInterval = [number | null, number | null];
44
195
 
45
- export interface AttackPower {
46
- precap: number;
47
- is_capped: boolean;
48
- capped: number;
49
- normal: number;
50
- critical: number;
51
- armor_penetration: number;
52
- remaining_ammo_mod: number;
196
+ export interface MasterIBonuses {
197
+ shelling_power: MasterIBonusRule[];
198
+ shelling_accuracy: MasterIBonusRule[];
199
+ shelling_aerial_power: MasterIBonusRule[];
200
+ torpedo_power: MasterIBonusRule[];
201
+ torpedo_accuracy: MasterIBonusRule[];
202
+ torpedo_evasion: MasterIBonusRule[];
203
+ asw_power: MasterIBonusRule[];
204
+ asw_accuracy: MasterIBonusRule[];
205
+ night_power: MasterIBonusRule[];
206
+ night_aerial_power: MasterIBonusRule[];
207
+ night_accuracy: MasterIBonusRule[];
208
+ defense_power: MasterIBonusRule[];
209
+ contact_selection: MasterIBonusRule[];
210
+ fighter_power: MasterIBonusRule[];
211
+ ship_anti_air: MasterIBonusRule[];
212
+ fleet_anti_air: MasterIBonusRule[];
213
+ elos: MasterIBonusRule[];
53
214
  }
54
215
 
55
- export interface AttackPowerParams {
56
- is_cutin: boolean;
57
- basic: number;
58
- cap: number;
59
- precap_mod: AttackPowerModifier;
60
- postcap_mod: AttackPowerModifier;
61
- ap_shell_mod: number | null;
62
- aerial_power: number | null;
63
- proficiency_critical_mod: number;
64
- armor_penetration: number;
65
- remaining_ammo_mod: number;
66
- balloon_mod: number;
67
- special_enemy_mods: SpecialEnemyModifiers;
68
- historical_mod: AttackPowerModifier;
69
- custom_mods: CustomPowerModifiers;
216
+ export interface MasterIBonusRule {
217
+ expr: CompiledEvaler;
218
+ formula: CompiledEvaler;
70
219
  }
71
220
 
72
- export interface AttackReport<T> {
73
- style: T;
74
- proc_rate: number | null;
75
- attack_power: AttackPower | null;
76
- attack_power_params: AttackPowerParams | null;
77
- hits: number;
78
- hit_rate: HitRate | null;
79
- hit_rate_params: HitRateParams | null;
80
- damage: DamageReport | null;
81
- }
221
+ export type ShipAttr =
222
+ | "Unknown"
223
+ | "NightCarrier"
224
+ | "Installation"
225
+ | "RoyalNavy"
226
+ | "Kai2"
227
+ | "TurbineSpeedBonus"
228
+ | "NewModelBoilerSpeedBonus"
229
+ | "Pillbox"
230
+ | "IsolatedIsland"
231
+ | "HarbourSummerPrincess"
232
+ | "SupplyDepot"
233
+ | "NewSupplyDepot"
234
+ | "PtImp"
235
+ | "BattleshipSummerPrincess"
236
+ | "HeavyCruiserSummerPrincess"
237
+ | "AnchorageWaterDemonVacationMode"
238
+ | "FrenchBattleshipPrincess"
239
+ | "DockPrincess"
240
+ | "SummerAircraftCarrierDemon";
82
241
 
83
- export interface AttackAnalysis {
84
- attacker_is_player: boolean;
85
- attacker_ship_id: number;
86
- target_ship_id: number;
87
- historical_params: HistoricalParams;
88
- day: ActionReport<DayPhaseAttackStyle>;
89
- night: ActionReport<NightPhaseAttackStyle>;
90
- closing_torpedo: ActionReport<TorpedoAttackStyle>;
91
- opening_asw: ActionReport<AswAttackStyle>;
92
- support_shelling: ActionReport<SupportShellingStyle>;
242
+ export interface MoveShipPayload {
243
+ current: [string, string, ShipKey];
244
+ target: [string | null, string, ShipKey];
93
245
  }
94
246
 
95
- export type AirWaveType = "Jet" | "LandBase" | "Carrier";
96
-
97
- export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
98
-
99
- export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
100
-
101
- export type OrgType =
102
- | "Single"
103
- | "CarrierTaskForce"
104
- | "SurfaceTaskForce"
105
- | "TransportEscort"
106
- | "EnemySingle"
107
- | "EnemyCombined";
108
-
109
- export interface ShipPosition {
110
- org_type?: OrgType;
111
- fleet_type?: FleetType;
112
- fleet_len?: number;
113
- index?: number;
114
- }
115
-
116
- export type ShipCategory =
117
- | "Battleship"
118
- | "AircraftCarrier"
119
- | "HeavyCruiser"
120
- | "LightCruiser"
121
- | "Destroyer"
122
- | "CoastalDefenseShip"
123
- | "Submarine"
124
- | "AuxiliaryShip";
125
-
126
- export type ShipType =
127
- | "Unknown"
128
- | "DE"
129
- | "DD"
130
- | "CL"
131
- | "CLT"
132
- | "CA"
133
- | "CAV"
134
- | "CVL"
135
- | "FBB"
136
- | "BB"
137
- | "BBV"
138
- | "CV"
139
- | "XBB"
140
- | "SS"
141
- | "SSV"
142
- | "AP"
143
- | "AV"
144
- | "LHA"
145
- | "CVB"
146
- | "AR"
147
- | "AS"
148
- | "CT"
149
- | "AO";
150
-
151
- export interface FleetCutinReport<T> {
152
- cutin: FleetCutin;
153
- rate: number | null;
154
- formation: Formation;
155
- attacks: FleetCutinAttackReport<T>[];
156
- }
157
-
158
- export interface FleetCutinAttackReport<T> extends AttackReport<T> {
159
- index: number;
160
- ship_id: number;
161
- power_mod: number;
162
- }
163
-
164
- export interface DamageReport {
165
- miss_damage_min: number;
166
- miss_damage_max: number;
167
- normal_damage_min: number;
168
- normal_damage_max: number;
169
- critical_damage_min: number;
170
- critical_damage_max: number;
171
- normal_scratch_rate: number;
172
- critical_scratch_rate: number;
173
- damage_density: Histogram<number, number>;
174
- damage_state_density: Histogram<DamageState, number>;
175
- }
176
-
177
- export type AswAttackType = "DepthCharge" | "Aerial";
178
-
179
- export type ShellingType = "Normal" | "Aerial";
180
-
181
- export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
182
-
183
- export type SupportShellingType = ShellingType;
184
-
185
- export type AttackType =
186
- | { t: "Asw"; c: AswAttackType }
187
- | { t: "Shelling"; c: ShellingType }
188
- | { t: "Night"; c: NightAttackType }
189
- | { t: "Torpedo" }
190
- | { t: "SupportShelling"; c: SupportShellingType };
191
-
192
- export type DayPhaseAttackType =
193
- | { t: "Shelling"; c: ShellingType }
194
- | { t: "Asw"; c: AswAttackType };
195
-
196
- export type NightPhaseAttackType =
197
- | { t: "Night"; c: NightAttackType }
198
- | { t: "Asw"; c: AswAttackType };
199
-
200
- export type TorpedoAttackType = null;
201
-
202
- export type GearType =
203
- | "Unknown"
204
- | "SmallMainGun"
205
- | "MediumMainGun"
206
- | "LargeMainGun"
207
- | "SecondaryGun"
208
- | "Torpedo"
209
- | "CbFighter"
210
- | "CbDiveBomber"
211
- | "CbTorpedoBomber"
212
- | "CbRecon"
213
- | "ReconSeaplane"
214
- | "SeaplaneBomber"
215
- | "SmallRadar"
216
- | "LargeRadar"
217
- | "Sonar"
218
- | "DepthCharge"
219
- | "ExtraArmor"
220
- | "Engine"
221
- | "AntiAirShell"
222
- | "ApShell"
223
- | "VtFuze"
224
- | "AntiAirGun"
225
- | "MidgetSubmarine"
226
- | "EmergencyRepair"
227
- | "LandingCraft"
228
- | "Rotorcraft"
229
- | "AntiSubPatrolAircraft"
230
- | "MediumArmor"
231
- | "LargeArmor"
232
- | "Searchlight"
233
- | "SupplyContainer"
234
- | "ShipRepairFacility"
235
- | "SubmarineTorpedo"
236
- | "Starshell"
237
- | "CommandFacility"
238
- | "AviationPersonnel"
239
- | "AntiAirFireDirector"
240
- | "AntiGroundEquipment"
241
- | "LargeMainGun2"
242
- | "ShipPersonnel"
243
- | "LargeSonar"
244
- | "LargeFlyingBoat"
245
- | "LargeSearchlight"
246
- | "CombatRation"
247
- | "Supplies"
248
- | "SeaplaneFighter"
249
- | "AmphibiousTank"
250
- | "LbAttacker"
251
- | "LbFighter"
252
- | "LbRecon"
253
- | "TransportationMaterial"
254
- | "SubmarineEquipment"
255
- | "LandingForce"
256
- | "LargeLbAircraft"
257
- | "SurfaceEquipment"
258
- | "JetFighter"
259
- | "JetFighterBomber"
260
- | "JetTorpedoBomber"
261
- | "JetRecon"
262
- | "LargeRadar2"
263
- | "CbRecon2"
264
- | "SecondaryGun2";
265
-
266
- export type GearCategory =
267
- | "Fighter"
268
- | "Bomber"
269
- | "Recon"
270
- | "MainGun"
271
- | "Secondary"
272
- | "Torpedo"
273
- | "AntiSub"
274
- | "Radar"
275
- | "Landing"
276
- | "Ration"
277
- | "LandBased"
278
- | "Misc";
279
-
280
- export type ContactRank = "Rank1" | "Rank2" | "Rank3";
281
-
282
- export type DayCutin =
283
- | "Zuiun"
284
- | "AirSea"
285
- | "MainMain"
286
- | "MainAp"
287
- | "MainRadar"
288
- | "MainSec"
289
- | "DoubleAttack"
290
- | "FBA"
291
- | "BBA"
292
- | "BA";
293
-
294
- export type NightCutin =
295
- | "MainTorpRadar"
296
- | "TorpLookoutRadar"
297
- | "TorpTsloTorp"
298
- | "TorpTsloDrum"
299
- | "NightZuiun2Radar"
300
- | "NightZuiun2"
301
- | "NightZuiunRadar"
302
- | "NightZuiun"
303
- | "DoubleAttack"
304
- | "TorpTorpMain"
305
- | "TorpTorpTorp"
306
- | "MainMainSec"
307
- | "MainMainMain"
308
- | "SubTorpTorp"
309
- | "SubRadarTorp"
310
- | "Cvci1_25"
311
- | "Cvci1_20"
312
- | "Cvci1_18"
313
- | "Photobomber";
314
-
315
- export type FleetCutin =
316
- | "NelsonTouch"
317
- | "NagatoClassCutin"
318
- | "ColoradoClassCutin"
319
- | "KongouClassCutin"
320
- | "Yamato2ShipCutin"
321
- | "Yamato3ShipCutin";
322
-
323
- export type DayCutinLike = DayCutin | FleetCutin;
324
-
325
- export type NightCutinLike = NightCutin | FleetCutin;
326
-
327
- export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
328
-
329
- export type NodeId = string;
330
-
331
- export interface NodeState {
332
- map?: number;
333
- node?: NodeId;
334
- phase?: number;
335
- debuff?: boolean;
336
- disable_historical_mod?: boolean;
337
- landing_battle?: boolean;
338
- }
339
-
340
- export type Role = "Main" | "Escort";
341
-
342
- export type SpecialEnemyType =
343
- | "None"
344
- | "SoftSkinned"
345
- | "Pillbox"
346
- | "IsolatedIsland"
347
- | "SupplyDepot"
348
- | "NewSupplyDepot"
349
- | "HarbourSummerPrincess"
350
- | "PtImp"
351
- | "BattleshipSummerPrincess"
352
- | "HeavyCruiserSummerPrincess"
353
- | "FrenchBattleshipPrincess"
354
- | "AnchorageWaterDemonVacationMode"
355
- | "DockPrincess"
356
- | "SummerAircraftCarrierDemon";
357
-
358
- export type GearTypeIdArray = [number, number, number, number, number];
359
-
360
- export interface SupportShellingSimulatorParams {
361
- attacker_formation?: Formation;
362
- target_formation?: Formation;
363
- engagement: Engagement;
364
- node_state: NodeState;
365
- }
366
-
367
- export interface FleetState {
368
- id?: string;
369
- len?: number;
370
- s1?: ShipState;
371
- s2?: ShipState;
372
- s3?: ShipState;
373
- s4?: ShipState;
374
- s5?: ShipState;
375
- s6?: ShipState;
376
- s7?: ShipState;
377
- }
378
-
379
- export interface SimulatorResult {
380
- items: SimulatorResultItem[];
381
- sunk_vec: [number, number, number][];
382
- }
383
-
384
- export interface SimulatorResultItem {
385
- id: string;
386
- fleet_type: FleetType;
387
- index: number;
388
- damage_state_map: Record<DamageState, number>;
389
- }
390
-
391
- export interface HitRate {
392
- normal: number;
393
- critical: number;
394
- total: number;
395
- }
396
-
397
- export interface HitRateParams {
398
- accuracy_term: number;
399
- evasion_term: number;
400
- target_morale_mod: number;
401
- critical_rate_constant: number;
402
- critical_percentage_bonus: number;
403
- hit_percentage_bonus: number;
404
- }
405
-
406
- export interface NightContactChance {
407
- rank1: number;
408
- rank2: number;
409
- rank3: number;
410
- }
411
-
412
- export interface CompNightCutinAnalysis {
413
- night_contact_chance: NightContactChance;
414
- ships: ShipNightCutinAnalysis[];
415
- }
416
-
417
- export interface ShipNightCutinAnalysis {
418
- ship_id: number;
419
- index: number;
420
- normal: NightCutinActionReport;
421
- chuuha: NightCutinActionReport;
422
- }
423
-
424
- export interface NightCutinActionReport
425
- extends ActionReport<NightPhaseAttackStyle> {
426
- cutin_term: number | null;
427
- }
428
-
429
- export interface CompDayCutinAnalysis {
430
- rank3_air_state: AirState;
431
- rank2_air_state: AirState;
432
- main_fleet_los_mod: number | null;
433
- escort_fleet_los_mod: number | null;
434
- ships: ShipDayCutinAnalysis[];
435
- }
436
-
437
- export interface ShipDayCutinAnalysis {
438
- ship_id: number;
439
- role: Role;
440
- index: number;
441
- rank3: DayCutinReport;
442
- rank2: DayCutinReport;
443
- }
444
-
445
- export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
446
- observation_term: number | null;
447
- }
448
-
449
- export interface ActionReport<T> {
450
- data: Record<string, AttackReport<T>>;
451
- damage_state_density: Histogram<DamageState, number> | null;
452
- is_active: boolean;
453
- }
454
-
455
- export interface ShipMeta {
456
- id: string;
457
- ship_id: number;
458
- }
459
-
460
- export interface FleetMeta {
461
- id: string;
462
- len: number;
463
- ships: [string, ShipMeta | null][];
464
- }
465
-
466
- export interface CompMeta {
467
- fleets: Record<FleetType, FleetMeta>;
468
- }
469
-
470
- export interface MoveShipPayload {
471
- current: [string, string, ShipKey];
472
- target: [string | null, string, ShipKey];
473
- }
474
-
475
- export type GearVecInput = GearInput[];
247
+ export type GearVecInput = GearInput[];
476
248
 
477
249
  export interface GearInput {
478
250
  gear_id: number;
@@ -512,355 +284,401 @@ export interface EBonuses {
512
284
  range: number;
513
285
  }
514
286
 
515
- export interface MasterIBonuses {
516
- shelling_power: MasterIBonusRule[];
517
- shelling_accuracy: MasterIBonusRule[];
518
- shelling_aerial_power: MasterIBonusRule[];
519
- torpedo_power: MasterIBonusRule[];
520
- torpedo_accuracy: MasterIBonusRule[];
521
- torpedo_evasion: MasterIBonusRule[];
522
- asw_power: MasterIBonusRule[];
523
- asw_accuracy: MasterIBonusRule[];
524
- night_power: MasterIBonusRule[];
525
- night_aerial_power: MasterIBonusRule[];
526
- night_accuracy: MasterIBonusRule[];
527
- defense_power: MasterIBonusRule[];
528
- contact_selection: MasterIBonusRule[];
529
- fighter_power: MasterIBonusRule[];
530
- ship_anti_air: MasterIBonusRule[];
531
- fleet_anti_air: MasterIBonusRule[];
532
- elos: MasterIBonusRule[];
533
- }
534
-
535
- export interface MasterIBonusRule {
536
- expr: CompiledEvaler;
537
- formula: CompiledEvaler;
538
- }
539
-
540
- export interface MasterGear {
541
- gear_id: number;
542
- name: string;
543
- types: GearTypeIdArray;
544
- special_type?: number;
545
- max_hp?: number;
546
- firepower?: number;
547
- armor?: number;
548
- torpedo?: number;
549
- anti_air?: number;
550
- speed?: number;
551
- bombing?: number;
552
- asw?: number;
553
- los?: number;
554
- luck?: number;
555
- accuracy?: number;
556
- evasion?: number;
557
- range?: number;
558
- radius?: number;
559
- cost?: number;
560
- improvable?: boolean;
561
- ship_anti_air_resist?: number;
562
- fleet_anti_air_resist?: number;
563
- historical_aircraft_group?: number;
564
- }
565
-
566
- export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
567
- formation?: Formation;
568
- }
569
-
570
- export interface NodeAttackAnalyzerConfig {
571
- air_state?: AirState;
572
- engagement?: Engagement;
573
- node_state?: NodeState;
574
- left?: NodeAttackAnalyzerShipConfig;
575
- right?: NodeAttackAnalyzerShipConfig;
576
- }
577
-
578
- export interface NodeAttackAnalysis {
579
- left: AttackAnalysis;
580
- right: AttackAnalysis;
581
- shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
582
- night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
583
- }
584
-
585
- export interface CompAnalyzerConfig {
586
- engagement: Engagement;
587
- formation: Formation;
588
- anti_air_cutin: number | null;
589
- ship_anti_air_resist: number;
590
- fleet_anti_air_resist: number;
591
- left_night_fleet_conditions: NightFleetConditions;
592
- right_night_fleet_conditions: NightFleetConditions;
593
- }
594
-
595
- export interface CompNightAnalysis {
596
- night_cutin: CompNightCutinAnalysis;
597
- fleet_cutin: FleetCutinReport<NightAttackStyle>[];
598
- }
599
-
600
- export interface CompDayAnalysis {
601
- day_cutin: CompDayCutinAnalysis;
602
- fleet_cutin: FleetCutinReport<ShellingStyle>[];
603
- }
604
-
605
- export interface CompAnalysis {
606
- day: CompDayAnalysis;
607
- night: CompNightAnalysis;
608
- contact: ContactAnalysis;
609
- anti_air: CompAntiAirAnalysis;
610
- }
611
-
612
- export interface AttackAnalyzerShipConfig
613
- extends ShipConditions,
614
- NightFleetConditions {
615
- balloons?: number;
616
- fleet_los_mod?: number | null;
287
+ export interface SimulatorResult {
288
+ items: SimulatorResultItem[];
289
+ sunk_vec: [number, number, number][];
617
290
  }
618
291
 
619
- export interface AttackPowerModifier {
620
- a?: number;
621
- b?: number;
292
+ export interface SimulatorResultItem {
293
+ id: string;
294
+ fleet_type: FleetType;
295
+ index: number;
296
+ damage_state_map: Record<DamageState, number>;
622
297
  }
623
298
 
624
- export interface SpecialEnemyModifiers {
625
- precap_general_mod: AttackPowerModifier;
626
- stype_mod: AttackPowerModifier;
627
- landing_craft_synergy_mod: AttackPowerModifier;
628
- toku_daihatsu_tank_mod: AttackPowerModifier;
629
- m4a1dd_mod: AttackPowerModifier;
630
- honi_mod: AttackPowerModifier;
631
- toku_daihatsu_chiha_mod: AttackPowerModifier;
632
- toku_daihatsu_chiha_kai_mod: AttackPowerModifier;
633
- t4_tank_group_mod: AttackPowerModifier;
634
- t4_tank_kai_mod: AttackPowerModifier;
635
- postcap_general_mod: AttackPowerModifier;
636
- pt_mod: AttackPowerModifier | null;
299
+ export interface ShellingStyle {
300
+ tag: "ShellingStyle";
301
+ attack_type: ShellingType;
302
+ cutin: DayCutinLike | null;
303
+ power_mod: number;
304
+ accuracy_mod: number;
305
+ hits: number;
637
306
  }
638
307
 
639
- export interface CustomPowerModifiers {
640
- precap_mod?: AttackPowerModifier;
641
- postcap_mod?: AttackPowerModifier;
642
- basic_power_mod?: AttackPowerModifier;
643
- historical_mod?: AttackPowerModifier;
308
+ export interface NightAttackStyle {
309
+ tag: "NightAttackStyle";
310
+ attack_type: NightAttackType;
311
+ cutin: NightCutinLike | null;
312
+ power_mod: number;
313
+ accuracy_mod: number;
314
+ hits: number;
644
315
  }
645
316
 
646
- export interface GearState {
647
- id?: string;
648
- gear_id: number;
649
- exp?: number;
650
- stars?: number;
317
+ export interface AswAttackStyle {
318
+ tag: "AswAttackStyle";
319
+ attack_type: AswAttackType;
651
320
  }
652
321
 
653
- export interface GearVecState {
654
- g1?: GearState;
655
- g2?: GearState;
656
- g3?: GearState;
657
- g4?: GearState;
658
- g5?: GearState;
659
- gx?: GearState;
322
+ export interface TorpedoAttackStyle {
323
+ tag: "TorpedoAttackStyle";
324
+ attack_type: TorpedoAttackType;
660
325
  }
661
326
 
662
- export interface ShipConditions extends ShipPosition {
663
- formation?: Formation;
664
- amagiri_index?: number | null;
327
+ export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
328
+
329
+ export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
330
+
331
+ export interface SupportShellingStyle {
332
+ tag: "SupportShellingStyle";
333
+ attack_type: SupportShellingType;
665
334
  }
666
335
 
667
- export interface MasterData extends MasterBattleDefinitions {
668
- created_at: number;
669
- gears: MasterGear[];
670
- gear_attrs: MasterAttrRule<GearAttr>[];
671
- ships: MasterShip[];
672
- ship_attrs: MasterAttrRule<ShipAttr>[];
673
- ibonuses: MasterIBonuses;
674
- equippability: MasterEquippability;
336
+ export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
337
+
338
+ export interface ShipMeta {
339
+ id: string;
340
+ ship_id: number;
675
341
  }
676
342
 
677
- export interface NationalityDef {
678
- id: number;
679
- ctypes: number[];
343
+ export interface FleetMeta {
344
+ id: string;
345
+ len: number;
346
+ ships: [string, ShipMeta | null][];
680
347
  }
681
348
 
682
- export interface MasterAttrRule<T> {
683
- tag: T;
684
- name: string;
685
- expr: CompiledEvaler;
349
+ export interface CompMeta {
350
+ fleets: Record<FleetType, FleetMeta>;
686
351
  }
687
352
 
688
- export interface ShipAnalyzerConfig {
689
- air_state?: AirState;
690
- engagement?: Engagement;
691
- left?: AttackAnalyzerShipConfig;
692
- right?: AttackAnalyzerShipConfig;
353
+ export interface OrgState {
354
+ id?: string;
355
+ f1?: FleetState;
356
+ f2?: FleetState;
357
+ f3?: FleetState;
358
+ f4?: FleetState;
359
+ a1?: AirSquadronState;
360
+ a2?: AirSquadronState;
361
+ a3?: AirSquadronState;
362
+ hq_level?: number;
363
+ org_type?: OrgType;
364
+ sortie?: FleetKey;
365
+ route_sup?: FleetKey;
366
+ boss_sup?: FleetKey;
693
367
  }
694
368
 
695
- export interface BattleConditions {
696
- org_type: OrgType;
697
- role: Role;
698
- ship_index: number;
699
- fleet_len: number;
700
- formation: Formation;
701
- fleet_los_mod: number | null;
702
- night_conditions: NightFleetConditions;
369
+ export type FleetKey = "f1" | "f2" | "f3" | "f4";
370
+
371
+ export type OrgType =
372
+ | "Single"
373
+ | "CarrierTaskForce"
374
+ | "SurfaceTaskForce"
375
+ | "TransportEscort"
376
+ | "EnemySingle"
377
+ | "EnemyCombined";
378
+
379
+ export interface SlotSizeVecState {
380
+ ss1?: number;
381
+ ss2?: number;
382
+ ss3?: number;
383
+ ss4?: number;
384
+ ss5?: number;
703
385
  }
704
386
 
705
- export interface NightConditions {
706
- player?: NightFleetConditions;
707
- enemy?: NightFleetConditions;
387
+ export interface ShipState extends GearVecState, SlotSizeVecState {
388
+ id?: string;
389
+ ship_id: number;
390
+ level?: number;
391
+ current_hp?: number;
392
+ morale?: number;
393
+ ammo?: number;
394
+ fuel?: number;
395
+ max_hp_mod?: number;
396
+ firepower_mod?: number;
397
+ torpedo_mod?: number;
398
+ armor_mod?: number;
399
+ anti_air_mod?: number;
400
+ evasion_mod?: number;
401
+ asw_mod?: number;
402
+ los_mod?: number;
403
+ luck_mod?: number;
404
+ day_gunfit_accuracy?: number;
405
+ night_gunfit_accuracy?: number;
406
+ custom_power_mods?: CustomPowerModifiers;
708
407
  }
709
408
 
710
- export interface NightFleetConditions {
711
- night_contact_rank?: ContactRank | null;
712
- starshell_index?: number | null;
713
- searchlight_index?: number | null;
714
- activates_large_searchlight?: boolean;
409
+ export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
410
+
411
+ export type Side = "Player" | "Enemy";
412
+
413
+ export type Align = "Left" | "Right";
414
+
415
+ export type GearTypeIdArray = [number, number, number, number, number];
416
+
417
+ export interface SupportShellingSimulatorParams {
418
+ attacker_formation?: Formation;
419
+ target_formation?: Formation;
420
+ engagement: Engagement;
421
+ node_state: NodeState;
715
422
  }
716
423
 
717
- export type GearAttr =
718
- | "Unknown"
719
- | "HighAngleMount"
720
- | "NightFighter"
721
- | "NightAttacker"
722
- | "HeavyBomber"
723
- | "NightRecon"
724
- | "MainGun"
725
- | "Radar"
726
- | "SurfaceRadar"
727
- | "AirRadar"
728
- | "DepthChargeProjector"
729
- | "SynergisticDepthCharge"
730
- | "AntiSubMortar"
731
- | "AntiSubWeapon"
732
- | "ApDepthCharge"
733
- | "AntiSubAircraft"
734
- | "LateModelBowTorpedo"
735
- | "Seaplane"
736
- | "CbAircraft"
737
- | "LbAircraft"
738
- | "JetAircraft"
739
- | "Fighter"
740
- | "Recon"
741
- | "ObservationSeaplane"
742
- | "CbFighterBomber"
743
- | "AntiInstDiveBomber"
744
- | "CbSwordfish"
745
- | "SemiNightPlane"
746
- | "HighAltitudeInterceptor";
424
+ export type SingleFormation =
425
+ | "LineAhead"
426
+ | "DoubleLine"
427
+ | "Diamond"
428
+ | "Echelon"
429
+ | "LineAbreast"
430
+ | "Vanguard";
747
431
 
748
- export type ShipAttr =
749
- | "Unknown"
750
- | "NightCarrier"
751
- | "Installation"
752
- | "RoyalNavy"
753
- | "Kai2"
754
- | "TurbineSpeedBonus"
755
- | "NewModelBoilerSpeedBonus"
432
+ export type CombinedFormation =
433
+ | "Cruising1"
434
+ | "Cruising2"
435
+ | "Cruising3"
436
+ | "Cruising4";
437
+
438
+ export type Formation = SingleFormation | CombinedFormation;
439
+
440
+ export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
441
+
442
+ export type Role = "Main" | "Escort";
443
+
444
+ export type SpecialEnemyType =
445
+ | "None"
446
+ | "SoftSkinned"
756
447
  | "Pillbox"
757
448
  | "IsolatedIsland"
758
- | "HarbourSummerPrincess"
759
449
  | "SupplyDepot"
760
450
  | "NewSupplyDepot"
451
+ | "HarbourSummerPrincess"
761
452
  | "PtImp"
762
453
  | "BattleshipSummerPrincess"
763
454
  | "HeavyCruiserSummerPrincess"
764
- | "AnchorageWaterDemonVacationMode"
765
455
  | "FrenchBattleshipPrincess"
456
+ | "AnchorageWaterDemonVacationMode"
766
457
  | "DockPrincess"
767
458
  | "SummerAircraftCarrierDemon";
768
459
 
769
- export type FhResult<T> = { Ok: T } | { Err: string };
460
+ export interface HitRate {
461
+ normal: number;
462
+ critical: number;
463
+ total: number;
464
+ }
465
+
466
+ export interface HitRateParams {
467
+ accuracy_term: number;
468
+ evasion_term: number;
469
+ target_morale_mod: number;
470
+ critical_rate_constant: number;
471
+ critical_percentage_bonus: number;
472
+ hit_percentage_bonus: number;
473
+ }
474
+
475
+ export interface AttackPower {
476
+ precap: number;
477
+ is_capped: boolean;
478
+ capped: number;
479
+ normal: number;
480
+ critical: number;
481
+ armor_penetration: number;
482
+ remaining_ammo_mod: number;
483
+ }
484
+
485
+ export interface AttackPowerParams {
486
+ is_cutin: boolean;
487
+ basic: number;
488
+ cap: number;
489
+ precap_mod: AttackPowerModifier;
490
+ postcap_mod: AttackPowerModifier;
491
+ ap_shell_mod: number | null;
492
+ aerial_power: number | null;
493
+ proficiency_critical_mod: number;
494
+ armor_penetration: number;
495
+ remaining_ammo_mod: number;
496
+ balloon_mod: number;
497
+ special_enemy_mods: SpecialEnemyModifiers;
498
+ historical_mod: AttackPowerModifier;
499
+ custom_mods: CustomPowerModifiers;
500
+ }
501
+
502
+ export interface CompAntiAirAnalysis {
503
+ fleet_adjusted_anti_air: number;
504
+ ships: AntiAirReport[];
505
+ anti_air_cutin_chance: [number, number][];
506
+ }
507
+
508
+ export interface AntiAirReport {
509
+ ship_id: number;
510
+ role: Role;
511
+ index: number;
512
+ adjusted_anti_air: number | null;
513
+ proportional_shotdown_rate: number | null;
514
+ fixed_shotdown_number: number | null;
515
+ guaranteed: number | null;
516
+ anti_air_cutin_chance: [number, number][];
517
+ anti_air_propellant_barrage_chance: number | null;
518
+ }
519
+
520
+ export interface AttackPowerModifier {
521
+ a?: number;
522
+ b?: number;
523
+ }
770
524
 
771
- export interface ContactAnalysis {
772
- single: DayContactChance[] | null;
773
- combined: DayContactChance[] | null;
525
+ export interface SpecialEnemyModifiers {
526
+ precap_general_mod: AttackPowerModifier;
527
+ stype_mod: AttackPowerModifier;
528
+ landing_craft_synergy_mod: AttackPowerModifier;
529
+ toku_daihatsu_tank_mod: AttackPowerModifier;
530
+ m4a1dd_mod: AttackPowerModifier;
531
+ honi_mod: AttackPowerModifier;
532
+ toku_daihatsu_chiha_mod: AttackPowerModifier;
533
+ toku_daihatsu_chiha_kai_mod: AttackPowerModifier;
534
+ t4_tank_group_mod: AttackPowerModifier;
535
+ t4_tank_kai_mod: AttackPowerModifier;
536
+ postcap_general_mod: AttackPowerModifier;
537
+ pt_mod: AttackPowerModifier | null;
774
538
  }
775
539
 
776
- export interface DayContactChance {
777
- air_state: AirState;
778
- trigger_rate: number;
779
- rank3: number;
780
- rank2: number;
781
- rank1: number;
782
- total: number;
540
+ export interface CustomPowerModifiers {
541
+ precap_mod?: AttackPowerModifier;
542
+ postcap_mod?: AttackPowerModifier;
543
+ basic_power_mod?: AttackPowerModifier;
544
+ historical_mod?: AttackPowerModifier;
783
545
  }
784
546
 
785
- export type AirSquadronMode = "Sortie" | "AirDefense";
547
+ export interface FormationCombatModifiersDef {
548
+ power_mod?: number;
549
+ accuracy_mod?: number;
550
+ evasion_mod?: number;
551
+ }
786
552
 
787
- export interface AirSquadronState extends GearVecState, SlotSizeVecState {
788
- id?: string;
789
- mode?: AirSquadronMode;
553
+ export interface FormationDef {
554
+ tag: Formation;
555
+ protection_rate: number | null;
556
+ fleet_anti_air_mod: number;
557
+ shelling: FormationCombatModifiersDef;
558
+ torpedo: FormationCombatModifiersDef;
559
+ asw: FormationCombatModifiersDef;
560
+ night: FormationCombatModifiersDef;
561
+ support_shelling: FormationCombatModifiersDef;
790
562
  }
791
563
 
792
- export interface ShellingStyle {
793
- tag: "ShellingStyle";
794
- attack_type: ShellingType;
795
- cutin: DayCutinLike | null;
796
- power_mod: number;
797
- accuracy_mod: number;
564
+ export type NestedFormationDef =
565
+ | FormationDef
566
+ | { top_half: FormationDef; bottom_half: FormationDef };
567
+
568
+ export interface AntiAirCutinDef {
569
+ id: number;
570
+ type_factor: number | null;
571
+ multiplier: number | null;
572
+ guaranteed: number | null;
573
+ sequential: boolean | null;
574
+ }
575
+
576
+ export interface DayCutinDef {
577
+ tag: DayCutin;
798
578
  hits: number;
579
+ type_factor: number | null;
580
+ power_mod: number | null;
581
+ accuracy_mod: number | null;
799
582
  }
800
583
 
801
- export interface NightAttackStyle {
802
- tag: "NightAttackStyle";
803
- attack_type: NightAttackType;
804
- cutin: NightCutinLike | null;
805
- power_mod: number;
584
+ export interface HistoricalBonusDef {
585
+ map?: number;
586
+ node?: CompiledEvaler;
587
+ phase?: number;
588
+ debuff?: boolean;
589
+ ship?: CompiledEvaler;
590
+ enemy?: CompiledEvaler;
591
+ power_mod?: AttackPowerModifier;
592
+ armor_penetration?: number;
593
+ accuracy_mod?: number;
594
+ evasion_mod?: number;
595
+ }
596
+
597
+ export interface HistoricalParams {
598
+ power_mod: AttackPowerModifier;
599
+ armor_penetration: number;
806
600
  accuracy_mod: number;
807
- hits: number;
601
+ target_evasion_mod: number;
808
602
  }
809
603
 
810
- export interface AswAttackStyle {
811
- tag: "AswAttackStyle";
812
- attack_type: AswAttackType;
604
+ export interface NightCutinDef {
605
+ tag: NightCutin;
606
+ hits: number;
607
+ type_factor: number | null;
608
+ power_mod: number | null;
609
+ accuracy_mod: number | null;
813
610
  }
814
611
 
815
- export interface TorpedoAttackStyle {
816
- tag: "TorpedoAttackStyle";
817
- attack_type: TorpedoAttackType;
612
+ export interface BattleDefinitions {
613
+ formation: Record<Formation, NestedFormationDef>;
614
+ anti_air_cutin: Record<number, AntiAirCutinDef>;
615
+ day_cutin: Record<DayCutin, DayCutinDef>;
616
+ night_cutin: Record<NightCutin, NightCutinDef>;
617
+ historical_bonuses: HistoricalBonusDef[];
818
618
  }
819
619
 
820
- export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
620
+ export type ContactRank = "Rank1" | "Rank2" | "Rank3";
821
621
 
822
- export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
622
+ export type DayCutin =
623
+ | "Zuiun"
624
+ | "AirSea"
625
+ | "MainMain"
626
+ | "MainAp"
627
+ | "MainRadar"
628
+ | "MainSec"
629
+ | "DoubleAttack"
630
+ | "FBA"
631
+ | "BBA"
632
+ | "BA";
823
633
 
824
- export interface SupportShellingStyle {
825
- tag: "SupportShellingStyle";
826
- attack_type: SupportShellingType;
827
- }
634
+ export type NightCutin =
635
+ | "MainTorpRadar"
636
+ | "TorpLookoutRadar"
637
+ | "TorpTsloTorp"
638
+ | "TorpTsloDrum"
639
+ | "NightZuiun2Radar"
640
+ | "NightZuiun2"
641
+ | "NightZuiunRadar"
642
+ | "NightZuiun"
643
+ | "DoubleAttack"
644
+ | "TorpTorpMain"
645
+ | "TorpTorpTorp"
646
+ | "MainMainSec"
647
+ | "MainMainMain"
648
+ | "SubTorpTorp"
649
+ | "SubRadarTorp"
650
+ | "Cvci1_25"
651
+ | "Cvci1_20"
652
+ | "Cvci1_18"
653
+ | "Photobomber";
828
654
 
829
- export interface SlotSizeVecState {
830
- ss1?: number;
831
- ss2?: number;
832
- ss3?: number;
833
- ss4?: number;
834
- ss5?: number;
835
- }
655
+ export type FleetCutin =
656
+ | "NelsonTouch"
657
+ | "NagatoClassCutin"
658
+ | "ColoradoClassCutin"
659
+ | "KongouClassCutin"
660
+ | "Yamato2ShipCutin"
661
+ | "Yamato3ShipCutin";
836
662
 
837
- export interface ShipState extends GearVecState, SlotSizeVecState {
838
- id?: string;
839
- ship_id: number;
840
- level?: number;
841
- current_hp?: number;
842
- morale?: number;
843
- ammo?: number;
844
- fuel?: number;
845
- max_hp_mod?: number;
846
- firepower_mod?: number;
847
- torpedo_mod?: number;
848
- armor_mod?: number;
849
- anti_air_mod?: number;
850
- evasion_mod?: number;
851
- asw_mod?: number;
852
- los_mod?: number;
853
- luck_mod?: number;
854
- day_gunfit_accuracy?: number;
855
- night_gunfit_accuracy?: number;
856
- custom_power_mods?: CustomPowerModifiers;
857
- }
663
+ export type DayCutinLike = DayCutin | FleetCutin;
858
664
 
859
- export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
665
+ export type NightCutinLike = NightCutin | FleetCutin;
860
666
 
861
- export type SlotSizeVec = (number | null)[];
667
+ export interface GearState {
668
+ id?: string;
669
+ gear_id: number;
670
+ exp?: number;
671
+ stars?: number;
672
+ }
862
673
 
863
- export type Histogram<K extends keyof any, V> = Partial<Record<K, V>>;
674
+ export interface GearVecState {
675
+ g1?: GearState;
676
+ g2?: GearState;
677
+ g3?: GearState;
678
+ g4?: GearState;
679
+ g5?: GearState;
680
+ gx?: GearState;
681
+ }
864
682
 
865
683
  export interface MasterBattleDefinitions {
866
684
  formation: NestedFormationDef[];
@@ -870,55 +688,88 @@ export interface MasterBattleDefinitions {
870
688
  historical_bonuses?: HistoricalBonusDef[];
871
689
  }
872
690
 
873
- export type CompiledEvaler = string;
691
+ export interface AttackReport<T> {
692
+ style: T;
693
+ proc_rate: number | null;
694
+ attack_power: AttackPower | null;
695
+ attack_power_params: AttackPowerParams | null;
696
+ hits: number;
697
+ hit_rate: HitRate | null;
698
+ hit_rate_params: HitRateParams | null;
699
+ damage: DamageReport | null;
700
+ }
874
701
 
875
- export interface EquippabilityRule {
876
- ship: CompiledEvaler;
877
- keys?: string[];
878
- include?: string;
879
- exclude?: string;
702
+ export interface ActionReport<T> {
703
+ data: Record<string, AttackReport<T>>;
704
+ damage_state_density: Histogram<DamageState, number> | null;
705
+ is_active: boolean;
706
+ }
707
+
708
+ export interface FleetState {
709
+ id?: string;
710
+ len?: number;
711
+ s1?: ShipState;
712
+ s2?: ShipState;
713
+ s3?: ShipState;
714
+ s4?: ShipState;
715
+ s5?: ShipState;
716
+ s6?: ShipState;
717
+ s7?: ShipState;
718
+ }
719
+
720
+ export type NodeId = string;
721
+
722
+ export interface NodeState {
723
+ map?: number;
724
+ node?: NodeId;
725
+ phase?: number;
726
+ debuff?: boolean;
727
+ disable_historical_mod?: boolean;
728
+ landing_battle?: boolean;
880
729
  }
881
730
 
882
- export interface MasterEquippability {
883
- equip_stype: EquipStype[];
884
- equip_exslot: number[];
885
- equip_ship: MstEquipShip[];
886
- equip_exslot_ship: Record<number, MstEquipExslotShip>;
887
- rules: EquippabilityRule[];
731
+ export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
732
+ formation?: Formation;
888
733
  }
889
734
 
890
- export interface MstEquipExslotShip {
891
- api_ctypes: Record<number, number> | null;
892
- api_ship_ids: Record<number, number> | null;
893
- api_stypes: Record<number, number> | null;
735
+ export interface NodeAttackAnalyzerConfig {
736
+ air_state?: AirState;
737
+ engagement?: Engagement;
738
+ node_state?: NodeState;
739
+ left?: NodeAttackAnalyzerShipConfig;
740
+ right?: NodeAttackAnalyzerShipConfig;
894
741
  }
895
742
 
896
- export interface MstEquipShip {
897
- api_ship_id: number;
898
- api_equip_type: number[];
743
+ export interface NodeAttackAnalysis {
744
+ left: AttackAnalysis;
745
+ right: AttackAnalysis;
746
+ shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
747
+ night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
899
748
  }
900
749
 
901
- export interface EquipStype {
902
- id: number;
903
- equip_type: number[];
750
+ export interface FleetCutinReport<T> {
751
+ cutin: FleetCutin;
752
+ rate: number | null;
753
+ formation: Formation;
754
+ attacks: FleetCutinAttackReport<T>[];
904
755
  }
905
756
 
906
- export interface CompAntiAirAnalysis {
907
- fleet_adjusted_anti_air: number;
908
- ships: AntiAirReport[];
909
- anti_air_cutin_chance: [number, number][];
757
+ export interface FleetCutinAttackReport<T> extends AttackReport<T> {
758
+ index: number;
759
+ ship_id: number;
760
+ power_mod: number;
910
761
  }
911
762
 
912
- export interface AntiAirReport {
913
- ship_id: number;
914
- role: Role;
915
- index: number;
916
- adjusted_anti_air: number | null;
917
- proportional_shotdown_rate: number | null;
918
- fixed_shotdown_number: number | null;
919
- guaranteed: number | null;
920
- anti_air_cutin_chance: [number, number][];
921
- anti_air_propellant_barrage_chance: number | null;
763
+ export interface AttackAnalysis {
764
+ attacker_is_player: boolean;
765
+ attacker_ship_id: number;
766
+ target_ship_id: number;
767
+ historical_params: HistoricalParams;
768
+ day: ActionReport<DayPhaseAttackStyle>;
769
+ night: ActionReport<NightPhaseAttackStyle>;
770
+ closing_torpedo: ActionReport<TorpedoAttackStyle>;
771
+ opening_asw: ActionReport<AswAttackStyle>;
772
+ support_shelling: ActionReport<SupportShellingStyle>;
922
773
  }
923
774
 
924
775
  export type AirState =
@@ -930,188 +781,291 @@ export type AirState =
930
781
 
931
782
  export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
932
783
 
933
- export interface FormationCombatModifiersDef {
934
- power_mod?: number;
935
- accuracy_mod?: number;
936
- evasion_mod?: number;
784
+ export type AswAttackType = "DepthCharge" | "Aerial";
785
+
786
+ export type ShellingType = "Normal" | "Aerial";
787
+
788
+ export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
789
+
790
+ export type SupportShellingType = ShellingType;
791
+
792
+ export type AttackType =
793
+ | { t: "Asw"; c: AswAttackType }
794
+ | { t: "Shelling"; c: ShellingType }
795
+ | { t: "Night"; c: NightAttackType }
796
+ | { t: "Torpedo" }
797
+ | { t: "SupportShelling"; c: SupportShellingType };
798
+
799
+ export type DayPhaseAttackType =
800
+ | { t: "Shelling"; c: ShellingType }
801
+ | { t: "Asw"; c: AswAttackType };
802
+
803
+ export type NightPhaseAttackType =
804
+ | { t: "Night"; c: NightAttackType }
805
+ | { t: "Asw"; c: AswAttackType };
806
+
807
+ export type TorpedoAttackType = null;
808
+
809
+ export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
810
+
811
+ export type GearType =
812
+ | "Unknown"
813
+ | "SmallMainGun"
814
+ | "MediumMainGun"
815
+ | "LargeMainGun"
816
+ | "SecondaryGun"
817
+ | "Torpedo"
818
+ | "CbFighter"
819
+ | "CbDiveBomber"
820
+ | "CbTorpedoBomber"
821
+ | "CbRecon"
822
+ | "ReconSeaplane"
823
+ | "SeaplaneBomber"
824
+ | "SmallRadar"
825
+ | "LargeRadar"
826
+ | "Sonar"
827
+ | "DepthCharge"
828
+ | "ExtraArmor"
829
+ | "Engine"
830
+ | "AntiAirShell"
831
+ | "ApShell"
832
+ | "VtFuze"
833
+ | "AntiAirGun"
834
+ | "MidgetSubmarine"
835
+ | "EmergencyRepair"
836
+ | "LandingCraft"
837
+ | "Rotorcraft"
838
+ | "AntiSubPatrolAircraft"
839
+ | "MediumArmor"
840
+ | "LargeArmor"
841
+ | "Searchlight"
842
+ | "SupplyContainer"
843
+ | "ShipRepairFacility"
844
+ | "SubmarineTorpedo"
845
+ | "Starshell"
846
+ | "CommandFacility"
847
+ | "AviationPersonnel"
848
+ | "AntiAirFireDirector"
849
+ | "AntiGroundEquipment"
850
+ | "LargeMainGun2"
851
+ | "ShipPersonnel"
852
+ | "LargeSonar"
853
+ | "LargeFlyingBoat"
854
+ | "LargeSearchlight"
855
+ | "CombatRation"
856
+ | "Supplies"
857
+ | "SeaplaneFighter"
858
+ | "AmphibiousTank"
859
+ | "LbAttacker"
860
+ | "LbFighter"
861
+ | "LbRecon"
862
+ | "TransportationMaterial"
863
+ | "SubmarineEquipment"
864
+ | "LandingForce"
865
+ | "LargeLbAircraft"
866
+ | "SurfaceEquipment"
867
+ | "JetFighter"
868
+ | "JetFighterBomber"
869
+ | "JetTorpedoBomber"
870
+ | "JetRecon"
871
+ | "LargeRadar2"
872
+ | "CbRecon2"
873
+ | "SecondaryGun2";
874
+
875
+ export type GearCategory =
876
+ | "Fighter"
877
+ | "Bomber"
878
+ | "Recon"
879
+ | "MainGun"
880
+ | "Secondary"
881
+ | "Torpedo"
882
+ | "AntiSub"
883
+ | "Radar"
884
+ | "Landing"
885
+ | "Ration"
886
+ | "LandBased"
887
+ | "Misc";
888
+
889
+ export interface ShipConditions extends ShipPosition {
890
+ formation?: Formation;
891
+ amagiri_index?: number | null;
937
892
  }
938
893
 
939
- export interface FormationDef {
940
- tag: Formation;
941
- protection_rate: number | null;
942
- fleet_anti_air_mod: number;
943
- shelling: FormationCombatModifiersDef;
944
- torpedo: FormationCombatModifiersDef;
945
- asw: FormationCombatModifiersDef;
946
- night: FormationCombatModifiersDef;
947
- support_shelling: FormationCombatModifiersDef;
894
+ export interface NightContactChance {
895
+ rank1: number;
896
+ rank2: number;
897
+ rank3: number;
948
898
  }
949
899
 
950
- export type NestedFormationDef =
951
- | FormationDef
952
- | { top_half: FormationDef; bottom_half: FormationDef };
900
+ export interface CompNightCutinAnalysis {
901
+ night_contact_chance: NightContactChance;
902
+ ships: ShipNightCutinAnalysis[];
903
+ }
953
904
 
954
- export interface AntiAirCutinDef {
955
- id: number;
956
- type_factor: number | null;
957
- multiplier: number | null;
958
- guaranteed: number | null;
959
- sequential: boolean | null;
905
+ export interface ShipNightCutinAnalysis {
906
+ ship_id: number;
907
+ index: number;
908
+ normal: NightCutinActionReport;
909
+ chuuha: NightCutinActionReport;
960
910
  }
961
911
 
962
- export interface DayCutinDef {
963
- tag: DayCutin;
964
- hits: number;
965
- type_factor: number | null;
966
- power_mod: number | null;
967
- accuracy_mod: number | null;
912
+ export interface NightCutinActionReport
913
+ extends ActionReport<NightPhaseAttackStyle> {
914
+ cutin_term: number | null;
968
915
  }
969
916
 
970
- export interface HistoricalBonusDef {
971
- map?: number;
972
- node?: CompiledEvaler;
973
- phase?: number;
974
- debuff?: boolean;
975
- ship?: CompiledEvaler;
976
- enemy?: CompiledEvaler;
977
- power_mod?: AttackPowerModifier;
978
- armor_penetration?: number;
979
- accuracy_mod?: number;
980
- evasion_mod?: number;
917
+ export interface CompDayCutinAnalysis {
918
+ rank3_air_state: AirState;
919
+ rank2_air_state: AirState;
920
+ main_fleet_los_mod: number | null;
921
+ escort_fleet_los_mod: number | null;
922
+ ships: ShipDayCutinAnalysis[];
981
923
  }
982
924
 
983
- export interface HistoricalParams {
984
- power_mod: AttackPowerModifier;
985
- armor_penetration: number;
986
- accuracy_mod: number;
987
- target_evasion_mod: number;
925
+ export interface ShipDayCutinAnalysis {
926
+ ship_id: number;
927
+ role: Role;
928
+ index: number;
929
+ rank3: DayCutinReport;
930
+ rank2: DayCutinReport;
931
+ }
932
+
933
+ export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
934
+ observation_term: number | null;
935
+ }
936
+
937
+ export interface DamageReport {
938
+ miss_damage_min: number;
939
+ miss_damage_max: number;
940
+ normal_damage_min: number;
941
+ normal_damage_max: number;
942
+ critical_damage_min: number;
943
+ critical_damage_max: number;
944
+ normal_scratch_rate: number;
945
+ critical_scratch_rate: number;
946
+ damage_density: Histogram<number, number>;
947
+ damage_state_density: Histogram<DamageState, number>;
988
948
  }
989
949
 
990
- export interface NightCutinDef {
991
- tag: NightCutin;
992
- hits: number;
993
- type_factor: number | null;
994
- power_mod: number | null;
995
- accuracy_mod: number | null;
950
+ export interface ContactAnalysis {
951
+ single: DayContactChance[] | null;
952
+ combined: DayContactChance[] | null;
996
953
  }
997
954
 
998
- export interface BattleDefinitions {
999
- formation: Record<Formation, NestedFormationDef>;
1000
- anti_air_cutin: Record<number, AntiAirCutinDef>;
1001
- day_cutin: Record<DayCutin, DayCutinDef>;
1002
- night_cutin: Record<NightCutin, NightCutinDef>;
1003
- historical_bonuses: HistoricalBonusDef[];
955
+ export interface DayContactChance {
956
+ air_state: AirState;
957
+ trigger_rate: number;
958
+ rank3: number;
959
+ rank2: number;
960
+ rank1: number;
961
+ total: number;
1004
962
  }
1005
963
 
1006
- export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
964
+ export type AirWaveType = "Jet" | "LandBase" | "Carrier";
1007
965
 
1008
- export type SingleFormation =
1009
- | "LineAhead"
1010
- | "DoubleLine"
1011
- | "Diamond"
1012
- | "Echelon"
1013
- | "LineAbreast"
1014
- | "Vanguard";
966
+ export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
1015
967
 
1016
- export type CombinedFormation =
1017
- | "Cruising1"
1018
- | "Cruising2"
1019
- | "Cruising3"
1020
- | "Cruising4";
968
+ export type ShipCategory =
969
+ | "Battleship"
970
+ | "AircraftCarrier"
971
+ | "HeavyCruiser"
972
+ | "LightCruiser"
973
+ | "Destroyer"
974
+ | "CoastalDefenseShip"
975
+ | "Submarine"
976
+ | "AuxiliaryShip";
1021
977
 
1022
- export type Formation = SingleFormation | CombinedFormation;
978
+ export type ShipType =
979
+ | "Unknown"
980
+ | "DE"
981
+ | "DD"
982
+ | "CL"
983
+ | "CLT"
984
+ | "CA"
985
+ | "CAV"
986
+ | "CVL"
987
+ | "FBB"
988
+ | "BB"
989
+ | "BBV"
990
+ | "CV"
991
+ | "XBB"
992
+ | "SS"
993
+ | "SSV"
994
+ | "AP"
995
+ | "AV"
996
+ | "LHA"
997
+ | "CVB"
998
+ | "AR"
999
+ | "AS"
1000
+ | "CT"
1001
+ | "AO";
1023
1002
 
1024
- export interface OrgState {
1025
- id?: string;
1026
- f1?: FleetState;
1027
- f2?: FleetState;
1028
- f3?: FleetState;
1029
- f4?: FleetState;
1030
- a1?: AirSquadronState;
1031
- a2?: AirSquadronState;
1032
- a3?: AirSquadronState;
1033
- hq_level?: number;
1034
- org_type?: OrgType;
1035
- sortie?: FleetKey;
1036
- route_sup?: FleetKey;
1037
- boss_sup?: FleetKey;
1003
+ export type SlotSizeVec = (number | null)[];
1004
+
1005
+ export interface EquippabilityRule {
1006
+ ship: CompiledEvaler;
1007
+ keys?: string[];
1008
+ include?: string;
1009
+ exclude?: string;
1038
1010
  }
1039
1011
 
1040
- export type FleetKey = "f1" | "f2" | "f3" | "f4";
1012
+ export interface MasterEquippability {
1013
+ equip_stype: Record<number, Record<number, number>>;
1014
+ equip_exslot: number[];
1015
+ equip_ship: Record<number, MstEquipShip>;
1016
+ equip_exslot_ship: Record<number, MstEquipExslotShip>;
1017
+ rules: EquippabilityRule[];
1018
+ }
1041
1019
 
1042
- export type Side = "Player" | "Enemy";
1020
+ export interface MstEquipExslotShip {
1021
+ api_ctypes: Record<number, number> | null;
1022
+ api_ship_ids: Record<number, number> | null;
1023
+ api_stypes: Record<number, number> | null;
1024
+ }
1043
1025
 
1044
- export type Align = "Left" | "Right";
1026
+ export type MstEquipShip = Record<number, MstEquipShipValue>;
1045
1027
 
1046
- export type SpeedGroup = "A" | "B1" | "B2" | "C";
1028
+ export type MstEquipShipValue = "Null" | { GearIds: number[] };
1029
+
1030
+ export interface EquipStype {
1031
+ id: number;
1032
+ equip_type: number[];
1033
+ }
1034
+
1035
+ export interface ShipAnalyzerConfig {
1036
+ air_state?: AirState;
1037
+ engagement?: Engagement;
1038
+ left?: AttackAnalyzerShipConfig;
1039
+ right?: AttackAnalyzerShipConfig;
1040
+ }
1047
1041
 
1048
- /**
1049
- */
1050
1042
  export class AirSquadron {
1043
+ private constructor();
1051
1044
  free(): void;
1052
- /**
1053
- * @param {string} key
1054
- * @returns {Gear | undefined}
1055
- */
1045
+ [Symbol.dispose](): void;
1056
1046
  get_gear(key: string): Gear | undefined;
1057
- /**
1058
- * @param {number} index
1059
- * @returns {number}
1060
- */
1061
1047
  get_slot_size(index: number): number;
1062
- /**
1063
- * @param {number} index
1064
- * @returns {number}
1065
- */
1066
1048
  get_max_slot_size(index: number): number;
1067
- /**
1068
- * @returns {number}
1069
- */
1070
1049
  fighter_power(): number;
1071
- /**
1072
- * @returns {number}
1073
- */
1074
1050
  interception_power(): number;
1075
1051
  /**
1076
1052
  * 行動半径
1077
- * @returns {number}
1078
1053
  */
1079
1054
  radius(): number;
1080
- /**
1081
- */
1082
- hash: bigint;
1083
- /**
1084
- */
1085
1055
  id: string;
1086
- /**
1087
- */
1056
+ hash: bigint;
1088
1057
  mode: AirSquadronMode;
1089
1058
  }
1090
- /**
1091
- */
1092
1059
  export class Analyzer {
1060
+ private constructor();
1093
1061
  free(): void;
1094
- /**
1095
- * @param {ShipAnalyzerConfig} config
1096
- * @param {Ship} left
1097
- * @param {Ship} right
1098
- * @param {boolean} attacker_is_left
1099
- * @returns {AttackAnalysis}
1100
- */
1062
+ [Symbol.dispose](): void;
1101
1063
  analyze_ship_attack(
1102
1064
  config: ShipAnalyzerConfig,
1103
1065
  left: Ship,
1104
1066
  right: Ship,
1105
1067
  attacker_is_left: boolean,
1106
1068
  ): AttackAnalysis;
1107
- /**
1108
- * @param {NodeAttackAnalyzerConfig} config
1109
- * @param {Comp} left_comp
1110
- * @param {Ship} left_ship
1111
- * @param {Comp} right_comp
1112
- * @param {Ship} right_ship
1113
- * @returns {NodeAttackAnalysis}
1114
- */
1115
1069
  analyze_node_attack(
1116
1070
  config: NodeAttackAnalyzerConfig,
1117
1071
  left_comp: Comp,
@@ -1119,19 +1073,7 @@ export class Analyzer {
1119
1073
  right_comp: Comp,
1120
1074
  right_ship: Ship,
1121
1075
  ): NodeAttackAnalysis;
1122
- /**
1123
- * @param {Comp} comp
1124
- * @param {CompAnalyzerConfig} config
1125
- * @returns {CompAnalysis}
1126
- */
1127
1076
  analyze_comp(comp: Comp, config: CompAnalyzerConfig): CompAnalysis;
1128
- /**
1129
- * @param {Comp} player_comp
1130
- * @param {Comp} enemy_comp
1131
- * @param {NodeAttackAnalyzerConfig} config
1132
- * @param {number} times
1133
- * @returns {SimulatorResult}
1134
- */
1135
1077
  simulate_support_shelling(
1136
1078
  player_comp: Comp,
1137
1079
  enemy_comp: Comp,
@@ -1139,80 +1081,29 @@ export class Analyzer {
1139
1081
  times: number,
1140
1082
  ): SimulatorResult;
1141
1083
  }
1142
- /**
1143
- */
1144
1084
  export class Comp {
1085
+ private constructor();
1145
1086
  free(): void;
1146
- /**
1147
- * @returns {Side}
1148
- */
1087
+ [Symbol.dispose](): void;
1149
1088
  side(): Side;
1150
- /**
1151
- * @returns {boolean}
1152
- */
1153
1089
  is_combined(): boolean;
1154
- /**
1155
- * @returns {boolean}
1156
- */
1157
1090
  is_player(): boolean;
1158
- /**
1159
- * @returns {boolean}
1160
- */
1161
1091
  is_enemy(): boolean;
1162
- /**
1163
- * @param {string} id
1164
- * @returns {boolean}
1165
- */
1166
1092
  has_ship_eid(id: string): boolean;
1167
- /**
1168
- * @returns {string | undefined}
1169
- */
1170
1093
  first_ship_id(): string | undefined;
1171
- /**
1172
- * @returns {boolean}
1173
- */
1174
1094
  has_route_sup(): boolean;
1175
- /**
1176
- * @returns {CompMeta}
1177
- */
1178
1095
  meta(): CompMeta;
1179
- /**
1180
- * @param {FleetType} ft
1181
- * @returns {string | undefined}
1182
- */
1183
1096
  get_fleet_id(ft: FleetType): string | undefined;
1184
- /**
1185
- * @param {FleetType} ft
1186
- * @param {ShipKey} key
1187
- * @returns {Ship | undefined}
1188
- */
1189
1097
  get_ship_with_clone(ft: FleetType, key: ShipKey): Ship | undefined;
1190
- /**
1191
- * @param {FleetType} ft
1192
- * @param {ShipKey} key
1193
- * @returns {string | undefined}
1194
- */
1195
1098
  get_ship_entity_id(ft: FleetType, key: ShipKey): string | undefined;
1196
- /**
1197
- * @param {string} id
1198
- * @returns {Ship | undefined}
1199
- */
1200
1099
  get_ship_by_eid_with_clone(id: string): Ship | undefined;
1201
- /**
1202
- * @returns {Formation}
1203
- */
1204
1100
  default_formation(): Formation;
1205
1101
  /**
1206
1102
  * 艦隊防空値
1207
- * @param {number} formation_mod
1208
- * @returns {number}
1209
1103
  */
1210
1104
  adjusted_anti_air(formation_mod: number): number;
1211
1105
  /**
1212
1106
  * 制空値
1213
- * @param {boolean} escort_participates
1214
- * @param {AirWaveType} air_type
1215
- * @returns {number | undefined}
1216
1107
  */
1217
1108
  fighter_power(
1218
1109
  escort_participates: boolean,
@@ -1220,937 +1111,306 @@ export class Comp {
1220
1111
  ): number | undefined;
1221
1112
  /**
1222
1113
  * マップ索敵
1223
- * @param {number} node_divaricated_factor
1224
- * @returns {number | undefined}
1225
1114
  */
1226
1115
  elos(node_divaricated_factor: number): number | undefined;
1227
1116
  /**
1228
1117
  * 輸送物資量(TP)
1229
- * @returns {number}
1230
1118
  */
1231
1119
  transport_point(): number;
1232
- /**
1233
- * @param {Ship} ship
1234
- * @param {Formation | undefined} [formation]
1235
- * @returns {ShipConditions}
1236
- */
1237
- get_ship_conditions(ship: Ship, formation?: Formation): ShipConditions;
1238
- /**
1239
- * @param {FleetType} fleet_type
1240
- * @returns {number | undefined}
1241
- */
1120
+ get_ship_conditions(ship: Ship, formation?: Formation | null): ShipConditions;
1242
1121
  fleet_los_mod(fleet_type: FleetType): number | undefined;
1243
- /**
1244
- * @returns {number}
1245
- */
1246
1122
  balloons(): number;
1247
- /**
1248
- */
1249
- boss_sup?: Fleet;
1250
- /**
1251
- */
1252
- escort?: Fleet;
1253
- /**
1254
- */
1123
+ readonly org_type: OrgType;
1255
1124
  readonly hq_level: number;
1256
- /**
1257
- */
1258
1125
  main: Fleet;
1259
- /**
1260
- */
1261
- readonly org_type: OrgType;
1262
- /**
1263
- */
1264
- route_sup?: Fleet;
1126
+ get escort(): Fleet | undefined;
1127
+ set escort(value: Fleet | null | undefined);
1128
+ get route_sup(): Fleet | undefined;
1129
+ set route_sup(value: Fleet | null | undefined);
1130
+ get boss_sup(): Fleet | undefined;
1131
+ set boss_sup(value: Fleet | null | undefined);
1265
1132
  }
1266
- /**
1267
- */
1268
1133
  export class FhCore {
1269
1134
  free(): void;
1270
- /**
1271
- * @param {MasterData} js_master
1272
- */
1135
+ [Symbol.dispose](): void;
1273
1136
  constructor(js_master: MasterData);
1274
- /**
1275
- * @param {GearState | undefined} [input]
1276
- * @returns {Gear | undefined}
1277
- */
1278
- create_gear(input?: GearState): Gear | undefined;
1279
- /**
1280
- * @param {ShipState | undefined} [input]
1281
- * @returns {Ship | undefined}
1282
- */
1283
- create_ship(input?: ShipState): Ship | undefined;
1284
- /**
1285
- * @param {AirSquadronState | undefined} [input]
1286
- * @returns {AirSquadron}
1287
- */
1288
- create_air_squadron(input?: AirSquadronState): AirSquadron;
1289
- /**
1290
- * @param {FleetState | undefined} [input]
1291
- * @returns {Fleet}
1292
- */
1293
- create_fleet(input?: FleetState): Fleet;
1294
- /**
1295
- * @param {OrgState | undefined} [input]
1296
- * @returns {Org | undefined}
1297
- */
1298
- create_org(input?: OrgState): Org | undefined;
1299
- /**
1300
- * @param {number} ship_id
1301
- * @returns {ShipState | undefined}
1302
- */
1137
+ create_gear(input?: GearState | null): Gear | undefined;
1138
+ create_ship(input?: ShipState | null): Ship | undefined;
1139
+ create_air_squadron(input?: AirSquadronState | null): AirSquadron;
1140
+ create_fleet(input?: FleetState | null): Fleet;
1141
+ create_org(input?: OrgState | null): Org | undefined;
1303
1142
  create_ship_state_by_id(ship_id: number): ShipState | undefined;
1304
- /**
1305
- * @param {number} ship_id
1306
- * @returns {Ship | undefined}
1307
- */
1308
1143
  create_ship_by_id(ship_id: number): Ship | undefined;
1309
- /**
1310
- * @returns {Ship[]}
1311
- */
1312
1144
  create_all_ships(): Ship[];
1313
- /**
1314
- * @param {Uint16Array} main
1315
- * @param {Uint16Array | undefined} [escort]
1316
- * @returns {Comp}
1317
- */
1318
- create_comp_by_map_enemy(main: Uint16Array, escort?: Uint16Array): Comp;
1319
- /**
1320
- * @returns {Ship}
1321
- */
1145
+ create_comp_by_map_enemy(
1146
+ main: Uint16Array,
1147
+ escort?: Uint16Array | null,
1148
+ ): Comp;
1322
1149
  create_default_ship(): Ship;
1323
- /**
1324
- * @returns {Analyzer}
1325
- */
1326
1150
  create_analyzer(): Analyzer;
1327
1151
  }
1328
- /**
1329
- */
1330
1152
  export class Fleet {
1153
+ private constructor();
1331
1154
  free(): void;
1332
- /**
1333
- * @returns {FleetMeta}
1334
- */
1155
+ [Symbol.dispose](): void;
1335
1156
  meta(): FleetMeta;
1336
- /**
1337
- * @returns {(string)[]}
1338
- */
1339
1157
  ship_keys(): string[];
1340
- /**
1341
- * @returns {(string)[]}
1342
- */
1343
1158
  ship_ids(): string[];
1344
- /**
1345
- * @returns {(string)[]}
1346
- */
1347
1159
  get_gear_ids_by_improvable(): string[];
1348
- /**
1349
- * @returns {(string)[]}
1350
- */
1351
1160
  get_gear_ids_by_proficiency(): string[];
1352
- /**
1353
- * @param {string} id
1354
- * @param {DamageState} state
1355
- * @returns {number | undefined}
1356
- */
1357
1161
  get_damage_bound(id: string, state: DamageState): number | undefined;
1358
- /**
1359
- * @param {string} id
1360
- * @param {number} rate
1361
- * @param {boolean} ceil
1362
- * @returns {number | undefined}
1363
- */
1364
1162
  get_remaining_fuel(
1365
1163
  id: string,
1366
1164
  rate: number,
1367
1165
  ceil: boolean,
1368
1166
  ): number | undefined;
1369
- /**
1370
- * @param {string} id
1371
- * @param {number} rate
1372
- * @param {boolean} ceil
1373
- * @returns {number | undefined}
1374
- */
1375
1167
  get_remaining_ammo(
1376
1168
  id: string,
1377
1169
  rate: number,
1378
1170
  ceil: boolean,
1379
1171
  ): number | undefined;
1380
- /**
1381
- * @returns {number}
1382
- */
1383
1172
  count_ships(): number;
1384
- /**
1385
- * @param {ShipKey} key
1386
- * @returns {Ship | undefined}
1387
- */
1388
1173
  get_ship(key: ShipKey): Ship | undefined;
1389
- /**
1390
- * @param {AirWaveType} air_type
1391
- * @returns {number | undefined}
1392
- */
1393
1174
  fighter_power(air_type: AirWaveType): number | undefined;
1394
1175
  /**
1395
1176
  * マップ索敵
1396
- * @param {number} hq_level
1397
- * @param {number} node_divaricated_factor
1398
- * @returns {number | undefined}
1399
- */
1400
- elos(hq_level: number, node_divaricated_factor: number): number | undefined;
1401
- /**
1402
- * 航空索敵スコア
1403
- * @returns {number | undefined}
1404
- */
1405
- aviation_detection_score(): number | undefined;
1406
- /**
1407
- * 遠征ボーナス
1408
- * @returns {number}
1409
- */
1410
- expedition_bonus(): number;
1411
- /**
1412
- * @param {string} key
1413
- * @returns {number | undefined}
1414
- */
1415
- sum_ship_stat_by(key: string): number | undefined;
1416
- /**
1417
- */
1418
- reset_battle_state(): void;
1419
- /**
1420
- */
1421
- readonly fleet_los_mod: number | undefined;
1422
- /**
1423
1177
  */
1424
- readonly hash: bigint;
1178
+ elos(hq_level: number, node_divaricated_factor: number): number | undefined;
1425
1179
  /**
1180
+ * 航空索敵スコア
1426
1181
  */
1427
- id: string;
1182
+ aviation_detection_score(): number | undefined;
1428
1183
  /**
1184
+ * 遠征ボーナス
1429
1185
  */
1186
+ expedition_bonus(): number;
1187
+ sum_ship_stat_by(key: string): number | undefined;
1188
+ reset_battle_state(): void;
1189
+ id: string;
1190
+ readonly hash: bigint;
1430
1191
  readonly len: number;
1192
+ readonly fleet_los_mod: number | undefined;
1431
1193
  }
1432
- /**
1433
- */
1434
1194
  export class Gear {
1195
+ private constructor();
1435
1196
  free(): void;
1436
- /**
1437
- * @returns {Gear}
1438
- */
1197
+ [Symbol.dispose](): void;
1439
1198
  static default(): Gear;
1440
- /**
1441
- * @param {GearAttr} attr
1442
- * @returns {boolean}
1443
- */
1444
1199
  has_attr(attr: GearAttr): boolean;
1445
- /**
1446
- * @returns {GearCategory}
1447
- */
1448
1200
  category(): GearCategory;
1449
- /**
1450
- * @returns {boolean}
1451
- */
1452
1201
  is_high_angle_mount(): boolean;
1453
- /**
1454
- * @returns {boolean}
1455
- */
1456
1202
  is_carrier_shelling_plane(): boolean;
1457
- /**
1458
- * @returns {boolean}
1459
- */
1460
1203
  is_hayabusa_20th_squadron(): boolean;
1461
- /**
1462
- * @returns {boolean}
1463
- */
1464
1204
  has_proficiency(): boolean;
1465
- /**
1466
- * @returns {boolean}
1467
- */
1468
1205
  max_exp_eq_120(): boolean;
1469
- /**
1470
- * @param {number} slot_size
1471
- * @returns {number}
1472
- */
1473
1206
  calc_fighter_power(slot_size: number): number;
1474
- /**
1475
- * @param {number} slot_size
1476
- * @returns {number}
1477
- */
1478
1207
  calc_interception_power(slot_size: number): number;
1479
- /**
1480
- * @returns {number}
1481
- */
1482
1208
  fleet_anti_air_mod(): number;
1483
- /**
1484
- * @returns {number}
1485
- */
1486
1209
  ship_anti_air_mod(): number;
1487
- /**
1488
- * @param {number} slot_size
1489
- * @returns {number}
1490
- */
1491
1210
  calc_contact_trigger_factor(slot_size: number): number;
1492
- /**
1493
- * @param {AirStateRank} rank
1494
- * @returns {number}
1495
- */
1496
1211
  contact_selection_rate(rank: AirStateRank): number;
1497
- /**
1498
- * @param {number} level
1499
- * @returns {number}
1500
- */
1501
1212
  night_contact_rate(level: number): number;
1502
- /**
1503
- * @returns {boolean}
1504
- */
1505
1213
  is_night_attacker(): boolean;
1506
- /**
1507
- * @returns {boolean}
1508
- */
1509
1214
  is_night_fighter(): boolean;
1510
- /**
1511
- * @returns {boolean}
1512
- */
1513
1215
  is_night_plane(): boolean;
1514
- /**
1515
- * @param {number} slot_size
1516
- * @param {boolean} anti_inst
1517
- * @returns {number}
1518
- */
1519
1216
  night_plane_power(slot_size: number, anti_inst: boolean): number;
1520
- /**
1521
- * @returns {number}
1522
- */
1523
1217
  elos(): number;
1524
- /**
1525
- * @returns {boolean}
1526
- */
1527
1218
  is_abyssal(): boolean;
1528
- /**
1529
- * @returns {boolean}
1530
- */
1531
1219
  is_abyssal_cuttlefish_torpedo(): boolean;
1532
- /**
1533
- * @returns {boolean}
1534
- */
1535
1220
  is_abyssal_patrolling_attack_hawk(): boolean;
1536
- /**
1537
- * @returns {number}
1538
- */
1539
1221
  expedition_bonus(): number;
1540
- /**
1541
- * @returns {boolean}
1542
- */
1543
1222
  can_be_deployed_to_land_base(): boolean;
1544
- /**
1545
- * @returns {boolean}
1546
- */
1547
1223
  is_balloon(): boolean;
1548
- /**
1549
- */
1550
- readonly accuracy: number;
1551
- /**
1552
- */
1553
- readonly ace: number;
1554
- /**
1555
- */
1556
- readonly anti_air: number;
1557
- /**
1558
- */
1559
- readonly anti_bomber: number;
1560
- /**
1561
- */
1562
- readonly armor: number;
1563
- /**
1564
- */
1565
- readonly asw: number;
1566
- /**
1567
- */
1568
- readonly bombing: number;
1569
- /**
1570
- */
1571
- readonly cost: number;
1572
- /**
1573
- */
1574
- readonly default_exp: number;
1575
- /**
1576
- */
1577
- readonly evasion: number;
1578
- /**
1579
- */
1580
- readonly exp: number;
1581
- /**
1582
- */
1583
- readonly firepower: number;
1584
- /**
1585
- */
1586
- readonly fleet_anti_air_resist: number;
1587
- /**
1588
- */
1224
+ id: string;
1225
+ readonly hash: bigint;
1589
1226
  readonly gear_id: number;
1590
- /**
1591
- */
1227
+ readonly stars: number;
1228
+ readonly exp: number;
1229
+ readonly default_exp: number;
1230
+ name: string;
1231
+ types: Uint8Array;
1592
1232
  readonly gear_type: GearType;
1593
- /**
1594
- */
1595
- readonly gear_type_id: number;
1596
- /**
1597
- */
1598
- readonly hash: bigint;
1599
- /**
1600
- */
1601
- readonly icon_id: number;
1602
- /**
1603
- */
1604
- id: string;
1605
- /**
1606
- */
1607
- readonly improvable: boolean;
1608
- /**
1609
- */
1610
- readonly interception: number;
1611
- /**
1612
- */
1233
+ readonly max_hp: number;
1234
+ readonly firepower: number;
1235
+ readonly armor: number;
1236
+ readonly torpedo: number;
1237
+ readonly anti_air: number;
1238
+ readonly speed: number;
1239
+ readonly bombing: number;
1240
+ readonly asw: number;
1613
1241
  readonly los: number;
1614
- /**
1615
- */
1616
1242
  readonly luck: number;
1617
- /**
1618
- */
1619
- readonly max_hp: number;
1620
- /**
1621
- */
1622
- name: string;
1623
- /**
1624
- */
1625
- readonly radius: number;
1626
- /**
1627
- */
1243
+ readonly accuracy: number;
1244
+ readonly evasion: number;
1628
1245
  readonly range: number;
1629
- /**
1630
- */
1246
+ readonly radius: number;
1247
+ readonly cost: number;
1248
+ readonly improvable: boolean;
1631
1249
  readonly ship_anti_air_resist: number;
1632
- /**
1633
- */
1250
+ readonly fleet_anti_air_resist: number;
1251
+ readonly gear_type_id: number;
1634
1252
  readonly special_type: number;
1635
- /**
1636
- */
1637
- readonly speed: number;
1638
- /**
1639
- */
1640
- readonly stars: number;
1641
- /**
1642
- */
1643
- readonly torpedo: number;
1644
- /**
1645
- */
1646
- types: Uint8Array;
1253
+ readonly icon_id: number;
1254
+ readonly ace: number;
1255
+ readonly anti_bomber: number;
1256
+ readonly interception: number;
1647
1257
  }
1648
- /**
1649
- */
1650
1258
  export class Org {
1259
+ private constructor();
1651
1260
  free(): void;
1652
- /**
1653
- * @returns {string | undefined}
1654
- */
1261
+ [Symbol.dispose](): void;
1655
1262
  first_ship_id(): string | undefined;
1656
- /**
1657
- * @param {FleetKey} fleet_key
1658
- * @param {ShipKey} ship_key
1659
- * @returns {number | undefined}
1660
- */
1661
1263
  get_ship_mid(fleet_key: FleetKey, ship_key: ShipKey): number | undefined;
1662
- /**
1663
- * @param {FleetKey} fleet_key
1664
- * @param {ShipKey} ship_key
1665
- * @returns {string | undefined}
1666
- */
1667
1264
  get_ship_eid(fleet_key: FleetKey, ship_key: ShipKey): string | undefined;
1668
- /**
1669
- * @param {FleetKey} key
1670
- * @returns {string}
1671
- */
1672
1265
  get_fleet_id(key: FleetKey): string;
1673
- /**
1674
- * @returns {(string)[]}
1675
- */
1676
1266
  air_squadron_ids(): string[];
1677
- /**
1678
- * @returns {Uint16Array}
1679
- */
1680
1267
  main_ship_ids(): Uint16Array;
1681
- /**
1682
- * @returns {Uint16Array}
1683
- */
1684
1268
  escort_ship_ids(): Uint16Array;
1685
- /**
1686
- * @param {FleetKey} key
1687
- * @returns {Fleet}
1688
- */
1689
1269
  clone_fleet(key: FleetKey): Fleet;
1690
- /**
1691
- * @param {FleetKey} fleet_key
1692
- * @param {ShipKey} ship_key
1693
- * @returns {Ship | undefined}
1694
- */
1695
1270
  clone_ship(fleet_key: FleetKey, ship_key: ShipKey): Ship | undefined;
1696
- /**
1697
- * @param {string} id
1698
- * @returns {Ship | undefined}
1699
- */
1700
1271
  get_ship_by_id(id: string): Ship | undefined;
1701
- /**
1702
- * @param {FleetKey} key
1703
- * @returns {(string)[]}
1704
- */
1705
1272
  ship_keys(key: FleetKey): string[];
1706
- /**
1707
- * @returns {Comp}
1708
- */
1709
1273
  create_comp(): Comp;
1710
- /**
1711
- * @param {FleetKey} key
1712
- * @returns {Comp}
1713
- */
1714
1274
  create_comp_by_key(key: FleetKey): Comp;
1715
- /**
1716
- * @param {string} key
1717
- * @returns {AirSquadron}
1718
- */
1719
1275
  get_air_squadron(key: string): AirSquadron;
1720
- /**
1721
- * @returns {(string)[]}
1722
- */
1723
1276
  get_air_squadron_gear_ids_by_improvable(): string[];
1724
- /**
1725
- * @returns {(string)[]}
1726
- */
1727
1277
  get_air_squadron_gear_ids_by_proficiency(): string[];
1728
- /**
1729
- * @returns {Side}
1730
- */
1731
1278
  side(): Side;
1732
- /**
1733
- * @returns {boolean}
1734
- */
1735
1279
  is_player(): boolean;
1736
- /**
1737
- * @returns {boolean}
1738
- */
1739
1280
  is_enemy(): boolean;
1740
- /**
1741
- * @returns {boolean}
1742
- */
1743
1281
  is_single(): boolean;
1744
- /**
1745
- * @returns {boolean}
1746
- */
1747
1282
  is_combined(): boolean;
1748
1283
  /**
1749
1284
  * 防空時の基地制空値
1750
- * @returns {number}
1751
- */
1752
- interception_power(): number;
1753
- /**
1754
- * 高高度迎撃時の基地制空値
1755
- * @returns {number}
1756
- */
1757
- high_altitude_interception_power(): number;
1758
- /**
1759
- * @param {string} id
1760
- * @param {number} x
1761
- * @param {number} y
1762
- * @returns {MoveShipPayload | undefined}
1763
- */
1764
- create_move_ship_payload(
1765
- id: string,
1766
- x: number,
1767
- y: number,
1768
- ): MoveShipPayload | undefined;
1769
- /**
1770
- * @param {FleetKey} key
1771
- * @returns {FleetType | undefined}
1772
- */
1773
- get_fleet_type(key: FleetKey): FleetType | undefined;
1774
- /**
1775
- */
1776
- readonly boss_sup: FleetKey | undefined;
1777
- /**
1778
- */
1779
- readonly hash: bigint;
1780
- /**
1781
- */
1782
- readonly hq_level: number;
1783
- /**
1784
- */
1785
- id: string;
1786
- /**
1787
- */
1788
- readonly org_type: OrgType;
1789
- /**
1790
1285
  */
1791
- readonly route_sup: FleetKey | undefined;
1286
+ interception_power(): number;
1792
1287
  /**
1288
+ * 高高度迎撃時の基地制空値
1793
1289
  */
1290
+ high_altitude_interception_power(): number;
1291
+ create_move_ship_payload(
1292
+ id: string,
1293
+ x: number,
1294
+ y: number,
1295
+ ): MoveShipPayload | undefined;
1296
+ get_fleet_type(key: FleetKey): FleetType | undefined;
1297
+ id: string;
1298
+ readonly hash: bigint;
1299
+ readonly hq_level: number;
1300
+ readonly org_type: OrgType;
1794
1301
  readonly sortie: FleetKey;
1302
+ readonly route_sup: FleetKey | undefined;
1303
+ readonly boss_sup: FleetKey | undefined;
1795
1304
  }
1796
- /**
1797
- */
1798
1305
  export class Ship {
1306
+ private constructor();
1799
1307
  free(): void;
1800
- /**
1801
- * @returns {Ship}
1802
- */
1308
+ [Symbol.dispose](): void;
1803
1309
  static default(): Ship;
1804
- /**
1805
- * @param {string} id
1806
- * @returns {boolean}
1807
- */
1808
1310
  eq_id(id: string): boolean;
1809
- /**
1810
- * @returns {ShipState}
1811
- */
1812
1311
  state(): ShipState;
1813
- /**
1814
- * @returns {CustomPowerModifiers}
1815
- */
1816
1312
  custom_power_mods(): CustomPowerModifiers;
1817
- /**
1818
- * @returns {ShipMeta}
1819
- */
1820
1313
  meta(): ShipMeta;
1821
- /**
1822
- * @returns {DamageState}
1823
- */
1824
1314
  damage_state(): DamageState;
1825
- /**
1826
- * @returns {MoraleState}
1827
- */
1828
1315
  morale_state(): MoraleState;
1829
- /**
1830
- * @returns {ShipCategory}
1831
- */
1832
1316
  category(): ShipCategory;
1833
- /**
1834
- * @param {ShipAttr} attr
1835
- * @returns {boolean}
1836
- */
1837
1317
  has_attr(attr: ShipAttr): boolean;
1838
- /**
1839
- * @returns {(string)[]}
1840
- */
1841
1318
  gear_keys(): string[];
1842
- /**
1843
- * @param {string} key
1844
- * @returns {Gear | undefined}
1845
- */
1846
1319
  get_gear(key: string): Gear | undefined;
1847
- /**
1848
- * @param {DamageState} state
1849
- * @returns {number | undefined}
1850
- */
1851
1320
  get_damage_bound(state: DamageState): number | undefined;
1852
- /**
1853
- * @param {number} rate
1854
- * @param {boolean} ceil
1855
- * @returns {number}
1856
- */
1857
1321
  get_remaining_fuel(rate: number, ceil: boolean): number;
1858
- /**
1859
- * @param {number} rate
1860
- * @param {boolean} ceil
1861
- * @returns {number}
1862
- */
1863
1322
  get_remaining_ammo(rate: number, ceil: boolean): number;
1864
- /**
1865
- * @param {string} key
1866
- * @returns {boolean}
1867
- */
1868
1323
  has_unknown_stat(key: string): boolean;
1869
- /**
1870
- * @param {string} key
1871
- * @returns {number | undefined}
1872
- */
1873
1324
  get_naked_stat(key: string): number | undefined;
1874
- /**
1875
- * @param {string} key
1876
- * @returns {number | undefined}
1877
- */
1878
1325
  get_stat_interval_left(key: string): number | undefined;
1879
- /**
1880
- * @param {string} key
1881
- * @returns {number | undefined}
1882
- */
1883
1326
  get_stat_interval_right(key: string): number | undefined;
1884
- /**
1885
- * @param {string} key
1886
- * @returns {number}
1887
- */
1888
1327
  get_gear_stat(key: string): number;
1889
- /**
1890
- * @param {string} key
1891
- * @returns {number}
1892
- */
1893
1328
  get_ebonus(key: string): number;
1894
- /**
1895
- * @param {string} key
1896
- * @returns {number | undefined}
1897
- */
1898
1329
  get_stat_mod(key: string): number | undefined;
1899
- /**
1900
- * @returns {boolean}
1901
- */
1902
1330
  is_abyssal(): boolean;
1903
- /**
1904
- * @returns {boolean}
1905
- */
1906
1331
  is_submarine(): boolean;
1907
- /**
1908
- * @returns {boolean}
1909
- */
1910
1332
  is_amagiri(): boolean;
1911
- /**
1912
- * @param {Gear} gear
1913
- * @param {string} key
1914
- * @returns {boolean}
1915
- */
1916
1333
  can_equip(gear: Gear, key: string): boolean;
1917
- /**
1918
- * @returns {boolean}
1919
- */
1920
1334
  is_installation(): boolean;
1921
- /**
1922
- * @returns {boolean}
1923
- */
1924
1335
  is_pt_imp(): boolean;
1925
- /**
1926
- * @returns {SpecialEnemyType}
1927
- */
1928
1336
  special_enemy_type(): SpecialEnemyType;
1929
- /**
1930
- * @returns {boolean}
1931
- */
1932
1337
  is_attackable_by_torpedo(): boolean;
1933
- /**
1934
- * @param {number} index
1935
- * @returns {number | undefined}
1936
- */
1937
1338
  get_slot_size(index: number): number | undefined;
1938
- /**
1939
- * @param {number} index
1940
- * @returns {number | undefined}
1941
- */
1942
1339
  get_max_slot_size(index: number): number | undefined;
1943
- /**
1944
- * @returns {number}
1945
- */
1946
1340
  remaining_ammo_mod(): number;
1947
- /**
1948
- * @returns {number}
1949
- */
1950
1341
  remaining_fuel_mod(): number;
1951
- /**
1952
- * @param {AirWaveType} air_type
1953
- * @returns {number | undefined}
1954
- */
1955
1342
  fighter_power(air_type: AirWaveType): number | undefined;
1956
- /**
1957
- * @returns {number | undefined}
1958
- */
1959
1343
  fleet_los_factor(): number | undefined;
1960
1344
  /**
1961
1345
  * 加重対空
1962
- * @param {Side} side
1963
- * @returns {number | undefined}
1964
1346
  */
1965
1347
  ship_adjusted_anti_air(side: Side): number | undefined;
1966
1348
  /**
1967
1349
  * 艦隊対空補正
1968
- * @returns {number}
1969
1350
  */
1970
1351
  fleet_anti_air_mod(): number;
1971
- /**
1972
- * @returns {number}
1973
- */
1974
1352
  cruiser_fit_bonus(): number;
1975
- /**
1976
- * @returns {number | undefined}
1977
- */
1978
1353
  basic_accuracy_term(): number | undefined;
1979
- /**
1980
- * @returns {number | undefined}
1981
- */
1982
1354
  basic_evasion_term(): number | undefined;
1983
- /**
1984
- * @param {number} formation_mod
1985
- * @param {number} postcap_additive
1986
- * @param {number} postcap_multiplicative
1987
- * @returns {number | undefined}
1988
- */
1989
1355
  evasion_term(
1990
1356
  formation_mod: number,
1991
1357
  postcap_additive: number,
1992
1358
  postcap_multiplicative: number,
1993
1359
  ): number | undefined;
1994
- /**
1995
- * @param {number} armor_penetration
1996
- * @returns {number | undefined}
1997
- */
1998
1360
  basic_defense_power(armor_penetration: number): number | undefined;
1999
- /**
2000
- * @returns {number}
2001
- */
2002
1361
  transport_point(): number;
2003
- /**
2004
- * @param {number} node_divaricated_factor
2005
- * @returns {number | undefined}
2006
- */
2007
1362
  elos(node_divaricated_factor: number): number | undefined;
2008
1363
  /**
2009
1364
  * 確殺攻撃力
2010
- * @returns {number | undefined}
2011
1365
  */
2012
1366
  ohko_power(): number | undefined;
2013
- /**
2014
- * @returns {number | undefined}
2015
- */
2016
1367
  state_day_gunfit_accuracy(): number | undefined;
2017
- /**
2018
- * @returns {number | undefined}
2019
- */
2020
1368
  state_night_gunfit_accuracy(): number | undefined;
2021
1369
  /**
2022
1370
  * フィット砲補正
2023
- * @param {boolean} is_night
2024
- * @returns {number}
2025
1371
  */
2026
1372
  gunfit_accuracy(is_night: boolean): number;
2027
- /**
2028
- */
2029
- readonly accuracy: number;
2030
- /**
2031
- */
2032
- readonly ammo: number;
2033
- /**
2034
- */
2035
- readonly anti_air: number | undefined;
2036
- /**
2037
- */
2038
- readonly armor: number | undefined;
2039
- /**
2040
- */
2041
- readonly asw: number | undefined;
2042
- /**
2043
- */
2044
- readonly ctype: number;
2045
- /**
2046
- */
2047
- readonly current_hp: number;
2048
- /**
2049
- */
2050
- readonly evasion: number | undefined;
2051
- /**
2052
- */
2053
- readonly firepower: number | undefined;
2054
- /**
2055
- */
2056
- readonly fuel: number;
2057
- /**
2058
- */
2059
- readonly hash: bigint;
2060
- /**
2061
- */
2062
1373
  id: string;
2063
- /**
2064
- */
2065
- readonly innate_torpedo_accuracy: number;
2066
- /**
2067
- */
1374
+ readonly hash: bigint;
1375
+ readonly ship_id: number;
2068
1376
  readonly level: number;
2069
- /**
2070
- */
2071
- readonly los: number | undefined;
2072
- /**
2073
- */
2074
- readonly luck: number | undefined;
2075
- /**
2076
- */
2077
- readonly max_ammo: number;
2078
- /**
2079
- */
2080
- readonly max_fuel: number;
2081
- /**
2082
- */
2083
- readonly max_hp: number | undefined;
2084
- /**
2085
- */
1377
+ readonly current_hp: number;
2086
1378
  readonly morale: number;
2087
- /**
2088
- */
2089
- readonly naked_anti_air: number | undefined;
2090
- /**
2091
- */
1379
+ readonly ammo: number;
1380
+ readonly fuel: number;
1381
+ readonly ship_type: ShipType;
1382
+ readonly ctype: number;
1383
+ slots: SlotSizeVec;
1384
+ readonly naked_firepower: number | undefined;
1385
+ readonly naked_torpedo: number | undefined;
2092
1386
  readonly naked_armor: number | undefined;
2093
- /**
2094
- */
2095
- readonly naked_asw: number | undefined;
2096
- /**
2097
- */
1387
+ readonly naked_anti_air: number | undefined;
2098
1388
  readonly naked_evasion: number | undefined;
2099
- /**
2100
- */
2101
- readonly naked_firepower: number | undefined;
2102
- /**
2103
- */
1389
+ readonly naked_asw: number | undefined;
2104
1390
  readonly naked_los: number | undefined;
2105
- /**
2106
- */
2107
- readonly naked_range: number | undefined;
2108
- /**
2109
- */
2110
- readonly naked_speed: number;
2111
- /**
2112
- */
2113
- readonly naked_torpedo: number | undefined;
2114
- /**
2115
- */
1391
+ readonly firepower: number | undefined;
1392
+ readonly torpedo: number | undefined;
1393
+ readonly armor: number | undefined;
1394
+ readonly anti_air: number | undefined;
1395
+ readonly evasion: number | undefined;
1396
+ readonly asw: number | undefined;
1397
+ readonly los: number | undefined;
2116
1398
  readonly name: string;
2117
- /**
2118
- */
2119
- readonly next_id: number;
2120
- /**
2121
- */
2122
- readonly range: number | undefined;
2123
- /**
2124
- */
1399
+ readonly yomi: string;
1400
+ readonly stype: number;
1401
+ readonly sort_id: number;
2125
1402
  readonly remodel_rank: number;
2126
- /**
2127
- */
2128
- readonly ship_id: number;
2129
- /**
2130
- */
2131
- readonly ship_type: ShipType;
2132
- /**
2133
- */
2134
1403
  readonly slotnum: number;
2135
- /**
2136
- */
2137
- slots: SlotSizeVec;
2138
- /**
2139
- */
2140
- readonly sort_id: number;
2141
- /**
2142
- */
2143
- readonly speed: number;
2144
- /**
2145
- */
2146
- readonly stype: number;
2147
- /**
2148
- */
2149
- readonly torpedo: number | undefined;
2150
- /**
2151
- */
1404
+ readonly next_id: number;
2152
1405
  readonly useful: boolean;
2153
- /**
2154
- */
2155
- readonly yomi: string;
1406
+ readonly max_hp: number | undefined;
1407
+ readonly max_ammo: number;
1408
+ readonly max_fuel: number;
1409
+ readonly naked_range: number | undefined;
1410
+ readonly naked_speed: number;
1411
+ readonly luck: number | undefined;
1412
+ readonly range: number | undefined;
1413
+ readonly speed: number;
1414
+ readonly accuracy: number;
1415
+ readonly innate_torpedo_accuracy: number;
2156
1416
  }