fleethub-core 1.12.10 → 1.12.12

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