fleethub-core 1.12.11 → 1.12.13

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.
@@ -2,183 +2,105 @@
2
2
  /* eslint-disable */
3
3
  export function parse_ship_conditions(value: ShipConditions): ShipConditions;
4
4
  export function set_panic_hook(): void;
5
- export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
6
- formation?: Formation;
7
- }
8
-
9
- export interface NodeAttackAnalyzerConfig {
10
- air_state?: AirState;
11
- engagement?: Engagement;
12
- node_state?: NodeState;
13
- left?: NodeAttackAnalyzerShipConfig;
14
- right?: NodeAttackAnalyzerShipConfig;
15
- }
16
-
17
- export interface NodeAttackAnalysis {
18
- left: AttackAnalysis;
19
- right: AttackAnalysis;
20
- shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
21
- night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
22
- }
23
-
24
- export interface FleetCutinReport<T> {
25
- cutin: FleetCutin;
26
- rate: number | null;
27
- formation: Formation;
28
- attacks: FleetCutinAttackReport<T>[];
29
- }
5
+ export type ShipAttr =
6
+ | "Unknown"
7
+ | "NightCarrier"
8
+ | "Installation"
9
+ | "RoyalNavy"
10
+ | "Kai2"
11
+ | "TurbineSpeedBonus"
12
+ | "NewModelBoilerSpeedBonus"
13
+ | "Pillbox"
14
+ | "IsolatedIsland"
15
+ | "HarbourSummerPrincess"
16
+ | "SupplyDepot"
17
+ | "NewSupplyDepot"
18
+ | "PtImp"
19
+ | "BattleshipSummerPrincess"
20
+ | "HeavyCruiserSummerPrincess"
21
+ | "AnchorageWaterDemonVacationMode"
22
+ | "FrenchBattleshipPrincess"
23
+ | "DockPrincess"
24
+ | "SummerAircraftCarrierDemon"
25
+ | "EuropeanWaterPrincess";
30
26
 
31
- export interface FleetCutinAttackReport<T> extends AttackReport<T> {
32
- index: number;
33
- ship_id: number;
34
- power_mod: number;
35
- }
27
+ export type Histogram<K extends keyof any, V> = Partial<Record<K, V>>;
36
28
 
