fleethub-core 1.12.18 → 1.12.20

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