fleethub-core 1.12.17 → 1.12.19

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