fleethub-core 1.12.18 → 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 AswAttackType = "DepthCharge" | "Aerial";
62
-
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 };
69
-
70
- export type DayPhaseAttackType =
71
- | { t: "Shelling"; c: ShellingType }
72
- | { t: "Asw"; c: AswAttackType };
73
-
74
- export type TorpedoAttackType = null;
75
-
76
- export type SupportShellingType = ShellingType;
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 NightAttackType = "Normal" | "Swordfish" | "Aerial";
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 ShellingType = "Normal" | "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 NightCutinLike = NightCutin | FleetCutin;
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
+ }
89
55
 
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";
56
+ export interface AttackAnalyzerShipConfig
57
+ extends ShipConditions,
58
+ NightFleetConditions {
59
+ balloons?: number;
60
+ fleet_los_mod?: number | null;
61
+ }
104
62
 
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";
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
+ }
125
72
 
126
- export type FleetCutin =
127
- | "NelsonTouch"
128
- | "NagatoClassCutin"
129
- | "ColoradoClassCutin"
130
- | "KongouClassCutin"
131
- | "Yamato2ShipCutin"
132
- | "Yamato3ShipCutin"
133
- | "QueenElizabethClassCutin"
134
- | "RichelieuClassCutin";
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,6 +103,86 @@ export interface AttackReport<T> {
146
103
  damage: DamageReport | null;
147
104
  }
148
105
 
106
+ export interface BattleConditions {
107
+ org_type: OrgType;
108
+ role: Role;
109
+ ship_index: number;
110
+ fleet_len: number;
111
+ formation: Formation;
112
+ fleet_los_mod: number | null;
113
+ night_conditions: NightFleetConditions;
114
+ }
115
+
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[];
122
+ }
123
+
124
+ export interface CompAnalysis {
125
+ day: CompDayAnalysis;
126
+ night: CompNightAnalysis;
127
+ contact: ContactAnalysis;
128
+ anti_air: CompAntiAirAnalysis;
129
+ }
130
+
131
+ export interface CompAnalyzerConfig {
132
+ engagement: Engagement;
133
+ formation: Formation;
134
+ anti_air_cutin: number | null;
135
+ ship_anti_air_resist: number;
136
+ fleet_anti_air_resist: number;
137
+ left_night_fleet_conditions: NightFleetConditions;
138
+ right_night_fleet_conditions: NightFleetConditions;
139
+ }
140
+
141
+ export interface CompAntiAirAnalysis {
142
+ fleet_adjusted_anti_air: number;
143
+ ships: AntiAirReport[];
144
+ anti_air_cutin_chance: [number, number][];
145
+ }
146
+
147
+ export interface CompDayAnalysis {
148
+ day_cutin: CompDayCutinAnalysis;
149
+ fleet_cutin: FleetCutinReport<ShellingStyle>[];
150
+ }
151
+
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[];
158
+ }
159
+
160
+ export interface CompMeta {
161
+ fleets: Record<FleetType, FleetMeta>;
162
+ }
163
+
164
+ export interface CompNightAnalysis {
165
+ night_cutin: CompNightCutinAnalysis;
166
+ fleet_cutin: FleetCutinReport<NightAttackStyle>[];
167
+ }
168
+
169
+ export interface CompNightCutinAnalysis {
170
+ night_contact_chance: NightContactChance;
171
+ ships: ShipNightCutinAnalysis[];
172
+ }
173
+
174
+ export interface ContactAnalysis {
175
+ single: DayContactChance[] | null;
176
+ combined: DayContactChance[] | null;
177
+ }
178
+
179
+ export interface CustomPowerModifiers {
180
+ precap_mod?: AttackPowerModifier;
181
+ postcap_mod?: AttackPowerModifier;
182
+ basic_power_mod?: AttackPowerModifier;
183
+ historical_mod?: AttackPowerModifier;
184
+ }
185
+
149
186
  export interface DamageReport {
150
187
  miss_damage_min: number;
151
188
  miss_damage_max: number;
@@ -156,84 +193,166 @@ export interface DamageReport {
156
193
  normal_scratch_rate: number;
157
194
  critical_scratch_rate: number;
158
195
  damage_density: Histogram<number, number>;
196
+ damage_density_no_penetration: Histogram<number, number> | null;
159
197
  damage_state_density: Histogram<DamageState, number>;
160
198
  }
161
199
 
200
+ export interface DayContactChance {
201
+ air_state: AirState;
202
+ trigger_rate: number;
203
+ rank3: number;
204
+ rank2: number;
205
+ rank1: number;
206
+ total: number;
207
+ }
208
+
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;
215
+ }
216
+
162
217
  export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