37
- export interface AttackAnalysis {
38
- attacker_is_player: boolean;
39
- attacker_ship_id: number;
40
- target_ship_id: number;
41
- historical_params: HistoricalParams;
42
- day: ActionReport<DayPhaseAttackStyle>;
43
- night: ActionReport<NightPhaseAttackStyle>;
44
- closing_torpedo: ActionReport<TorpedoAttackStyle>;
45
- opening_asw: ActionReport<AswAttackStyle>;
46
- support_shelling: ActionReport<SupportShellingStyle>;
29
+ export interface MasterGear {
30
+ gear_id: number;
31
+ name: string;
32
+ types: GearTypeIdArray;
33
+ special_type?: number;
34
+ max_hp?: number;
35
+ firepower?: number;
36
+ armor?: number;
37
+ torpedo?: number;
38
+ anti_air?: number;
39
+ speed?: number;
40
+ bombing?: number;
41
+ asw?: number;
42
+ los?: number;
43
+ luck?: number;
44
+ accuracy?: number;
45
+ evasion?: number;
46
+ range?: number;
47
+ radius?: number;
48
+ cost?: number;
49
+ improvable?: boolean;
50
+ ship_anti_air_resist?: number;
51
+ fleet_anti_air_resist?: number;
52
+ historical_aircraft_group?: number;
47
53
  }
48
54
 
49
- export type AswAttackType = "DepthCharge" | "Aerial";
50
-
51
- export type ShellingType = "Normal" | "Aerial";
52
-
53
- export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
54
-
55
- export type SupportShellingType = ShellingType;
56
-
57
- export type AttackType =
58
- | { t: "Asw"; c: AswAttackType }
59
- | { t: "Shelling"; c: ShellingType }
60
- | { t: "Night"; c: NightAttackType }
61
- | { t: "Torpedo" }
62
- | { t: "SupportShelling"; c: SupportShellingType };
63
-
64
- export type DayPhaseAttackType =
65
- | { t: "Shelling"; c: ShellingType }
66
- | { t: "Asw"; c: AswAttackType };
67
-
68
- export type NightPhaseAttackType =
69
- | { t: "Night"; c: NightAttackType }
70
- | { t: "Asw"; c: AswAttackType };
71
-
72
- export type TorpedoAttackType = null;
73
-
74
- export type DayCutin =
75
- | "Zuiun"
76
- | "AirSea"
77
- | "MainMain"
78
- | "MainAp"
79
- | "MainRadar"
80
- | "MainSec"
81
- | "DoubleAttack"
82
- | "FBA"
83
- | "BBA"
84
- | "BA";
85
-
86
- export type NightCutin =
87
- | "MainTorpRadar"
88
- | "TorpLookoutRadar"
89
- | "TorpTsloTorp"
90
- | "TorpTsloDrum"
91
- | "NightZuiun2Radar"
92
- | "NightZuiun2"
93
- | "NightZuiunRadar"
94
- | "NightZuiun"
95
- | "DoubleAttack"
96
- | "TorpTorpMain"
97
- | "TorpTorpTorp"
98
- | "MainMainSec"
99
- | "MainMainMain"
100
- | "SubTorpTorp"
101
- | "SubRadarTorp"
102
- | "Cvci1_25"
103
- | "Cvci1_20"
104
- | "Cvci1_18"
105
- | "Photobomber";
106
-
107
- export type FleetCutin =
108
- | "NelsonTouch"
109
- | "NagatoClassCutin"
110
- | "ColoradoClassCutin"
111
- | "KongouClassCutin"
112
- | "Yamato2ShipCutin"
113
- | "Yamato3ShipCutin";
114
-
115
- export type DayCutinLike = DayCutin | FleetCutin;
116
-
117
- export type NightCutinLike = NightCutin | FleetCutin;
118
-
119
- export interface ShipConditions extends ShipPosition {
120
- formation?: Formation;
121
- amagiri_index?: number | null;
55
+ export interface MasterIBonusRule {
56
+ expr: CompiledEvaler;
57
+ formula: CompiledEvaler;
122
58
  }
123
59
 
124
- export interface BattleConditions {
125
- org_type: OrgType;
126
- role: Role;
127
- ship_index: number;
128
- fleet_len: number;
129
- formation: Formation;
130
- fleet_los_mod: number | null;
131
- night_conditions: NightFleetConditions;
60
+ export interface MasterIBonuses {
61
+ shelling_power: MasterIBonusRule[];
62
+ shelling_accuracy: MasterIBonusRule[];
63
+ shelling_aerial_power: MasterIBonusRule[];
64
+ torpedo_power: MasterIBonusRule[];
65
+ torpedo_accuracy: MasterIBonusRule[];
66
+ torpedo_evasion: MasterIBonusRule[];
67
+ asw_power: MasterIBonusRule[];
68
+ asw_accuracy: MasterIBonusRule[];
69
+ night_power: MasterIBonusRule[];
70
+ night_aerial_power: MasterIBonusRule[];
71
+ night_accuracy: MasterIBonusRule[];
72
+ defense_power: MasterIBonusRule[];
73
+ contact_selection: MasterIBonusRule[];
74
+ fighter_power: MasterIBonusRule[];
75
+ ship_anti_air: MasterIBonusRule[];
76
+ fleet_anti_air: MasterIBonusRule[];
77
+ elos: MasterIBonusRule[];
132
78
  }
133
79
 
134
- export interface NightConditions {
135
- player?: NightFleetConditions;
136
- enemy?: NightFleetConditions;
80
+ export interface MasterBattleDefinitions {
81
+ formation: NestedFormationDef[];
82
+ anti_air_cutin: AntiAirCutinDef[];
83
+ day_cutin: DayCutinDef[];
84
+ night_cutin: NightCutinDef[];
85
+ historical_bonuses?: HistoricalBonusDef[];
137
86
  }
138
87
 
139
- export interface NightFleetConditions {
140
- night_contact_rank?: ContactRank | null;
141
- starshell_index?: number | null;
142
- searchlight_index?: number | null;
143
- activates_large_searchlight?: boolean;
88
+ export interface FleetState {
89
+ id?: string;
90
+ len?: number;
91
+ s1?: ShipState;
92
+ s2?: ShipState;
93
+ s3?: ShipState;
94
+ s4?: ShipState;
95
+ s5?: ShipState;
96
+ s6?: ShipState;
97
+ s7?: ShipState;
144
98
  }
145
99
 
146
- export type GearAttr =
147
- | "Unknown"
148
- | "HighAngleMount"
149
- | "NightFighter"
150
- | "NightAttacker"
151
- | "HeavyBomber"
152
- | "NightRecon"
153
- | "MainGun"
154
- | "Radar"
155
- | "SurfaceRadar"
156
- | "AirRadar"
157
- | "DepthChargeProjector"
158
- | "SynergisticDepthCharge"
159
- | "AntiSubMortar"
160
- | "AntiSubWeapon"
161
- | "ApDepthCharge"
162
- | "AntiSubAircraft"
163
- | "LateModelBowTorpedo"
164
- | "Seaplane"
165
- | "CbAircraft"
166
- | "LbAircraft"
167
- | "JetAircraft"
168
- | "Fighter"
169
- | "Recon"
170
- | "ObservationSeaplane"
171
- | "CbFighterBomber"
172
- | "AntiInstDiveBomber"
173
- | "CbSwordfish"
174
- | "SemiNightPlane"
175
- | "HighAltitudeInterceptor";
176
-
177
- export interface ShipPosition {
178
- org_type?: OrgType;
179
- fleet_type?: FleetType;
180
- fleet_len?: number;
181
- index?: number;
100
+ export interface ActionReport<T> {
101
+ data: Record<string, AttackReport<T>>;
102
+ damage_state_density: Histogram<DamageState, number> | null;
103
+ is_active: boolean;
182
104
  }
183
105
 
184
106
  export interface AttackReport<T> {
@@ -192,161 +114,218 @@ export interface AttackReport<T> {
192
114
  damage: DamageReport | null;
193
115
  }
194
116
 
195
- export interface CompAntiAirAnalysis {
196
- fleet_adjusted_anti_air: number;
197
- ships: AntiAirReport[];
198
- anti_air_cutin_chance: [number, number][];
117
+ export interface MoveShipPayload {
118
+ current: [string, string, ShipKey];
119
+ target: [string | null, string, ShipKey];
199
120
  }
200
121
 
201
- export interface AntiAirReport {
122
+ export type AirWaveType = "Jet" | "LandBase" | "Carrier";
123
+
124
+ export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
125
+
126
+ export interface ShipState extends GearVecState, SlotSizeVecState {
127
+ id?: string;
202
128
  ship_id: number;
203
- role: Role;
204
- index: number;
205
- adjusted_anti_air: number | null;
206
- proportional_shotdown_rate: number | null;
207
- fixed_shotdown_number: number | null;
208
- guaranteed: number | null;
209
- anti_air_cutin_chance: [number, number][];
210
- anti_air_propellant_barrage_chance: number | null;
129
+ level?: number;
130
+ current_hp?: number;
131
+ morale?: number;
132
+ ammo?: number;
133
+ fuel?: number;
134
+ max_hp_mod?: number;
135
+ firepower_mod?: number;
136
+ torpedo_mod?: number;
137
+ armor_mod?: number;
138
+ anti_air_mod?: number;
139
+ evasion_mod?: number;
140
+ asw_mod?: number;
141
+ los_mod?: number;
142
+ luck_mod?: number;
143
+ day_gunfit_accuracy?: number;
144
+ night_gunfit_accuracy?: number;
145
+ custom_power_mods?: CustomPowerModifiers;
211
146
  }
212
147
 
213
- export interface AttackPowerModifier {
214
- a?: number;
215
- b?: number;
148
+ export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
149
+
150
+ export interface SlotSizeVecState {
151
+ ss1?: number;
152
+ ss2?: number;
153
+ ss3?: number;
154
+ ss4?: number;
155
+ ss5?: number;
216
156
  }
217
157
 
218
- export interface SpecialEnemyModifiers {
219
- precap_general_mod: AttackPowerModifier;
220
- stype_mod: AttackPowerModifier;
221
- landing_craft_synergy_mod: AttackPowerModifier;
222
- toku_daihatsu_tank_mod: AttackPowerModifier;
223
- m4a1dd_mod: AttackPowerModifier;
224
- honi_mod: AttackPowerModifier;
225
- toku_daihatsu_chiha_mod: AttackPowerModifier;
226
- toku_daihatsu_chiha_kai_mod: AttackPowerModifier;
227
- t4_tank_group_mod: AttackPowerModifier;
228
- t4_tank_kai_mod: AttackPowerModifier;
229
- postcap_general_mod: AttackPowerModifier;
230
- pt_mod: AttackPowerModifier | null;
158
+ export type AirSquadronMode = "Sortie" | "AirDefense";
159
+
160
+ export interface AirSquadronState extends GearVecState, SlotSizeVecState {
161
+ id?: string;
162
+ mode?: AirSquadronMode;
231
163
  }
232
164
 
233
- export interface CustomPowerModifiers {
234
- precap_mod?: AttackPowerModifier;
235
- postcap_mod?: AttackPowerModifier;
236
- basic_power_mod?: AttackPowerModifier;
237
- historical_mod?: AttackPowerModifier;
165
+ export interface FleetMeta {
166
+ id: string;
167
+ len: number;
168
+ ships: [string, ShipMeta | null][];
238
169
  }
239
170
 
240
- export interface FormationCombatModifiersDef {
241
- power_mod?: number;
242
- accuracy_mod?: number;
243
- evasion_mod?: number;
171
+ export interface ShipMeta {
172
+ id: string;
173
+ ship_id: number;
244
174
  }
245
175
 
246
- export interface FormationDef {
247
- tag: Formation;
248
- protection_rate: number | null;
249
- fleet_anti_air_mod: number;
250
- shelling: FormationCombatModifiersDef;
251
- torpedo: FormationCombatModifiersDef;
252
- asw: FormationCombatModifiersDef;
253
- night: FormationCombatModifiersDef;
254
- support_shelling: FormationCombatModifiersDef;
176
+ export interface CompMeta {
177
+ fleets: Record<FleetType, FleetMeta>;
255
178
  }
256
179
 
257
- export type NestedFormationDef =
258
- | FormationDef
259
- | { top_half: FormationDef; bottom_half: FormationDef };
180
+ export type Side = "Player" | "Enemy";
260
181
 
261
- export interface AntiAirCutinDef {
262
- id: number;
263
- type_factor: number | null;
264
- multiplier: number | null;
265
- guaranteed: number | null;
266
- sequential: boolean | null;
267
- }
182
+ export type Align = "Left" | "Right";
268
183
 
269
- export interface DayCutinDef {
270
- tag: DayCutin;
271
- hits: number;
272
- type_factor: number | null;
273
- power_mod: number | null;
274
- accuracy_mod: number | null;
184
+ export interface ShipInput {
185
+ ship_id: number;
186
+ ctype: number;
187
+ stype: number;
188
+ yomi: string;
275
189
  }
276
190
 
277
- export interface HistoricalBonusDef {
278
- map?: number;
279
- node?: CompiledEvaler;
280
- phase?: number;
281
- debuff?: boolean;
282
- ship?: CompiledEvaler;
283
- enemy?: CompiledEvaler;
284
- power_mod?: AttackPowerModifier;
285
- armor_penetration?: number;
286
- accuracy_mod?: number;
287
- evasion_mod?: number;
191
+ export interface GearInput {
192
+ gear_id: number;
193
+ types: GearTypeIdArray;
194
+ firepower: number;
195
+ torpedo: number;
196
+ anti_air: number;
197
+ armor: number;
198
+ evasion: number;
199
+ asw: number;
200
+ los: number;
201
+ bombing: number;
202
+ accuracy: number;
203
+ range: number;
204
+ radius: number;
205
+ stars: number;
206
+ ace: number;
288
207
  }
289
208
 
290
- export interface HistoricalParams {
291
- power_mod: AttackPowerModifier;
292
- armor_penetration: number;
293
- accuracy_mod: number;
294
- target_evasion_mod: number;
209
+ export type GearVecInput = GearInput[];
210
+
211
+ export interface EBonuses {
212
+ firepower: number;
213
+ torpedo: number;
214
+ anti_air: number;
215
+ armor: number;
216
+ evasion: number;
217
+ asw: number;
218
+ los: number;
219
+ bombing: number;
220
+ accuracy: number;
221
+ range: number;
295
222
  }
296
223
 
297
- export interface NightCutinDef {
298
- tag: NightCutin;
299
- hits: number;
300
- type_factor: number | null;
301
- power_mod: number | null;
302
- accuracy_mod: number | null;
303
- }
224
+ export type GearCategory =
225
+ | "Fighter"
226
+ | "Bomber"
227
+ | "Recon"
228
+ | "MainGun"
229
+ | "Secondary"
230
+ | "Torpedo"
231
+ | "AntiSub"
232
+ | "Radar"
233
+ | "Landing"
234
+ | "Ration"
235
+ | "LandBased"
236
+ | "Misc";
304
237
 
305
- export interface BattleDefinitions {
306
- formation: Record<Formation, NestedFormationDef>;
307
- anti_air_cutin: Record<number, AntiAirCutinDef>;
308
- day_cutin: Record<DayCutin, DayCutinDef>;
309
- night_cutin: Record<NightCutin, NightCutinDef>;
310
- historical_bonuses: HistoricalBonusDef[];
311
- }
238
+ export type GearType =
239
+ | "Unknown"
240
+ | "SmallMainGun"
241
+ | "MediumMainGun"
242
+ | "LargeMainGun"
243
+ | "SecondaryGun"
244
+ | "Torpedo"
245
+ | "CbFighter"
246
+ | "CbDiveBomber"
247
+ | "CbTorpedoBomber"
248
+ | "CbRecon"
249
+ | "ReconSeaplane"
250
+ | "SeaplaneBomber"
251
+ | "SmallRadar"
252
+ | "LargeRadar"
253
+ | "Sonar"
254
+ | "DepthCharge"
255
+ | "ExtraArmor"
256
+ | "Engine"
257
+ | "AntiAirShell"
258
+ | "ApShell"
259
+ | "VtFuze"
260
+ | "AntiAirGun"
261
+ | "MidgetSubmarine"
262
+ | "EmergencyRepair"
263
+ | "LandingCraft"
264
+ | "Rotorcraft"
265
+ | "AntiSubPatrolAircraft"
266
+ | "MediumArmor"
267
+ | "LargeArmor"
268
+ | "Searchlight"
269
+ | "SupplyContainer"
270
+ | "ShipRepairFacility"
271
+ | "SubmarineTorpedo"
272
+ | "Starshell"
273
+ | "CommandFacility"
274
+ | "AviationPersonnel"
275
+ | "AntiAirFireDirector"
276
+ | "AntiGroundEquipment"
277
+ | "LargeMainGun2"
278
+ | "ShipPersonnel"
279
+ | "LargeSonar"
280
+ | "LargeFlyingBoat"
281
+ | "LargeSearchlight"
282
+ | "CombatRation"
283
+ | "Supplies"
284
+ | "SeaplaneFighter"
285
+ | "AmphibiousTank"
286
+ | "LbAttacker"
287
+ | "LbFighter"
288
+ | "LbRecon"
289
+ | "TransportationMaterial"
290
+ | "SubmarineEquipment"
291
+ | "LandingForce"
292
+ | "LargeLbAircraft"
293
+ | "SurfaceEquipment"
294
+ | "JetFighter"
295
+ | "JetFighterBomber"
296
+ | "JetTorpedoBomber"
297
+ | "JetRecon"
298
+ | "LargeRadar2"
299
+ | "CbRecon2"
300
+ | "SecondaryGun2";
312
301
 
313
- export interface FleetState {
302
+ export interface OrgState {
314
303
  id?: string;
315
- len?: number;
316
- s1?: ShipState;
317
- s2?: ShipState;
318
- s3?: ShipState;
319
- s4?: ShipState;
320
- s5?: ShipState;
321
- s6?: ShipState;
322
- s7?: ShipState;
304
+ f1?: FleetState;
305
+ f2?: FleetState;
306
+ f3?: FleetState;
307
+ f4?: FleetState;
308
+ a1?: AirSquadronState;
309
+ a2?: AirSquadronState;
310
+ a3?: AirSquadronState;
311
+ hq_level?: number;
312
+ org_type?: OrgType;
313
+ sortie?: FleetKey;
314
+ route_sup?: FleetKey;
315
+ boss_sup?: FleetKey;
323
316
  }
324
317
 
325
- export interface GearState {
326
- id?: string;
327
- gear_id: number;
328
- exp?: number;
329
- stars?: number;
330
- }
318
+ export type FleetKey = "f1" | "f2" | "f3" | "f4";
331
319
 
332
- export interface GearVecState {
333
- g1?: GearState;
334
- g2?: GearState;
335
- g3?: GearState;
336
- g4?: GearState;
337
- g5?: GearState;
338
- gx?: GearState;
320
+ export interface CompDayAnalysis {
321
+ day_cutin: CompDayCutinAnalysis;
322
+ fleet_cutin: FleetCutinReport<ShellingStyle>[];
339
323
  }
340
324
 
341
- export type OrgType =
342
- | "Single"
343
- | "CarrierTaskForce"
344
- | "SurfaceTaskForce"
345
- | "TransportEscort"
346
- | "EnemySingle"
347
- | "EnemyCombined";
348
-
349
- export type Role = "Main" | "Escort";
325
+ export interface CompNightAnalysis {
326
+ night_cutin: CompNightCutinAnalysis;
327
+ fleet_cutin: FleetCutinReport<NightAttackStyle>[];
328
+ }
350
329
 
351
330
  export interface CompAnalyzerConfig {
352
331
  engagement: Engagement;
@@ -358,16 +337,6 @@ export interface CompAnalyzerConfig {
358
337
  right_night_fleet_conditions: NightFleetConditions;
359
338
  }
360
339
 
361
- export interface CompNightAnalysis {
362
- night_cutin: CompNightCutinAnalysis;
363
- fleet_cutin: FleetCutinReport<NightAttackStyle>[];
364
- }
365
-
366
- export interface CompDayAnalysis {
367
- day_cutin: CompDayCutinAnalysis;
368
- fleet_cutin: FleetCutinReport<ShellingStyle>[];
369
- }
370
-
371
340
  export interface CompAnalysis {
372
341
  day: CompDayAnalysis;
373
342
  night: CompNightAnalysis;
@@ -375,148 +344,136 @@ export interface CompAnalysis {
375
344
  anti_air: CompAntiAirAnalysis;
376
345
  }
377
346
 
378
- export type NodeId = string;
379
-
380
- export interface NodeState {
381
- map?: number;
382
- node?: NodeId;
383
- phase?: number;
384
- debuff?: boolean;
385
- disable_historical_mod?: boolean;
386
- landing_battle?: boolean;
347
+ export interface ShipAnalyzerConfig {
348
+ air_state?: AirState;
349
+ engagement?: Engagement;
350
+ left?: AttackAnalyzerShipConfig;
351
+ right?: AttackAnalyzerShipConfig;
387
352
  }
388
353
 
389
- export type GearTypeIdArray = [number, number, number, number, number];
390
-
391
- export interface SupportShellingSimulatorParams {
392
- attacker_formation?: Formation;
393
- target_formation?: Formation;
394
- engagement: Engagement;
395
- node_state: NodeState;
354
+ export interface AttackAnalyzerShipConfig
355
+ extends ShipConditions,
356
+ NightFleetConditions {
357
+ balloons?: number;
358
+ fleet_los_mod?: number | null;
396
359
  }
397
360
 
398
- export type FhResult<T> = { Ok: T } | { Err: string };
399
-
400
- export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
401
-
402
- export type SingleFormation =
403
- | "LineAhead"
404
- | "DoubleLine"
405
- | "Diamond"
406
- | "Echelon"
407
- | "LineAbreast"
408
- | "Vanguard";
409
-
410
- export type CombinedFormation =
411
- | "Cruising1"
412
- | "Cruising2"
413
- | "Cruising3"
414
- | "Cruising4";
415
-
416
- export type Formation = SingleFormation | CombinedFormation;
417
-
418
- export interface MasterData extends MasterBattleDefinitions {
419
- created_at: number;
420
- gears: MasterGear[];
421
- gear_attrs: MasterAttrRule<GearAttr>[];
422
- ships: MasterShip[];
423
- ship_attrs: MasterAttrRule<ShipAttr>[];
424
- ibonuses: MasterIBonuses;
425
- equippability: MasterEquippability;
361
+ export interface SimulatorResultItem {
362
+ id: string;
363
+ fleet_type: FleetType;
364
+ index: number;
365
+ damage_state_map: Record<DamageState, number>;
426
366
  }
427
367
 
428
- export interface NationalityDef {
429
- id: number;
430
- ctypes: number[];
368
+ export interface SimulatorResult {
369
+ items: SimulatorResultItem[];
370
+ sunk_vec: [number, number, number][];
431
371
  }
432
372
 
433
- export interface MasterAttrRule<T> {
434
- tag: T;
435
- name: string;
436
- expr: CompiledEvaler;
437
- }
373
+ export type SpeedGroup = "A" | "B1" | "B2" | "C";
438
374
 
439
- export interface MasterShip {
440
- ship_id: number;
441
- name: string;
442
- yomi: string;
443
- stype: number;
444
- ctype: number;
445
- nationality?: number;
446
- sort_id?: number;
447
- max_hp: StatInterval;
448
- firepower: StatInterval;
449
- armor: StatInterval;
450
- torpedo: StatInterval;
451
- evasion: StatInterval;
452
- anti_air: StatInterval;
453
- asw: StatInterval;
454
- los: StatInterval;
455
- luck: StatInterval;
456
- torpedo_accuracy?: number;
457
- basic_evasion_term?: number;
458
- speed: number;
459
- range?: number;
460
- fuel?: number;
461
- ammo?: number;
462
- next_id?: number;
463
- next_level?: number;
464
- slotnum: number;
465
- slots: SlotSizeVec;
466
- stock: GearState[];
467
- speed_group?: SpeedGroup;
468
- useful?: boolean;
375
+ export interface SupportShellingSimulatorParams {
376
+ attacker_formation?: Formation;
377
+ target_formation?: Formation;
378
+ engagement: Engagement;
379
+ node_state: NodeState;
469
380
  }
470
381
 
471
- export type StatInterval = [number | null, number | null];
382
+ export type TorpedoAttackType = null;
472
383
 
473
- export interface MasterIBonuses {
474
- shelling_power: MasterIBonusRule[];
475
- shelling_accuracy: MasterIBonusRule[];
476
- shelling_aerial_power: MasterIBonusRule[];
477
- torpedo_power: MasterIBonusRule[];
478
- torpedo_accuracy: MasterIBonusRule[];
479
- torpedo_evasion: MasterIBonusRule[];
480
- asw_power: MasterIBonusRule[];
481
- asw_accuracy: MasterIBonusRule[];
482
- night_power: MasterIBonusRule[];
483
- night_aerial_power: MasterIBonusRule[];
484
- night_accuracy: MasterIBonusRule[];
485
- defense_power: MasterIBonusRule[];
486
- contact_selection: MasterIBonusRule[];
487
- fighter_power: MasterIBonusRule[];
488
- ship_anti_air: MasterIBonusRule[];
489
- fleet_anti_air: MasterIBonusRule[];
490
- elos: MasterIBonusRule[];
491
- }
384
+ export type SupportShellingType = ShellingType;
492
385
 
493
- export interface MasterIBonusRule {
494
- expr: CompiledEvaler;
495
- formula: CompiledEvaler;
496
- }
386
+ export type AswAttackType = "DepthCharge" | "Aerial";
497
387
 
498
- export type ShipAttr =
499
- | "Unknown"
500
- | "NightCarrier"
501
- | "Installation"
502
- | "RoyalNavy"
503
- | "Kai2"
504
- | "TurbineSpeedBonus"
505
- | "NewModelBoilerSpeedBonus"
388
+ export type AttackType =
389
+ | { t: "Asw"; c: AswAttackType }
390
+ | { t: "Shelling"; c: ShellingType }
391
+ | { t: "Night"; c: NightAttackType }
392
+ | { t: "Torpedo" }
393
+ | { t: "SupportShelling"; c: SupportShellingType };
394
+
395
+ export type DayPhaseAttackType =
396
+ | { t: "Shelling"; c: ShellingType }
397
+ | { t: "Asw"; c: AswAttackType };
398
+
399
+ export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
400
+
401
+ export type ShellingType = "Normal" | "Aerial";
402
+
403
+ export type NightPhaseAttackType =
404
+ | { t: "Night"; c: NightAttackType }
405
+ | { t: "Asw"; c: AswAttackType };
406
+
407
+ export type SlotSizeVec = (number | null)[];
408
+
409
+ export type GearTypeIdArray = [number, number, number, number, number];
410
+
411
+ export type SpecialEnemyType =
412
+ | "None"
413
+ | "SoftSkinned"
506
414
  | "Pillbox"
507
415
  | "IsolatedIsland"
508
- | "HarbourSummerPrincess"
509
416
  | "SupplyDepot"
510
417
  | "NewSupplyDepot"
418
+ | "HarbourSummerPrincess"
511
419
  | "PtImp"
512
420
  | "BattleshipSummerPrincess"
513
421
  | "HeavyCruiserSummerPrincess"
514
- | "AnchorageWaterDemonVacationMode"
515
422
  | "FrenchBattleshipPrincess"
423
+ | "AnchorageWaterDemonVacationMode"
516
424
  | "DockPrincess"
517
425
  | "SummerAircraftCarrierDemon"
518
426
  | "EuropeanWaterPrincess";
519
427
 
428
+ export type Role = "Main" | "Escort";
429
+
430
+ export type FleetCutin =
431
+ | "NelsonTouch"
432
+ | "NagatoClassCutin"
433
+ | "ColoradoClassCutin"
434
+ | "KongouClassCutin"
435
+ | "Yamato2ShipCutin"
436
+ | "Yamato3ShipCutin"
437
+ | "QueenElizabethClassCutin"
438
+ | "RichelieuClassCutin";
439
+
440
+ export type NightCutin =
441
+ | "MainTorpRadar"
442
+ | "TorpLookoutRadar"
443
+ | "TorpTsloTorp"
444
+ | "TorpTsloDrum"
445
+ | "NightZuiun2Radar"
446
+ | "NightZuiun2"
447
+ | "NightZuiunRadar"
448
+ | "NightZuiun"
449
+ | "DoubleAttack"
450
+ | "TorpTorpMain"
451
+ | "TorpTorpTorp"
452
+ | "MainMainSec"
453
+ | "MainMainMain"
454
+ | "SubTorpTorp"
455
+ | "SubRadarTorp"
456
+ | "Cvci1_25"
457
+ | "Cvci1_20"
458
+ | "Cvci1_18"
459
+ | "Photobomber";
460
+
461
+ export type NightCutinLike = NightCutin | FleetCutin;
462
+
463
+ export type DayCutinLike = DayCutin | FleetCutin;
464
+
465
+ export type DayCutin =
466
+ | "Zuiun"
467
+ | "AirSea"
468
+ | "MainMain"
469
+ | "MainAp"
470
+ | "MainRadar"
471
+ | "MainSec"
472
+ | "DoubleAttack"
473
+ | "FBA"
474
+ | "BBA"
475
+ | "BA";
476
+
520
477
  export type ShipCategory =
521
478
  | "Battleship"
522
479
  | "AircraftCarrier"
@@ -552,356 +509,247 @@ export type ShipType =
552
509
  | "CT"
553
510
  | "AO";
554
511
 
555
- export type CompiledEvaler = string;
556
-
557
- export interface EquippabilityRule {
558
- ship: CompiledEvaler;
559
- keys?: string[];
560
- include?: string;
561
- exclude?: string;
562
- }
563
-
564
- export interface MasterEquippability {
565
- equip_stype: MstStype[];
566
- equip_exslot: number[];
567
- equip_ship: Record<number, MstEquipShip>;
568
- equip_exslot_ship: Record<number, MstEquipExslotShip>;
569
- rules: EquippabilityRule[];
570
- }
571
-
572
- export interface MstEquipExslotShip {
573
- api_ctypes: Record<number, number> | null;
574
- api_ship_ids: Record<number, number> | null;
575
- api_stypes: Record<number, number> | null;
576
- }
577
-
578
- export interface MstEquipShip {
579
- api_equip_type: Record<number, MstEquipShipValue>;
580
- }
581
-
582
- export type MstEquipShipValue = null | number[];
583
-
584
- export interface MstStype {
585
- api_id: number;
586
- api_equip_type: Record<number, number>;
512
+ export interface HitRate {
513
+ normal: number;
514
+ critical: number;
515
+ total: number;
587
516
  }
588
517
 
589
- export interface MoveShipPayload {
590
- current: [string, string, ShipKey];
591
- target: [string | null, string, ShipKey];
518
+ export interface HitRateParams {
519
+ accuracy_term: number;
520
+ evasion_term: number;
521
+ target_morale_mod: number;
522
+ critical_rate_constant: number;
523
+ critical_percentage_bonus: number;
524
+ hit_percentage_bonus: number;
592
525
  }
593
526
 
594
- export type GearVecInput = GearInput[];
527
+ export type FhResult<T> = { Ok: T } | { Err: string };
595
528
 
596
- export interface GearInput {
597
- gear_id: number;
598
- types: GearTypeIdArray;
599
- firepower: number;
600
- torpedo: number;
601
- anti_air: number;
602
- armor: number;
603
- evasion: number;
604
- asw: number;
605
- los: number;
606
- bombing: number;
607
- accuracy: number;
608
- range: number;
609
- radius: number;
610
- stars: number;
611
- ace: number;
529
+ export interface DamageReport {
530
+ miss_damage_min: number;
531
+ miss_damage_max: number;
532
+ normal_damage_min: number;
533
+ normal_damage_max: number;
534
+ critical_damage_min: number;
535
+ critical_damage_max: number;
536
+ normal_scratch_rate: number;
537
+ critical_scratch_rate: number;
538
+ damage_density: Histogram<number, number>;
539
+ damage_state_density: Histogram<DamageState, number>;
612
540
  }
613
541
 
614
- export interface ShipInput {
542
+ export interface ShipDayCutinAnalysis {
615
543
  ship_id: number;
616
- ctype: number;
617
- stype: number;
618
- yomi: string;
619
- }
620
-
621
- export interface EBonuses {
622
- firepower: number;
623
- torpedo: number;
624
- anti_air: number;
625
- armor: number;
626
- evasion: number;
627
- asw: number;
628
- los: number;
629
- bombing: number;
630
- accuracy: number;
631
- range: number;
632
- }
633
-
634
- export interface SimulatorResult {
635
- items: SimulatorResultItem[];
636
- sunk_vec: [number, number, number][];
637
- }
638
-
639
- export interface SimulatorResultItem {
640
- id: string;
641
- fleet_type: FleetType;
544
+ role: Role;
642
545
  index: number;
643
- damage_state_map: Record<DamageState, number>;
644
- }
645
-
646
- export interface MasterGear {
647
- gear_id: number;
648
- name: string;
649
- types: GearTypeIdArray;
650
- special_type?: number;
651
- max_hp?: number;
652
- firepower?: number;
653
- armor?: number;
654
- torpedo?: number;
655
- anti_air?: number;
656
- speed?: number;
657
- bombing?: number;
658
- asw?: number;
659
- los?: number;
660
- luck?: number;
661
- accuracy?: number;
662
- evasion?: number;
663
- range?: number;
664
- radius?: number;
665
- cost?: number;
666
- improvable?: boolean;
667
- ship_anti_air_resist?: number;
668
- fleet_anti_air_resist?: number;
669
- historical_aircraft_group?: number;
546
+ rank3: DayCutinReport;
547
+ rank2: DayCutinReport;
670
548
  }
671
549
 
672
- export interface HitRate {
673
- normal: number;
674
- critical: number;
675
- total: number;
550
+ export interface CompDayCutinAnalysis {
551
+ rank3_air_state: AirState;
552
+ rank2_air_state: AirState;
553
+ main_fleet_los_mod: number | null;
554
+ escort_fleet_los_mod: number | null;
555
+ ships: ShipDayCutinAnalysis[];
676
556
  }
677
557
 
678
- export interface HitRateParams {
679
- accuracy_term: number;
680
- evasion_term: number;
681
- target_morale_mod: number;
682
- critical_rate_constant: number;
683
- critical_percentage_bonus: number;
684
- hit_percentage_bonus: number;
558
+ export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
559
+ observation_term: number | null;
685
560
  }
686
561
 
687
- export interface AttackAnalyzerShipConfig
688
- extends ShipConditions,
689
- NightFleetConditions {
690
- balloons?: number;
691
- fleet_los_mod?: number | null;
562
+ export interface NightContactChance {
563
+ rank1: number;
564
+ rank2: number;
565
+ rank3: number;
692
566
  }
693
567
 
694
- export type AirSquadronMode = "Sortie" | "AirDefense";
695
-
696
- export interface AirSquadronState extends GearVecState, SlotSizeVecState {
697
- id?: string;
698
- mode?: AirSquadronMode;
568
+ export interface NightCutinActionReport
569
+ extends ActionReport<NightPhaseAttackStyle> {
570
+ cutin_term: number | null;
699
571
  }
700
572
 
701
- export interface ShellingStyle {
702
- tag: "ShellingStyle";
703
- attack_type: ShellingType;
704
- cutin: DayCutinLike | null;
705
- power_mod: number;
706
- accuracy_mod: number;
707
- hits: number;
573
+ export interface ShipNightCutinAnalysis {
574
+ ship_id: number;
575
+ index: number;
576
+ normal: NightCutinActionReport;
577
+ chuuha: NightCutinActionReport;
708
578
  }
709
579
 
710
- export interface NightAttackStyle {
711
- tag: "NightAttackStyle";
712
- attack_type: NightAttackType;
713
- cutin: NightCutinLike | null;
714
- power_mod: number;
715
- accuracy_mod: number;
716
- hits: number;
580
+ export interface CompNightCutinAnalysis {
581
+ night_contact_chance: NightContactChance;
582
+ ships: ShipNightCutinAnalysis[];
717
583
  }
718
584
 
719
- export interface AswAttackStyle {
720
- tag: "AswAttackStyle";
721
- attack_type: AswAttackType;
585
+ export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
586
+
587
+ export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
588
+
589
+ export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
590
+
591
+ export interface BattleDefinitions {
592
+ formation: Record<Formation, NestedFormationDef>;
593
+ anti_air_cutin: Record<number, AntiAirCutinDef>;
594
+ day_cutin: Record<DayCutin, DayCutinDef>;
595
+ night_cutin: Record<NightCutin, NightCutinDef>;
596
+ historical_bonuses: HistoricalBonusDef[];
722
597
  }
723
598
 
724
- export interface TorpedoAttackStyle {
725
- tag: "TorpedoAttackStyle";
726
- attack_type: TorpedoAttackType;
599
+ export interface AntiAirCutinDef {
600
+ id: number;
601
+ type_factor: number | null;
602
+ multiplier: number | null;
603
+ guaranteed: number | null;
604
+ sequential: boolean | null;
727
605
  }
728
606
 
729
- export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
607
+ export interface HistoricalBonusDef {
608
+ map?: number;
609
+ node?: CompiledEvaler;
610
+ phase?: number;
611
+ debuff?: boolean;
612
+ ship?: CompiledEvaler;
613
+ enemy?: CompiledEvaler;
614
+ power_mod?: AttackPowerModifier;
615
+ armor_penetration?: number;
616
+ accuracy_mod?: number;
617
+ evasion_mod?: number;
618
+ }
730
619
 
731
- export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
620
+ export interface FormationDef {
621
+ tag: Formation;
622
+ protection_rate: number | null;
623
+ fleet_anti_air_mod: number;
624
+ shelling: FormationCombatModifiersDef;
625
+ torpedo: FormationCombatModifiersDef;
626
+ asw: FormationCombatModifiersDef;
627
+ night: FormationCombatModifiersDef;
628
+ support_shelling: FormationCombatModifiersDef;
629
+ }
732
630
 
733
- export interface SupportShellingStyle {
734
- tag: "SupportShellingStyle";
735
- attack_type: SupportShellingType;
631
+ export interface DayCutinDef {
632
+ tag: DayCutin;
633
+ hits: number;
634
+ type_factor: number | null;
635
+ power_mod: number | null;
636
+ accuracy_mod: number | null;
736
637
  }
737
638
 
738
- export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
639
+ export type NestedFormationDef =
640
+ | FormationDef
641
+ | { top_half: FormationDef; bottom_half: FormationDef };
739
642
 
740
- export type GearType =
741
- | "Unknown"
742
- | "SmallMainGun"
743
- | "MediumMainGun"
744
- | "LargeMainGun"
745
- | "SecondaryGun"
746
- | "Torpedo"
747
- | "CbFighter"
748
- | "CbDiveBomber"
749
- | "CbTorpedoBomber"
750
- | "CbRecon"
751
- | "ReconSeaplane"
752
- | "SeaplaneBomber"
753
- | "SmallRadar"
754
- | "LargeRadar"
755
- | "Sonar"
756
- | "DepthCharge"
757
- | "ExtraArmor"
758
- | "Engine"
759
- | "AntiAirShell"
760
- | "ApShell"
761
- | "VtFuze"
762
- | "AntiAirGun"
763
- | "MidgetSubmarine"
764
- | "EmergencyRepair"
765
- | "LandingCraft"
766
- | "Rotorcraft"
767
- | "AntiSubPatrolAircraft"
768
- | "MediumArmor"
769
- | "LargeArmor"
770
- | "Searchlight"
771
- | "SupplyContainer"
772
- | "ShipRepairFacility"
773
- | "SubmarineTorpedo"
774
- | "Starshell"
775
- | "CommandFacility"
776
- | "AviationPersonnel"
777
- | "AntiAirFireDirector"
778
- | "AntiGroundEquipment"
779
- | "LargeMainGun2"
780
- | "ShipPersonnel"
781
- | "LargeSonar"
782
- | "LargeFlyingBoat"
783
- | "LargeSearchlight"
784
- | "CombatRation"
785
- | "Supplies"
786
- | "SeaplaneFighter"
787
- | "AmphibiousTank"
788
- | "LbAttacker"
789
- | "LbFighter"
790
- | "LbRecon"
791
- | "TransportationMaterial"
792
- | "SubmarineEquipment"
793
- | "LandingForce"
794
- | "LargeLbAircraft"
795
- | "SurfaceEquipment"
796
- | "JetFighter"
797
- | "JetFighterBomber"
798
- | "JetTorpedoBomber"
799
- | "JetRecon"
800
- | "LargeRadar2"
801
- | "CbRecon2"
802
- | "SecondaryGun2";
643
+ export interface NightCutinDef {
644
+ tag: NightCutin;
645
+ hits: number;
646
+ type_factor: number | null;
647
+ power_mod: number | null;
648
+ accuracy_mod: number | null;
649
+ }
803
650
 
804
- export type GearCategory =
805
- | "Fighter"
806
- | "Bomber"
807
- | "Recon"
808
- | "MainGun"
809
- | "Secondary"
810
- | "Torpedo"
811
- | "AntiSub"
812
- | "Radar"
813
- | "Landing"
814
- | "Ration"
815
- | "LandBased"
816
- | "Misc";
651
+ export interface HistoricalParams {
652
+ power_mod: AttackPowerModifier;
653
+ armor_penetration: number;
654
+ accuracy_mod: number;
655
+ target_evasion_mod: number;
656
+ }
817
657
 
818
- export interface ShipMeta {
819
- id: string;
820
- ship_id: number;
658
+ export interface FormationCombatModifiersDef {
659
+ power_mod?: number;
660
+ accuracy_mod?: number;
661
+ evasion_mod?: number;
821
662
  }
822
663
 
823
- export interface FleetMeta {
824
- id: string;
825
- len: number;
826
- ships: [string, ShipMeta | null][];
664
+ export interface AttackPowerModifier {
665
+ a?: number;
666
+ b?: number;
827
667
  }
828
668
 
829
- export interface CompMeta {
830
- fleets: Record<FleetType, FleetMeta>;
669
+ export interface CustomPowerModifiers {
670
+ precap_mod?: AttackPowerModifier;
671
+ postcap_mod?: AttackPowerModifier;
672
+ basic_power_mod?: AttackPowerModifier;
673
+ historical_mod?: AttackPowerModifier;
831
674
  }
832
675
 
833
- export interface OrgState {
834
- id?: string;
835
- f1?: FleetState;
836
- f2?: FleetState;
837
- f3?: FleetState;
838
- f4?: FleetState;
839
- a1?: AirSquadronState;
840
- a2?: AirSquadronState;
841
- a3?: AirSquadronState;
842
- hq_level?: number;
843
- org_type?: OrgType;
844
- sortie?: FleetKey;
845
- route_sup?: FleetKey;
846
- boss_sup?: FleetKey;
676
+ export interface SpecialEnemyModifiers {
677
+ precap_general_mod: AttackPowerModifier;
678
+ stype_mod: AttackPowerModifier;
679
+ landing_craft_synergy_mod: AttackPowerModifier;
680
+ toku_daihatsu_tank_mod: AttackPowerModifier;
681
+ m4a1dd_mod: AttackPowerModifier;
682
+ honi_mod: AttackPowerModifier;
683
+ toku_daihatsu_chiha_mod: AttackPowerModifier;
684
+ toku_daihatsu_chiha_kai_mod: AttackPowerModifier;
685
+ t4_tank_group_mod: AttackPowerModifier;
686
+ t4_tank_kai_mod: AttackPowerModifier;
687
+ postcap_general_mod: AttackPowerModifier;
688
+ pt_mod: AttackPowerModifier | null;
847
689
  }
848
690
 
849
- export type FleetKey = "f1" | "f2" | "f3" | "f4";
691
+ export type OrgType =
692
+ | "Single"
693
+ | "CarrierTaskForce"
694
+ | "SurfaceTaskForce"
695
+ | "TransportEscort"
696
+ | "EnemySingle"
697
+ | "EnemyCombined";
698
+
699
+ export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
850
700
 
851
- export interface SlotSizeVecState {
852
- ss1?: number;
853
- ss2?: number;
854
- ss3?: number;
855
- ss4?: number;
856
- ss5?: number;
857
- }
701
+ export type AirState =
702
+ | "AirSupremacy"
703
+ | "AirSuperiority"
704
+ | "AirParity"
705
+ | "AirDenial"
706
+ | "AirIncapability";
858
707
 
859
- export interface ShipState extends GearVecState, SlotSizeVecState {
860
- id?: string;
861
- ship_id: number;
862
- level?: number;
863
- current_hp?: number;
864
- morale?: number;
865
- ammo?: number;
866
- fuel?: number;
867
- max_hp_mod?: number;
868
- firepower_mod?: number;
869
- torpedo_mod?: number;
870
- armor_mod?: number;
871
- anti_air_mod?: number;
872
- evasion_mod?: number;
873
- asw_mod?: number;
874
- los_mod?: number;
875
- luck_mod?: number;
876
- day_gunfit_accuracy?: number;
877
- night_gunfit_accuracy?: number;
878
- custom_power_mods?: CustomPowerModifiers;
879
- }
708
+ export type CombinedFormation =
709
+ | "Cruising1"
710
+ | "Cruising2"
711
+ | "Cruising3"
712
+ | "Cruising4";
880
713
 
881
- export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
714
+ export type Formation = SingleFormation | CombinedFormation;
882
715
 
883
- export type Side = "Player" | "Enemy";
716
+ export type SingleFormation =
717
+ | "LineAhead"
718
+ | "DoubleLine"
719
+ | "Diamond"
720
+ | "Echelon"
721
+ | "LineAbreast"
722
+ | "Vanguard";
884
723
 
885
- export type Align = "Left" | "Right";
724
+ export interface AntiAirReport {
725
+ ship_id: number;
726
+ role: Role;
727
+ index: number;
728
+ adjusted_anti_air: number | null;
729
+ proportional_shotdown_rate: number | null;
730
+ fixed_shotdown_number: number | null;
731
+ guaranteed: number | null;
732
+ anti_air_cutin_chance: [number, number][];
733
+ anti_air_propellant_barrage_chance: number | null;
734
+ }
886
735
 
887
- export type Histogram<K extends keyof any, V> = Partial<Record<K, V>>;
736
+ export interface CompAntiAirAnalysis {
737
+ fleet_adjusted_anti_air: number;
738
+ ships: AntiAirReport[];
739
+ anti_air_cutin_chance: [number, number][];
740
+ }
888
741
 
889
- export interface MasterBattleDefinitions {
890
- formation: NestedFormationDef[];
891
- anti_air_cutin: AntiAirCutinDef[];
892
- day_cutin: DayCutinDef[];
893
- night_cutin: NightCutinDef[];
894
- historical_bonuses?: HistoricalBonusDef[];
742
+ export interface FleetCutinReport<T> {
743
+ cutin: FleetCutin;
744
+ rate: number | null;
745
+ formation: Formation;
746
+ attacks: FleetCutinAttackReport<T>[];
895
747
  }
896
748
 
897
- export interface AttackPower {
898
- precap: number;
899
- is_capped: boolean;
900
- capped: number;
901
- normal: number;
902
- critical: number;
903
- armor_penetration: number;
904
- remaining_ammo_mod: number;
749
+ export interface FleetCutinAttackReport<T> extends AttackReport<T> {
750
+ index: number;
751
+ ship_id: number;
752
+ power_mod: number;
905
753
  }
906
754
 
907
755
  export interface AttackPowerParams {
@@ -921,140 +769,294 @@ export interface AttackPowerParams {
921
769
  custom_mods: CustomPowerModifiers;
922
770
  }
923
771
 
924
- export interface ActionReport<T> {
925
- data: Record<string, AttackReport<T>>;
926
- damage_state_density: Histogram<DamageState, number> | null;
927
- is_active: boolean;
772
+ export interface AttackPower {
773
+ precap: number;
774
+ is_capped: boolean;
775
+ capped: number;
776
+ normal: number;
777
+ critical: number;
778
+ armor_penetration: number;
779
+ remaining_ammo_mod: number;
780
+ }
781
+
782
+ export interface AttackAnalysis {
783
+ attacker_is_player: boolean;
784
+ attacker_ship_id: number;
785
+ target_ship_id: number;
786
+ historical_params: HistoricalParams;
787
+ day: ActionReport<DayPhaseAttackStyle>;
788
+ night: ActionReport<NightPhaseAttackStyle>;
789
+ closing_torpedo: ActionReport<TorpedoAttackStyle>;
790
+ opening_asw: ActionReport<AswAttackStyle>;
791
+ support_shelling: ActionReport<SupportShellingStyle>;
792
+ }
793
+
794
+ export interface DayContactChance {
795
+ air_state: AirState;
796
+ trigger_rate: number;
797
+ rank3: number;
798
+ rank2: number;
799
+ rank1: number;
800
+ total: number;
801
+ }
802
+
803
+ export interface ContactAnalysis {
804
+ single: DayContactChance[] | null;
805
+ combined: DayContactChance[] | null;
806
+ }
807
+
808
+ export interface MasterAttrRule<T> {
809
+ tag: T;
810
+ name: string;
811
+ expr: CompiledEvaler;
812
+ }
813
+
814
+ export interface NationalityDef {
815
+ id: number;
816
+ ctypes: number[];
817
+ }
818
+
819
+ export interface MasterData extends MasterBattleDefinitions {
820
+ created_at: number;
821
+ gears: MasterGear[];
822
+ gear_attrs: MasterAttrRule<GearAttr>[];
823
+ ships: MasterShip[];
824
+ ship_attrs: MasterAttrRule<ShipAttr>[];
825
+ ibonuses: MasterIBonuses;
826
+ equippability: MasterEquippability;
827
+ }
828
+
829
+ export type CompiledEvaler = string;
830
+
831
+ export interface NightConditions {
832
+ player?: NightFleetConditions;
833
+ enemy?: NightFleetConditions;
834
+ }
835
+
836
+ export interface BattleConditions {
837
+ org_type: OrgType;
838
+ role: Role;
839
+ ship_index: number;
840
+ fleet_len: number;
841
+ formation: Formation;
842
+ fleet_los_mod: number | null;
843
+ night_conditions: NightFleetConditions;
844
+ }
845
+
846
+ export interface NightFleetConditions {
847
+ night_contact_rank?: ContactRank | null;
848
+ starshell_index?: number | null;
849
+ searchlight_index?: number | null;
850
+ activates_large_searchlight?: boolean;
851
+ }
852
+
853
+ export interface ShipPosition {
854
+ org_type?: OrgType;
855
+ fleet_type?: FleetType;
856
+ fleet_len?: number;
857
+ index?: number;
858
+ }
859
+
860
+ export type GearAttr =
861
+ | "Unknown"
862
+ | "HighAngleMount"
863
+ | "NightFighter"
864
+ | "NightAttacker"
865
+ | "HeavyBomber"
866
+ | "NightRecon"
867
+ | "MainGun"
868
+ | "Radar"
869
+ | "SurfaceRadar"
870
+ | "AirRadar"
871
+ | "DepthChargeProjector"
872
+ | "SynergisticDepthCharge"
873
+ | "AntiSubMortar"
874
+ | "AntiSubWeapon"
875
+ | "ApDepthCharge"
876
+ | "AntiSubAircraft"
877
+ | "LateModelBowTorpedo"
878
+ | "Seaplane"
879
+ | "CbAircraft"
880
+ | "LbAircraft"
881
+ | "JetAircraft"
882
+ | "Fighter"
883
+ | "Recon"
884
+ | "ObservationSeaplane"
885
+ | "CbFighterBomber"
886
+ | "AntiInstDiveBomber"
887
+ | "CbSwordfish"
888
+ | "SemiNightPlane"
889
+ | "HighAltitudeInterceptor";
890
+
891
+ export type StatInterval = [number | null, number | null];
892
+
893
+ export interface MasterShip {
894
+ ship_id: number;
895
+ name: string;
896
+ yomi: string;
897
+ stype: number;
898
+ ctype: number;
899
+ nationality?: number;
900
+ sort_id?: number;
901
+ max_hp: StatInterval;
902
+ firepower: StatInterval;
903
+ armor: StatInterval;
904
+ torpedo: StatInterval;
905
+ evasion: StatInterval;
906
+ anti_air: StatInterval;
907
+ asw: StatInterval;
908
+ los: StatInterval;
909
+ luck: StatInterval;
910
+ torpedo_accuracy?: number;
911
+ basic_evasion_term?: number;
912
+ speed: number;
913
+ range?: number;
914
+ fuel?: number;
915
+ ammo?: number;
916
+ next_id?: number;
917
+ next_level?: number;
918
+ slotnum: number;
919
+ slots: SlotSizeVec;
920
+ stock: GearState[];
921
+ speed_group?: SpeedGroup;
922
+ useful?: boolean;
923
+ }
924
+
925
+ export interface GearVecState {
926
+ g1?: GearState;
927
+ g2?: GearState;
928
+ g3?: GearState;
929
+ g4?: GearState;
930
+ g5?: GearState;
931
+ gx?: GearState;
932
+ }
933
+
934
+ export interface GearState {
935
+ id?: string;
936
+ gear_id: number;
937
+ exp?: number;
938
+ stars?: number;
939
+ }
940
+
941
+ export interface TorpedoAttackStyle {
942
+ tag: "TorpedoAttackStyle";
943
+ attack_type: TorpedoAttackType;
928
944
  }
929
945
 
930
- export type ContactRank = "Rank1" | "Rank2" | "Rank3";
946
+ export interface ShellingStyle {
947
+ tag: "ShellingStyle";
948
+ attack_type: ShellingType;
949
+ cutin: DayCutinLike | null;
950
+ power_mod: number;
951
+ accuracy_mod: number;
952
+ hits: number;
953
+ }
931
954
 
932
- export type SpeedGroup = "A" | "B1" | "B2" | "C";
955
+ export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
933
956
 
934
- export interface ShipAnalyzerConfig {
935
- air_state?: AirState;
936
- engagement?: Engagement;
937
- left?: AttackAnalyzerShipConfig;
938
- right?: AttackAnalyzerShipConfig;
957
+ export interface AswAttackStyle {
958
+ tag: "AswAttackStyle";
959
+ attack_type: AswAttackType;
939
960
  }
940
961
 
941
- export interface NightContactChance {
942
- rank1: number;
943
- rank2: number;
944
- rank3: number;
962
+ export interface NightAttackStyle {
963
+ tag: "NightAttackStyle";
964
+ attack_type: NightAttackType;
965
+ cutin: NightCutinLike | null;
966
+ power_mod: number;
967
+ accuracy_mod: number;
968
+ hits: number;
945
969
  }
946
970
 
947
- export interface CompNightCutinAnalysis {
948
- night_contact_chance: NightContactChance;
949
- ships: ShipNightCutinAnalysis[];
950
- }
971
+ export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
951
972
 
952
- export interface ShipNightCutinAnalysis {
953
- ship_id: number;
954
- index: number;
955
- normal: NightCutinActionReport;
956
- chuuha: NightCutinActionReport;
973
+ export interface SupportShellingStyle {
974
+ tag: "SupportShellingStyle";
975
+ attack_type: SupportShellingType;
957
976
  }
958
977
 
959
- export interface NightCutinActionReport
960
- extends ActionReport<NightPhaseAttackStyle> {
961
- cutin_term: number | null;
978
+ export interface ShipConditions extends ShipPosition {
979
+ formation?: Formation;
980
+ amagiri_index?: number | null;
962
981
  }
963
982
 
964
- export interface CompDayCutinAnalysis {
965
- rank3_air_state: AirState;
966
- rank2_air_state: AirState;
967
- main_fleet_los_mod: number | null;
968
- escort_fleet_los_mod: number | null;
969
- ships: ShipDayCutinAnalysis[];
983
+ export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
984
+ formation?: Formation;
970
985
  }
971
986
 
972
- export interface ShipDayCutinAnalysis {
973
- ship_id: number;
974
- role: Role;
975
- index: number;
976
- rank3: DayCutinReport;
977
- rank2: DayCutinReport;
987
+ export interface NodeAttackAnalyzerConfig {
988
+ air_state?: AirState;
989
+ engagement?: Engagement;
990
+ node_state?: NodeState;
991
+ left?: NodeAttackAnalyzerShipConfig;
992
+ right?: NodeAttackAnalyzerShipConfig;
978
993
  }
979
994
 
980
- export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
981
- observation_term: number | null;
995
+ export interface NodeAttackAnalysis {
996
+ left: AttackAnalysis;
997
+ right: AttackAnalysis;
998
+ shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
999
+ night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
982
1000
  }
983
1001
 
984
- export interface DamageReport {
985
- miss_damage_min: number;
986
- miss_damage_max: number;
987
- normal_damage_min: number;
988
- normal_damage_max: number;
989
- critical_damage_min: number;
990
- critical_damage_max: number;
991
- normal_scratch_rate: number;
992
- critical_scratch_rate: number;
993
- damage_density: Histogram<number, number>;
994
- damage_state_density: Histogram<DamageState, number>;
1002
+ export interface MasterEquippability {
1003
+ equip_stype: MstStype[];
1004
+ equip_exslot: number[];
1005
+ equip_ship: Record<number, MstEquipShip>;
1006
+ equip_exslot_ship: Record<number, MstEquipExslotShip>;
1007
+ rules: EquippabilityRule[];
995
1008
  }
996
1009
 
997
- export interface ContactAnalysis {
998
- single: DayContactChance[] | null;
999
- combined: DayContactChance[] | null;
1000
- }
1010
+ export type MstEquipShipValue = null | number[];
1001
1011
 
1002
- export interface DayContactChance {
1003
- air_state: AirState;
1004
- trigger_rate: number;
1005
- rank3: number;
1006
- rank2: number;
1007
- rank1: number;
1008
- total: number;
1012
+ export interface MstEquipExslotShip {
1013
+ api_ctypes: Record<number, number> | null;
1014
+ api_ship_ids: Record<number, number> | null;
1015
+ api_stypes: Record<number, number> | null;
1009
1016
  }
1010
1017
 
1011
- export type AirWaveType = "Jet" | "LandBase" | "Carrier";
1012
-
1013
- export type AirState =
1014
- | "AirSupremacy"
1015
- | "AirSuperiority"
1016
- | "AirParity"
1017
- | "AirDenial"
1018
- | "AirIncapability";
1018
+ export interface MstEquipShip {
1019
+ api_equip_type: Record<number, MstEquipShipValue>;
1020
+ }
1019
1021
 
1020
- export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
1022
+ export interface EquippabilityRule {
1023
+ ship: CompiledEvaler;
1024
+ keys?: string[];
1025
+ include?: string;
1026
+ exclude?: string;
1027
+ }
1021
1028
 
1022
- export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
1029
+ export interface MstStype {
1030
+ api_id: number;
1031
+ api_equip_type: Record<number, number>;
1032
+ }
1023
1033
 
1024
- export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
1034
+ export interface NodeState {
1035
+ map?: number;
1036
+ node?: NodeId;
1037
+ phase?: number;
1038
+ debuff?: boolean;
1039
+ disable_historical_mod?: boolean;
1040
+ landing_battle?: boolean;
1041
+ }
1025
1042
 
1026
- export type SlotSizeVec = (number | null)[];
1043
+ export type NodeId = string;
1027
1044
 
1028
- export type SpecialEnemyType =
1029
- | "None"
1030
- | "SoftSkinned"
1031
- | "Pillbox"
1032
- | "IsolatedIsland"
1033
- | "SupplyDepot"
1034
- | "NewSupplyDepot"
1035
- | "HarbourSummerPrincess"
1036
- | "PtImp"
1037
- | "BattleshipSummerPrincess"
1038
- | "HeavyCruiserSummerPrincess"
1039
- | "FrenchBattleshipPrincess"
1040
- | "AnchorageWaterDemonVacationMode"
1041
- | "DockPrincess"
1042
- | "SummerAircraftCarrierDemon"
1043
- | "EuropeanWaterPrincess";
1045
+ export type ContactRank = "Rank1" | "Rank2" | "Rank3";
1044
1046
 
1045
1047
  export class AirSquadron {
1046
1048
  private constructor();
1047
1049
  free(): void;
1048
1050
  [Symbol.dispose](): void;
1049
- get_gear(key: string): Gear | undefined;
1051
+ fighter_power(): number;
1050
1052
  get_slot_size(index: number): number;
1051
1053
  get_max_slot_size(index: number): number;
1052
- fighter_power(): number;
1053
1054
  interception_power(): number;
1054
1055
  /**
1055
1056
  * 行動半径
1056
1057
  */
1057
1058
  radius(): number;
1059
+ get_gear(key: string): Gear | undefined;
1058
1060
  id: string;
1059
1061
  hash: bigint;
1060
1062
  mode: AirSquadronMode;
@@ -1063,12 +1065,7 @@ export class Analyzer {
1063
1065
  private constructor();
1064
1066
  free(): void;
1065
1067
  [Symbol.dispose](): void;
1066
- analyze_ship_attack(
1067
- config: ShipAnalyzerConfig,
1068
- left: Ship,
1069
- right: Ship,
1070
- attacker_is_left: boolean,
1071
- ): AttackAnalysis;
1068
+ analyze_comp(comp: Comp, config: CompAnalyzerConfig): CompAnalysis;
1072
1069
  analyze_node_attack(
1073
1070
  config: NodeAttackAnalyzerConfig,
1074
1071
  left_comp: Comp,
@@ -1076,7 +1073,12 @@ export class Analyzer {
1076
1073
  right_comp: Comp,
1077
1074
  right_ship: Ship,
1078
1075
  ): NodeAttackAnalysis;
1079
- analyze_comp(comp: Comp, config: CompAnalyzerConfig): CompAnalysis;
1076
+ analyze_ship_attack(
1077
+ config: ShipAnalyzerConfig,
1078
+ left: Ship,
1079
+ right: Ship,
1080
+ attacker_is_left: boolean,
1081
+ ): AttackAnalysis;
1080
1082
  simulate_support_shelling(
1081
1083
  player_comp: Comp,
1082
1084
  enemy_comp: Comp,
@@ -1088,23 +1090,9 @@ export class Comp {
1088
1090
  private constructor();
1089
1091
  free(): void;
1090
1092
  [Symbol.dispose](): void;
1091
- side(): Side;
1092
1093
  is_combined(): boolean;
1093
- is_player(): boolean;
1094
- is_enemy(): boolean;
1095
- has_ship_eid(id: string): boolean;
1096
- first_ship_id(): string | undefined;
1097
- has_route_sup(): boolean;
1098
- meta(): CompMeta;
1099
1094
  get_fleet_id(ft: FleetType): string | undefined;
1100
- get_ship_with_clone(ft: FleetType, key: ShipKey): Ship | undefined;
1101
- get_ship_entity_id(ft: FleetType, key: ShipKey): string | undefined;
1102
- get_ship_by_eid_with_clone(id: string): Ship | undefined;
1103
- default_formation(): Formation;
1104
- /**
1105
- * 艦隊防空値
1106
- */
1107
- adjusted_anti_air(formation_mod: number): number;
1095
+ has_ship_eid(id: string): boolean;
1108
1096
  /**
1109
1097
  * 制空値
1110
1098
  */
@@ -1112,17 +1100,31 @@ export class Comp {
1112
1100
  escort_participates: boolean,
1113
1101
  air_type: AirWaveType,
1114
1102
  ): number | undefined;
1115
- /**
1116
- * マップ索敵
1117
- */
1118
- elos(node_divaricated_factor: number): number | undefined;
1103
+ first_ship_id(): string | undefined;
1104
+ fleet_los_mod(fleet_type: FleetType): number | undefined;
1105
+ has_route_sup(): boolean;
1119
1106
  /**
1120
1107
  * 輸送物資量(TP)
1121
1108
  */
1122
1109
  transport_point(): number;
1110
+ /**
1111
+ * 艦隊防空値
1112
+ */
1113
+ adjusted_anti_air(formation_mod: number): number;
1114
+ default_formation(): Formation;
1115
+ get_ship_entity_id(ft: FleetType, key: ShipKey): string | undefined;
1123
1116
  get_ship_conditions(ship: Ship, formation?: Formation | null): ShipConditions;
1124
- fleet_los_mod(fleet_type: FleetType): number | undefined;
1117
+ get_ship_with_clone(ft: FleetType, key: ShipKey): Ship | undefined;
1118
+ get_ship_by_eid_with_clone(id: string): Ship | undefined;
1119
+ /**
1120
+ * マップ索敵
1121
+ */
1122
+ elos(node_divaricated_factor: number): number | undefined;
1123
+ meta(): CompMeta;
1124
+ side(): Side;
1125
1125
  balloons(): number;
1126
+ is_enemy(): boolean;
1127
+ is_player(): boolean;
1126
1128
  readonly org_type: OrgType;
1127
1129
  readonly hq_level: number;
1128
1130
  main: Fleet;
@@ -1136,59 +1138,59 @@ export class Comp {
1136
1138
  export class FhCore {
1137
1139
  free(): void;
1138
1140
  [Symbol.dispose](): void;
1139
- constructor(js_master: MasterData);
1141
+ create_org(input?: OrgState | null): Org | undefined;
1140
1142
  create_gear(input?: GearState | null): Gear | undefined;
1141
1143
  create_ship(input?: ShipState | null): Ship | undefined;
1142
- create_air_squadron(input?: AirSquadronState | null): AirSquadron;
1143
1144
  create_fleet(input?: FleetState | null): Fleet;
1144
- create_org(input?: OrgState | null): Org | undefined;
1145
- create_ship_state_by_id(ship_id: number): ShipState | undefined;
1146
- create_ship_by_id(ship_id: number): Ship | undefined;
1145
+ create_analyzer(): Analyzer;
1147
1146
  create_all_ships(): Ship[];
1147
+ create_ship_by_id(ship_id: number): Ship | undefined;
1148
+ create_air_squadron(input?: AirSquadronState | null): AirSquadron;
1149
+ create_default_ship(): Ship;
1150
+ create_ship_state_by_id(ship_id: number): ShipState | undefined;
1148
1151
  create_comp_by_map_enemy(
1149
1152
  main: Uint16Array,
1150
1153
  escort?: Uint16Array | null,
1151
1154
  ): Comp;
1152
- create_default_ship(): Ship;
1153
- create_analyzer(): Analyzer;
1155
+ constructor(js_master: MasterData);
1154
1156
  }
1155
1157
  export class Fleet {
1156
1158
  private constructor();
1157
1159
  free(): void;
1158
1160
  [Symbol.dispose](): void;
1159
- meta(): FleetMeta;
1160
- ship_keys(): string[];
1161
- ship_ids(): string[];
1162
- get_gear_ids_by_improvable(): string[];
1163
- get_gear_ids_by_proficiency(): string[];
1161
+ count_ships(): number;
1162
+ fighter_power(air_type: AirWaveType): number | undefined;
1163
+ /**
1164
+ * 遠征ボーナス
1165
+ */
1166
+ expedition_bonus(): number;
1164
1167
  get_damage_bound(id: string, state: DamageState): number | undefined;
1165
- get_remaining_fuel(
1168
+ sum_ship_stat_by(key: string): number | undefined;
1169
+ get_remaining_ammo(
1166
1170
  id: string,
1167
1171
  rate: number,
1168
1172
  ceil: boolean,
1169
1173
  ): number | undefined;
1170
- get_remaining_ammo(
1174
+ get_remaining_fuel(
1171
1175
  id: string,
1172
1176
  rate: number,
1173
1177
  ceil: boolean,
1174
1178
  ): number | undefined;
1175
- count_ships(): number;
1176
- get_ship(key: ShipKey): Ship | undefined;
1177
- fighter_power(air_type: AirWaveType): number | undefined;
1178
- /**
1179
- * マップ索敵
1180
- */
1181
- elos(hq_level: number, node_divaricated_factor: number): number | undefined;
1179
+ reset_battle_state(): void;
1182
1180
  /**
1183
1181
  * 航空索敵スコア
1184
1182
  */
1185
1183
  aviation_detection_score(): number | undefined;
1184
+ get_gear_ids_by_improvable(): string[];
1185
+ get_gear_ids_by_proficiency(): string[];
1186
1186
  /**
1187
- * 遠征ボーナス
1187
+ * マップ索敵
1188
1188
  */
1189
- expedition_bonus(): number;
1190
- sum_ship_stat_by(key: string): number | undefined;
1191
- reset_battle_state(): void;
1189
+ elos(hq_level: number, node_divaricated_factor: number): number | undefined;
1190
+ meta(): FleetMeta;
1191
+ get_ship(key: ShipKey): Ship | undefined;
1192
+ ship_ids(): string[];
1193
+ ship_keys(): string[];
1192
1194
  id: string;
1193
1195
  readonly hash: bigint;
1194
1196
  readonly len: number;
@@ -1198,32 +1200,32 @@ export class Gear {
1198
1200
  private constructor();
1199
1201
  free(): void;
1200
1202
  [Symbol.dispose](): void;
1201
- static default(): Gear;
1202
- has_attr(attr: GearAttr): boolean;
1203
- category(): GearCategory;
1204
- is_high_angle_mount(): boolean;
1205
- is_carrier_shelling_plane(): boolean;
1206
- is_hayabusa_20th_squadron(): boolean;
1207
- has_proficiency(): boolean;
1203
+ is_abyssal(): boolean;
1204
+ is_balloon(): boolean;
1205
+ is_night_plane(): boolean;
1208
1206
  max_exp_eq_120(): boolean;
1207
+ has_proficiency(): boolean;
1208
+ expedition_bonus(): number;
1209
+ is_night_fighter(): boolean;
1210
+ is_night_attacker(): boolean;
1211
+ night_plane_power(slot_size: number, anti_inst: boolean): number;
1212
+ ship_anti_air_mod(): number;
1209
1213
  calc_fighter_power(slot_size: number): number;
1210
- calc_interception_power(slot_size: number): number;
1211
1214
  fleet_anti_air_mod(): number;
1212
- ship_anti_air_mod(): number;
1213
- calc_contact_trigger_factor(slot_size: number): number;
1214
- contact_selection_rate(rank: AirStateRank): number;
1215
1215
  night_contact_rate(level: number): number;
1216
- is_night_attacker(): boolean;
1217
- is_night_fighter(): boolean;
1218
- is_night_plane(): boolean;
1219
- night_plane_power(slot_size: number, anti_inst: boolean): number;
1220
- elos(): number;
1221
- is_abyssal(): boolean;
1216
+ is_high_angle_mount(): boolean;
1217
+ contact_selection_rate(rank: AirStateRank): number;
1218
+ calc_interception_power(slot_size: number): number;
1219
+ is_carrier_shelling_plane(): boolean;
1220
+ is_hayabusa_20th_squadron(): boolean;
1221
+ calc_contact_trigger_factor(slot_size: number): number;
1222
+ can_be_deployed_to_land_base(): boolean;
1222
1223
  is_abyssal_cuttlefish_torpedo(): boolean;
1223
1224
  is_abyssal_patrolling_attack_hawk(): boolean;
1224
- expedition_bonus(): number;
1225
- can_be_deployed_to_land_base(): boolean;
1226
- is_balloon(): boolean;
1225
+ elos(): number;
1226
+ static default(): Gear;
1227
+ category(): GearCategory;
1228
+ has_attr(attr: GearAttr): boolean;
1227
1229
  id: string;
1228
1230
  readonly hash: bigint;
1229
1231
  readonly gear_id: number;
@@ -1251,52 +1253,52 @@ export class Gear {
1251
1253
  readonly improvable: boolean;
1252
1254
  readonly ship_anti_air_resist: number;
1253
1255
  readonly fleet_anti_air_resist: number;
1256
+ readonly anti_bomber: number;
1254
1257
  readonly gear_type_id: number;
1258
+ readonly interception: number;
1255
1259
  readonly special_type: number;
1256
- readonly icon_id: number;
1257
1260
  readonly ace: number;
1258
- readonly anti_bomber: number;
1259
- readonly interception: number;
1261
+ readonly icon_id: number;
1260
1262
  }
1261
1263
  export class Org {
1262
1264
  private constructor();
1263
1265
  free(): void;
1264
1266
  [Symbol.dispose](): void;
1265
- first_ship_id(): string | undefined;
1266
- get_ship_mid(fleet_key: FleetKey, ship_key: ShipKey): number | undefined;
1267
- get_ship_eid(fleet_key: FleetKey, ship_key: ShipKey): string | undefined;
1267
+ clone_ship(fleet_key: FleetKey, ship_key: ShipKey): Ship | undefined;
1268
+ clone_fleet(key: FleetKey): Fleet;
1269
+ create_comp(): Comp;
1270
+ is_combined(): boolean;
1268
1271
  get_fleet_id(key: FleetKey): string;
1269
- air_squadron_ids(): string[];
1272
+ get_ship_eid(fleet_key: FleetKey, ship_key: ShipKey): string | undefined;
1273
+ get_ship_mid(fleet_key: FleetKey, ship_key: ShipKey): number | undefined;
1274
+ first_ship_id(): string | undefined;
1270
1275
  main_ship_ids(): Uint16Array;
1271
- escort_ship_ids(): Uint16Array;
1272
- clone_fleet(key: FleetKey): Fleet;
1273
- clone_ship(fleet_key: FleetKey, ship_key: ShipKey): Ship | undefined;
1276
+ get_fleet_type(key: FleetKey): FleetType | undefined;
1274
1277
  get_ship_by_id(id: string): Ship | undefined;
1275
- ship_keys(key: FleetKey): string[];
1276
- create_comp(): Comp;
1277
- create_comp_by_key(key: FleetKey): Comp;
1278
+ escort_ship_ids(): Uint16Array;
1279
+ air_squadron_ids(): string[];
1278
1280
  get_air_squadron(key: string): AirSquadron;
1279
- get_air_squadron_gear_ids_by_improvable(): string[];
1280
- get_air_squadron_gear_ids_by_proficiency(): string[];
1281
- side(): Side;
1282
- is_player(): boolean;
1283
- is_enemy(): boolean;
1284
- is_single(): boolean;
1285
- is_combined(): boolean;
1281
+ create_comp_by_key(key: FleetKey): Comp;
1286
1282
  /**
1287
1283
  * 防空時の基地制空値
1288
1284
  */
1289
1285
  interception_power(): number;
1290
- /**
1291
- * 高高度迎撃時の基地制空値
1292
- */
1293
- high_altitude_interception_power(): number;
1294
1286
  create_move_ship_payload(
1295
1287
  id: string,
1296
1288
  x: number,
1297
1289
  y: number,
1298
1290
  ): MoveShipPayload | undefined;
1299
- get_fleet_type(key: FleetKey): FleetType | undefined;
1291
+ /**
1292
+ * 高高度迎撃時の基地制空値
1293
+ */
1294
+ high_altitude_interception_power(): number;
1295
+ get_air_squadron_gear_ids_by_improvable(): string[];
1296
+ get_air_squadron_gear_ids_by_proficiency(): string[];
1297
+ side(): Side;
1298
+ is_enemy(): boolean;
1299
+ is_player(): boolean;
1300
+ is_single(): boolean;
1301
+ ship_keys(key: FleetKey): string[];
1300
1302
  id: string;
1301
1303
  readonly hash: bigint;
1302
1304
  readonly hq_level: number;
@@ -1309,70 +1311,70 @@ export class Ship {
1309
1311
  private constructor();
1310
1312
  free(): void;
1311
1313
  [Symbol.dispose](): void;
1312
- static default(): Ship;
1313
- eq_id(id: string): boolean;
1314
- state(): ShipState;
1315
- custom_power_mods(): CustomPowerModifiers;
1316
- meta(): ShipMeta;
1317
- damage_state(): DamageState;
1318
- morale_state(): MoraleState;
1319
- category(): ShipCategory;
1320
- has_attr(attr: ShipAttr): boolean;
1321
- gear_keys(): string[];
1322
- get_gear(key: string): Gear | undefined;
1323
- get_damage_bound(state: DamageState): number | undefined;
1324
- get_remaining_fuel(rate: number, ceil: boolean): number;
1325
- get_remaining_ammo(rate: number, ceil: boolean): number;
1326
- has_unknown_stat(key: string): boolean;
1327
- get_naked_stat(key: string): number | undefined;
1328
- get_stat_interval_left(key: string): number | undefined;
1329
- get_stat_interval_right(key: string): number | undefined;
1330
- get_gear_stat(key: string): number;
1314
+ /**
1315
+ * フィット砲補正
1316
+ */
1317
+ gunfit_accuracy(is_night: boolean): number;
1318
+ state_day_gunfit_accuracy(): number | undefined;
1319
+ state_night_gunfit_accuracy(): number | undefined;
1331
1320
  get_ebonus(key: string): number;
1332
- get_stat_mod(key: string): number | undefined;
1333
1321
  is_abyssal(): boolean;
1334
- is_submarine(): boolean;
1335
1322
  is_amagiri(): boolean;
1336
- can_equip(gear: Gear, key: string): boolean;
1337
- is_installation(): boolean;
1338
- is_pt_imp(): boolean;
1339
- special_enemy_type(): SpecialEnemyType;
1340
- is_attackable_by_torpedo(): boolean;
1341
- get_slot_size(index: number): number | undefined;
1342
- get_max_slot_size(index: number): number | undefined;
1343
- remaining_ammo_mod(): number;
1344
- remaining_fuel_mod(): number;
1345
- fighter_power(air_type: AirWaveType): number | undefined;
1346
- fleet_los_factor(): number | undefined;
1347
1323
  /**
1348
- * 加重対空
1349
- */
1350
- ship_adjusted_anti_air(side: Side): number | undefined;
1351
- /**
1352
- * 艦隊対空補正
1324
+ * 確殺攻撃力
1353
1325
  */
1354
- fleet_anti_air_mod(): number;
1355
- cruiser_fit_bonus(): number;
1356
- basic_accuracy_term(): number | undefined;
1357
- basic_evasion_term(): number | undefined;
1326
+ ohko_power(): number | undefined;
1327
+ damage_state(): DamageState;
1358
1328
  evasion_term(
1359
1329
  formation_mod: number,
1360
1330
  postcap_additive: number,
1361
1331
  postcap_multiplicative: number,
1362
1332
  ): number | undefined;
1363
- basic_defense_power(armor_penetration: number): number | undefined;
1333
+ get_stat_mod(key: string): number | undefined;
1334
+ is_submarine(): boolean;
1335
+ morale_state(): MoraleState;
1336
+ fighter_power(air_type: AirWaveType): number | undefined;
1337
+ get_gear_stat(key: string): number;
1338
+ get_slot_size(index: number): number | undefined;
1339
+ get_naked_stat(key: string): number | undefined;
1340
+ is_installation(): boolean;
1364
1341
  transport_point(): number;
1365
- elos(node_divaricated_factor: number): number | undefined;
1342
+ fleet_los_factor(): number | undefined;
1343
+ get_damage_bound(state: DamageState): number | undefined;
1344
+ has_unknown_stat(key: string): boolean;
1345
+ cruiser_fit_bonus(): number;
1346
+ custom_power_mods(): CustomPowerModifiers;
1347
+ get_max_slot_size(index: number): number | undefined;
1348
+ basic_evasion_term(): number | undefined;
1366
1349
  /**
1367
- * 確殺攻撃力
1350
+ * 艦隊対空補正
1368
1351
  */
1369
- ohko_power(): number | undefined;
1370
- state_day_gunfit_accuracy(): number | undefined;
1371
- state_night_gunfit_accuracy(): number | undefined;
1352
+ fleet_anti_air_mod(): number;
1353
+ get_remaining_ammo(rate: number, ceil: boolean): number;
1354
+ get_remaining_fuel(rate: number, ceil: boolean): number;
1355
+ remaining_ammo_mod(): number;
1356
+ remaining_fuel_mod(): number;
1357
+ special_enemy_type(): SpecialEnemyType;
1358
+ basic_accuracy_term(): number | undefined;
1359
+ basic_defense_power(armor_penetration: number): number | undefined;
1360
+ get_stat_interval_left(key: string): number | undefined;
1372
1361
  /**
1373
- * フィット砲補正
1362
+ * 加重対空
1374
1363
  */
1375
- gunfit_accuracy(is_night: boolean): number;
1364
+ ship_adjusted_anti_air(side: Side): number | undefined;
1365
+ get_stat_interval_right(key: string): number | undefined;
1366
+ is_attackable_by_torpedo(): boolean;
1367
+ elos(node_divaricated_factor: number): number | undefined;
1368
+ meta(): ShipMeta;
1369
+ eq_id(id: string): boolean;
1370
+ state(): ShipState;
1371
+ static default(): Ship;
1372
+ category(): ShipCategory;
1373
+ get_gear(key: string): Gear | undefined;
1374
+ has_attr(attr: ShipAttr): boolean;
1375
+ can_equip(gear: Gear, key: string): boolean;
1376
+ gear_keys(): string[];
1377
+ is_pt_imp(): boolean;
1376
1378
  id: string;
1377
1379
  readonly hash: bigint;
1378
1380
  readonly ship_id: number;
@@ -1384,36 +1386,36 @@ export class Ship {
1384
1386
  readonly ship_type: ShipType;
1385
1387
  readonly ctype: number;
1386
1388
  slots: SlotSizeVec;
1387
- readonly naked_firepower: number | undefined;
1388
- readonly naked_torpedo: number | undefined;
1389
1389
  readonly naked_armor: number | undefined;
1390
- readonly naked_anti_air: number | undefined;
1390
+ readonly naked_range: number | undefined;
1391
+ readonly naked_speed: number;
1392
+ readonly remodel_rank: number;
1391
1393
  readonly naked_evasion: number | undefined;
1392
- readonly naked_asw: number | undefined;
1393
- readonly naked_los: number | undefined;
1394
- readonly firepower: number | undefined;
1395
- readonly torpedo: number | undefined;
1396
- readonly armor: number | undefined;
1397
- readonly anti_air: number | undefined;
1398
- readonly evasion: number | undefined;
1394
+ readonly naked_torpedo: number | undefined;
1395
+ readonly naked_anti_air: number | undefined;
1396
+ readonly naked_firepower: number | undefined;
1397
+ readonly innate_torpedo_accuracy: number;
1399
1398
  readonly asw: number | undefined;
1400
1399
  readonly los: number | undefined;
1400
+ readonly luck: number | undefined;
1401
1401
  readonly name: string;
1402
1402
  readonly yomi: string;
1403
+ readonly armor: number | undefined;
1404
+ readonly range: number | undefined;
1405
+ readonly speed: number;
1403
1406
  readonly stype: number;
1404
- readonly sort_id: number;
1405
- readonly remodel_rank: number;
1406
- readonly slotnum: number;
1407
- readonly next_id: number;
1408
- readonly useful: boolean;
1409
1407
  readonly max_hp: number | undefined;
1408
+ readonly useful: boolean;
1409
+ readonly evasion: number | undefined;
1410
+ readonly next_id: number;
1411
+ readonly slotnum: number;
1412
+ readonly sort_id: number;
1413
+ readonly torpedo: number | undefined;
1414
+ readonly accuracy: number;
1415
+ readonly anti_air: number | undefined;
1410
1416
  readonly max_ammo: number;
1411
1417
  readonly max_fuel: number;
1412
- readonly naked_range: number | undefined;
1413
- readonly naked_speed: number;
1414
- readonly luck: number | undefined;
1415
- readonly range: number | undefined;
1416
- readonly speed: number;
1417
- readonly accuracy: number;
1418
- readonly innate_torpedo_accuracy: number;
1418
+ readonly firepower: number | undefined;
1419
+ readonly naked_asw: number | undefined;
1420
+ readonly naked_los: number | undefined;
1419
1421
  }