163
218
  observation_term: number | null;
164
219
  }
165
220
 
166
- export interface ShipDayCutinAnalysis {
167
- ship_id: number;
168
- role: Role;
169
- index: number;
170
- rank3: DayCutinReport;
171
- rank2: DayCutinReport;
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;
172
232
  }
173
233
 
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[];
234
+ export interface EquippabilityRule {
235
+ ship: CompiledEvaler;
236
+ keys?: string[];
237
+ include?: string;
238
+ exclude?: string;
180
239
  }
181
240
 
182
- export interface ShipNightCutinAnalysis {
183
- ship_id: number;
241
+ export interface FleetCutinAttackReport<T> extends AttackReport<T> {
184
242
  index: number;
185
- normal: NightCutinActionReport;
186
- chuuha: NightCutinActionReport;
243
+ ship_id: number;
244
+ power_mod: number;
245
+ }
246
+
247
+ export interface FleetCutinReport<T> {
248
+ cutin: FleetCutin;
249
+ rate: number | null;
250
+ formation: Formation;
251
+ attacks: FleetCutinAttackReport<T>[];
252
+ }
253
+
254
+ export interface FleetMeta {
255
+ id: string;
256
+ len: number;
257
+ ships: [string, ShipMeta | null][];
258
+ }
259
+
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
+ }
271
+
272
+ export interface FormationCombatModifiersDef {
273
+ power_mod?: number;
274
+ accuracy_mod?: number;
275
+ evasion_mod?: number;
276
+ }
277
+
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
+ }
288
+
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
+ }
306
+
307
+ export interface GearState {
308
+ id?: string;
309
+ gear_id: number;
310
+ exp?: number;
311
+ stars?: number;
187
312
  }
188
313
 
189
- export interface NightContactChance {
190
- rank1: number;
191
- rank2: number;
192
- rank3: number;
314
+ export interface GearVecState {
315
+ g1?: GearState;
316
+ g2?: GearState;
317
+ g3?: GearState;
318
+ g4?: GearState;
319
+ g5?: GearState;
320
+ gx?: GearState;
193
321
  }
194
322
 
195
- export interface CompNightCutinAnalysis {
196
- night_contact_chance: NightContactChance;
197
- ships: ShipNightCutinAnalysis[];
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;
198
334
  }
199
335
 
200
- export interface NightCutinActionReport
201
- extends ActionReport<NightPhaseAttackStyle> {
202
- cutin_term: number | null;
336
+ export interface HistoricalParams {
337
+ power_mod: AttackPowerModifier;
338
+ armor_penetration: number;
339
+ accuracy_mod: number;
340
+ target_evasion_mod: number;
203
341
  }
204
342
 
205
- export type StatInterval = [number | null, number | null];
343
+ export interface HitRate {
344
+ normal: number;
345
+ critical: number;
346
+ total: number;
347
+ }
206
348
 
207
- export interface MasterShip {
208
- ship_id: number;
209
- name: string;
210
- yomi: string;
211
- stype: number;
212
- ctype: number;
213
- nationality?: number;
214
- sort_id?: number;
215
- max_hp: StatInterval;
216
- firepower: StatInterval;
217
- armor: StatInterval;
218
- torpedo: StatInterval;
219
- evasion: StatInterval;
220
- anti_air: StatInterval;
221
- asw: StatInterval;
222
- los: StatInterval;
223
- luck: StatInterval;
224
- torpedo_accuracy?: number;
225
- basic_evasion_term?: number;
226
- speed: number;
227
- range?: number;
228
- fuel?: number;
229
- ammo?: number;
230
- next_id?: number;
231
- next_level?: number;
232
- slotnum: number;
233
- slots: SlotSizeVec;
234
- stock: GearState[];
235
- speed_group?: SpeedGroup;
236
- useful?: boolean;
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;
237
356
  }
238
357
 
239
358
  export interface MasterAttrRule<T> {
@@ -242,6 +361,14 @@ export interface MasterAttrRule<T> {
242
361
  expr: CompiledEvaler;
243
362
  }
244
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
+
245
372
  export interface MasterData extends MasterBattleDefinitions {
246
373
  created_at: number;
247
374
  gears: MasterGear[];
@@ -252,179 +379,129 @@ export interface MasterData extends MasterBattleDefinitions {
252
379
  equippability: MasterEquippability;
253
380
  }
254
381
 
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;
290
- }
291
-
292
- export interface SupportShellingStyle {
293
- tag: "SupportShellingStyle";
294
- attack_type: SupportShellingType;
295
- }
296
-
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;
306
- }
307
-
308
- export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
309
-
310
- export interface AswAttackStyle {
311
- tag: "AswAttackStyle";
312
- attack_type: AswAttackType;
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[];
313
388
  }
314
389
 
315
- export interface NightAttackStyle {
316
- tag: "NightAttackStyle";
317
- attack_type: NightAttackType;
318
- cutin: NightCutinLike | null;
319
- power_mod: number;
320
- accuracy_mod: number;
321
- hits: number;
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;
322
414
  }
323
415
 
324
- export interface TorpedoAttackStyle {
325
- tag: "TorpedoAttackStyle";
326
- attack_type: TorpedoAttackType;
416
+ export interface MasterIBonusRule {
417
+ expr: CompiledEvaler;
418
+ formula: CompiledEvaler;
327
419
  }
328
420
 
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";
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
+ }
388
440
 
389
- export interface DayContactChance {
390
- air_state: AirState;
391
- trigger_rate: number;
392
- rank3: number;
393
- rank2: number;
394
- rank1: number;
395
- total: number;
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;
396
471
  }
397
472
 
398
- export interface ContactAnalysis {
399
- single: DayContactChance[] | null;
400
- combined: DayContactChance[] | null;
473
+ export interface MoveShipPayload {
474
+ current: [string, string, ShipKey];
475
+ target: [string | null, string, ShipKey];
401
476
  }
402
477
 
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;
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;
410
482
  }
411
483
 
412
- export type NodeId = string;
484
+ export interface MstEquipShip {
485
+ api_equip_type: Record<number, MstEquipShipValue>;
486
+ }
413
487
 
414
- export type SpeedGroup = "A" | "B1" | "B2" | "C";
488
+ export interface MstStype {
489
+ api_id: number;
490
+ api_equip_type: Record<number, number>;
491
+ }
415
492
 
416
- export interface SupportShellingSimulatorParams {
417
- attacker_formation?: Formation;
418
- target_formation?: Formation;
419
- engagement: Engagement;
420
- node_state: NodeState;
493
+ export interface NationalityDef {
494
+ id: number;
495
+ ctypes: number[];
421
496
  }
422
497
 
423
- export interface NightFleetConditions {
424
- night_contact_rank?: ContactRank | null;
425
- starshell_index?: number | null;
426
- searchlight_index?: number | null;
427
- activates_large_searchlight?: boolean;
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;
428
505
  }
429
506
 
430
507
  export interface NightConditions {
@@ -432,191 +509,172 @@ export interface NightConditions {
432
509
  enemy?: NightFleetConditions;
433
510
  }
434
511
 
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;
458
- }
459
-
460
- export interface ShipAnalyzerConfig {
461
- air_state?: AirState;
462
- engagement?: Engagement;
463
- left?: AttackAnalyzerShipConfig;
464
- right?: AttackAnalyzerShipConfig;
512
+ export interface NightContactChance {
513
+ rank1: number;
514
+ rank2: number;
515
+ rank3: number;
465
516
  }
466
517
 
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[];
518
+ export interface NightCutinActionReport
519
+ extends ActionReport<NightPhaseAttackStyle> {
520
+ cutin_term: number | null;
477
521
  }
478
522
 
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;
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;
488
529
  }
489
530
 
490
- export interface GearState {
491
- id?: string;
492
- gear_id: number;
493
- exp?: number;
494
- stars?: 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;
495
536
  }
496
537
 
497
- export type ContactRank = "Rank1" | "Rank2" | "Rank3";
498
-
499
- export interface FleetMeta {
500
- id: string;
501
- len: number;
502
- ships: [string, ShipMeta | null][];
538
+ export interface NodeAttackAnalysis {
539
+ left: AttackAnalysis;
540
+ right: AttackAnalysis;
541
+ shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
542
+ night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
503
543
  }
504
544
 
505
- export interface CompMeta {
506
- fleets: Record<FleetType, FleetMeta>;
545
+ export interface NodeAttackAnalyzerConfig {
546
+ air_state?: AirState;
547
+ engagement?: Engagement;
548
+ node_state?: NodeState;
549
+ left?: NodeAttackAnalyzerShipConfig;
550
+ right?: NodeAttackAnalyzerShipConfig;
507
551
  }
508
552
 
509
- export interface ShipMeta {
510
- id: string;
511
- ship_id: number;
553
+ export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
554
+ formation?: Formation;
512
555
  }
513
556
 
514
- export interface ActionReport<T> {
515
- data: Record<string, AttackReport<T>>;
516
- damage_state_density: Histogram<DamageState, number> | null;
517
- is_active: boolean;
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;
518
564
  }
519
565
 
520
- export interface SimulatorResultItem {
521
- id: string;
522
- fleet_type: FleetType;
523
- index: number;
524
- damage_state_map: Record<DamageState, number>;
566
+ export interface OrgState {
567
+ id?: string;
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;
525
580
  }
526
581
 
527
- export interface SimulatorResult {
528
- items: SimulatorResultItem[];
529
- sunk_vec: [number, number, number][];
582
+ export interface ShellingStyle {
583
+ tag: "ShellingStyle";
584
+ attack_type: ShellingType;
585
+ cutin: DayCutinLike | null;
586
+ power_mod: number;
587
+ accuracy_mod: number;
588
+ hits: number;
530
589
  }
531
590
 
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;
591
+ export interface ShipAnalyzerConfig {
592
+ air_state?: AirState;
593
+ engagement?: Engagement;
594
+ left?: AttackAnalyzerShipConfig;
595
+ right?: AttackAnalyzerShipConfig;
544
596
  }
545
597
 
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[];
598
+ export interface ShipConditions extends ShipPosition {
599
+ formation?: Formation;
600
+ amagiri_index?: number | null;
554
601
  }
555
602
 
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;
603
+ export interface ShipDayCutinAnalysis {
604
+ ship_id: number;
605
+ role: Role;
606
+ index: number;
607
+ rank3: DayCutinReport;
608
+ rank2: DayCutinReport;
562
609
  }
563
610
 
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;
611
+ export interface ShipInput {
612
+ ship_id: number;
613
+ ctype: number;
614
+ stype: number;
615
+ yomi: string;
570
616
  }
571
617
 
572
- export interface AntiAirCutinDef {
573
- id: number;
574
- type_factor: number | null;
575
- multiplier: number | null;
576
- guaranteed: number | null;
577
- sequential: boolean | null;
618
+ export interface ShipMeta {
619
+ id: string;
620
+ ship_id: number;
578
621
  }
579
622
 
580
- export interface HistoricalParams {
581
- power_mod: AttackPowerModifier;
582
- armor_penetration: number;
583
- accuracy_mod: number;
584
- target_evasion_mod: number;
623
+ export interface ShipNightCutinAnalysis {
624
+ ship_id: number;
625
+ index: number;
626
+ normal: NightCutinActionReport;
627
+ chuuha: NightCutinActionReport;
585
628
  }
586
629
 
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;
630
+ export interface ShipPosition {
631
+ org_type?: OrgType;
632
+ fleet_type?: FleetType;
633
+ fleet_len?: number;
634
+ index?: number;
596
635
  }
597
636
 
598
- export interface FormationCombatModifiersDef {
599
- power_mod?: number;
600
- 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;
601
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;
602
657
  }
603
658
 
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;
659
+ export interface SimulatorResult {
660
+ items: SimulatorResultItem[];
661
+ sunk_vec: [number, number, number][];
615
662
  }
616
663
 
617
- export type NestedFormationDef =
618
- | FormationDef
619
- | { top_half: FormationDef; bottom_half: FormationDef };
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;
677
+ }
620
678
 
621
679
  export interface SpecialEnemyModifiers {
622
680
  precap_general_mod: AttackPowerModifier;
@@ -637,23 +695,30 @@ export interface SpecialEnemyModifiers {
637
695
  landing_forces_t4kai_mod: AttackPowerModifier;
638
696
  t4_tank_group_mod: AttackPowerModifier;
639
697
  t4_tank_kai_mod: AttackPowerModifier;
698
+ panzer2_mod: AttackPowerModifier;
699
+ r35_french_mod: AttackPowerModifier;
640
700
  postcap_general_mod: AttackPowerModifier;
641
701
  pt_mod: AttackPowerModifier | null;
642
702
  }
643
703
 
644
- export interface AttackPowerModifier {
645
- a?: number;
646
- b?: number;
704
+ export interface SupportShellingSimulatorParams {
705
+ attacker_formation?: Formation;
706
+ target_formation?: Formation;
707
+ engagement: Engagement;
708
+ node_state: NodeState;
647
709
  }
648
710
 
649
- export interface CustomPowerModifiers {
650
- precap_mod?: AttackPowerModifier;
651
- postcap_mod?: AttackPowerModifier;
652
- basic_power_mod?: AttackPowerModifier;
653
- historical_mod?: AttackPowerModifier;
711
+ export interface SupportShellingStyle {
712
+ tag: "SupportShellingStyle";
713
+ attack_type: SupportShellingType;
654
714
  }
655
715
 
656
- export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
716
+ export interface TorpedoAttackStyle {
717
+ tag: "TorpedoAttackStyle";
718
+ attack_type: TorpedoAttackType;
719
+ }
720
+
721
+ export type AirSquadronMode = "Sortie" | "AirDefense";
657
722
 
658
723
  export type AirState =
659
724
  | "AirSupremacy"
@@ -662,15 +727,20 @@ export type AirState =
662
727
  | "AirDenial"
663
728
  | "AirIncapability";
664
729
 
665
- export type Formation = SingleFormation | CombinedFormation;
730
+ export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
666
731
 
667
- export type SingleFormation =
668
- | "LineAhead"
669
- | "DoubleLine"
670
- | "Diamond"
671
- | "Echelon"
672
- | "LineAbreast"
673
- | "Vanguard";
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 };
674
744
 
675
745
  export type CombinedFormation =
676
746
  | "Cruising1"
@@ -678,148 +748,86 @@ export type CombinedFormation =
678
748
  | "Cruising3"
679
749
  | "Cruising4";
680
750
 
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
- }
751
+ export type ContactRank = "Rank1" | "Rank2" | "Rank3";
713
752
 
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
- }
753
+ export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
725
754
 
726
- export interface FleetCutinAttackReport<T> extends AttackReport<T> {
727
- index: number;
728
- ship_id: number;
729
- power_mod: number;
730
- }
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";
731
769
 
732
- export interface FleetCutinReport<T> {
733
- cutin: FleetCutin;
734
- rate: number | null;
735
- formation: Formation;
736
- attacks: FleetCutinAttackReport<T>[];
737
- }
770
+ export type DayCutinLike = DayCutin | FleetCutin;
738
771
 
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
- }
772
+ export type DayPhaseAttackStyle = ShellingStyle | AswAttackStyle;
764
773
 
765
- export interface MoveShipPayload {
766
- current: [string, string, ShipKey];
767
- target: [string | null, string, ShipKey];
768
- }
774
+ export type DayPhaseAttackType =
775
+ | { t: "Shelling"; c: ShellingType }
776
+ | { t: "Asw"; c: AswAttackType };
769
777
 
770
- export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
778
+ export type DensityDetail = "Total" | "WithNoPenetration";
771
779
 
772
- export interface ShipConditions extends ShipPosition {
773
- formation?: Formation;
774
- amagiri_index?: number | null;
775
- }
780
+ export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
776
781
 
777
- export type AirSquadronMode = "Sortie" | "AirDefense";
782
+ export type FhResult<T> = { Ok: T } | { Err: string };
778
783
 
779
- export interface AirSquadronState extends GearVecState, SlotSizeVecState {
780
- id?: string;
781
- mode?: AirSquadronMode;
782
- }
784
+ export type FleetCutin =
785
+ | "NelsonTouch"
786
+ | "NagatoClassCutin"
787
+ | "ColoradoClassCutin"
788
+ | "KongouClassCutin"
789
+ | "Yamato2ShipCutin"
790
+ | "Yamato3ShipCutin"
791
+ | "QueenElizabethClassCutin"
792
+ | "RichelieuClassCutin";
783
793
 
784
- export interface ShipInput {
785
- ship_id: number;
786
- ctype: number;
787
- stype: number;
788
- yomi: string;
789
- }
794
+ export type FleetKey = "f1" | "f2" | "f3" | "f4";
790
795
 
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
- }
796
+ export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
808
797
 
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
- }
798
+ export type Formation = SingleFormation | CombinedFormation;
821
799
 
822
- export type GearVecInput = GearInput[];
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";
823
831
 
824
832
  export type GearCategory =
825
833
  | "Fighter"
@@ -899,180 +907,177 @@ export type GearType =
899
907
  | "CbRecon2"
900
908
  | "SecondaryGun2";
901
909
 
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
- }
910
+ export type GearTypeIdArray = [number, number, number, number, number];
917
911
 
918
- export type FleetKey = "f1" | "f2" | "f3" | "f4";
912
+ export type GearVecInput = GearInput[];
919
913
 
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
- }
914
+ export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
928
915
 
929
- export interface HitRate {
930
- normal: number;
931
- critical: number;
932
- total: number;
933
- }
916
+ export type MstEquipShipValue = null | number[];
934
917
 
935
- export interface CompNightAnalysis {
936
- night_cutin: CompNightCutinAnalysis;
937
- fleet_cutin: FleetCutinReport<NightAttackStyle>[];
938
- }
918
+ export type NestedFormationDef =
919
+ | FormationDef
920
+ | { top_half: FormationDef; bottom_half: FormationDef };
939
921
 
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
- }
922
+ export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
949
923
 
950
- export interface CompDayAnalysis {
951
- day_cutin: CompDayCutinAnalysis;
952
- fleet_cutin: FleetCutinReport<ShellingStyle>[];
953
- }
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";
954
944
 
955
- export interface CompAnalysis {
956
- day: CompDayAnalysis;
957
- night: CompNightAnalysis;
958
- contact: ContactAnalysis;
959
- anti_air: CompAntiAirAnalysis;
960
- }
945
+ export type NightCutinLike = NightCutin | FleetCutin;
961
946
 
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
- }
947
+ export type NightPhaseAttackStyle = NightAttackStyle | AswAttackStyle;
973
948
 
974
- export interface NodeAttackAnalysis {
975
- left: AttackAnalysis;
976
- right: AttackAnalysis;
977
- shelling_fleet_cutin: FleetCutinReport<ShellingStyle>[];
978
- night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
979
- }
949
+ export type NightPhaseAttackType =
950
+ | { t: "Night"; c: NightAttackType }
951
+ | { t: "Asw"; c: AswAttackType };
980
952
 
981
- export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
982
- formation?: Formation;
983
- }
953
+ export type NodeId = string;
984
954
 
985
- export interface NodeAttackAnalyzerConfig {
986
- air_state?: AirState;
987
- engagement?: Engagement;
988
- node_state?: NodeState;
989
- left?: NodeAttackAnalyzerShipConfig;
990
- right?: NodeAttackAnalyzerShipConfig;
991
- }
955
+ export type OrgType =
956
+ | "Single"
957
+ | "CarrierTaskForce"
958
+ | "SurfaceTaskForce"
959
+ | "TransportEscort"
960
+ | "EnemySingle"
961
+ | "EnemyCombined";
992
962
 
993
- export interface AttackAnalyzerShipConfig
994
- extends ShipConditions,
995
- NightFleetConditions {
996
- balloons?: number;
997
- fleet_los_mod?: number | null;
998
- }
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";
999
1000
 
1000
- export interface MasterIBonusRule {
1001
- expr: CompiledEvaler;
1002
- formula: CompiledEvaler;
1003
- }
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";
1004
1025
 
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
- }
1026
+ export type Side = "Player" | "Enemy";
1024
1027
 
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
- }
1028
+ export type SingleFormation =
1029
+ | "LineAhead"
1030
+ | "DoubleLine"
1031
+ | "Diamond"
1032
+ | "Echelon"
1033
+ | "LineAbreast"
1034
+ | "Vanguard";
1032
1035
 
1033
- export interface MstEquipShip {
1034
- api_equip_type: Record<number, MstEquipShipValue>;
1035
- }
1036
+ export type SlotSizeVec = (number | null)[];
1036
1037
 
1037
- export interface EquippabilityRule {
1038
- ship: CompiledEvaler;
1039
- keys?: string[];
1040
- include?: string;
1041
- exclude?: string;
1042
- }
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";
1043
1054
 
1044
- export type MstEquipShipValue = null | number[];
1055
+ export type SpeedGroup = "A" | "B1" | "B2" | "C";
1045
1056
 
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
- }
1057
+ export type StatInterval = [number | null, number | null];
1051
1058
 
1052
- export interface MstStype {
1053
- api_id: number;
1054
- api_equip_type: Record<number, number>;
1055
- }
1059
+ export type SupportShellingType = ShellingType;
1056
1060
 
1057
- export type CompiledEvaler = string;
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
1229
  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;
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
- /**
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;
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;
1340
1346
  damage_state(): DamageState;
1347
+ static default(): Ship;
1348
+ elos(node_divaricated_factor: number): number | undefined;
1349
+ eq_id(id: string): boolean;
1341
1350
  evasion_term(
1342
1351
  formation_mod: number,
1343
1352
  postcap_additive: number,
1344
1353
  postcap_multiplicative: number,
1345
1354
  ): number | undefined;
1346
- get_stat_mod(key: string): number | undefined;
1347
- is_submarine(): boolean;
1348
- morale_state(): MoraleState;
1349
1355
  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
1356
  /**
1363
1357
  * 艦隊対空補正
1364
1358
  */
1365
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;
1366
1368
  get_remaining_ammo(rate: number, ceil: boolean): number;
1367
1369
  get_remaining_fuel(rate: number, ceil: boolean): number;
1370
+ get_slot_size(index: number): number | undefined;
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;
1374
+ /**
1375
+ * フィット砲補正
1376
+ */
1377
+ gunfit_accuracy(is_night: boolean): number;
1378
+ has_attr(attr: ShipAttr): boolean;
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
+ is_pt_imp(): boolean;
1385
+ is_submarine(): boolean;
1386
+ meta(): ShipMeta;
1387
+ morale_state(): MoraleState;
1388
+ /**
1389
+ * 確殺攻撃力
1390
+ */
1391
+ ohko_power(): number | undefined;
1368
1392
  remaining_ammo_mod(): number;
1369
1393
  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
1394
  /**
1375
1395
  * 加重対空
1376
1396
  */
1377
1397
  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;
1398
+ special_enemy_type(): SpecialEnemyType;
1383
1399
  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;
1400
+ state_day_gunfit_accuracy(): number | undefined;
1401
+ state_night_gunfit_accuracy(): number | undefined;
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;