fleethub-core 1.10.12 → 1.10.15

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.
@@ -8,20 +8,8 @@ export function parse_ship_conditions(value: ShipConditions): ShipConditions;
8
8
  /**
9
9
  */
10
10
  export function set_panic_hook(): void;
11
- export interface HitRate {
12
- normal: number;
13
- critical: number;
14
- total: number;
15
- }
16
11
 
17
- export interface HitRateParams {
18
- accuracy_term: number;
19
- evasion_term: number;
20
- target_morale_mod: number;
21
- critical_rate_constant: number;
22
- critical_percentage_bonus: number;
23
- hit_percentage_bonus: number;
24
- }
12
+ export type Histogram<K extends keyof any, V> = Partial<Record<K, V>>;
25
13
 
26
14
  export interface NodeAttackAnalyzerShipConfig extends NightFleetConditions {
27
15
  formation?: Formation;
@@ -42,106 +30,169 @@ export interface NodeAttackAnalysis {
42
30
  night_fleet_cutin: FleetCutinReport<NightAttackStyle>[];
43
31
  }
44
32
 
45
- export interface ContactAnalysis {
46
- single: DayContactChance[] | null;
47
- combined: DayContactChance[] | null;
33
+ export interface CompAnalyzerConfig {
34
+ engagement: Engagement;
35
+ formation: Formation;
36
+ anti_air_cutin: number | null;
37
+ ship_anti_air_resist: number;
38
+ fleet_anti_air_resist: number;
39
+ left_night_fleet_conditions: NightFleetConditions;
40
+ right_night_fleet_conditions: NightFleetConditions;
48
41
  }
49
42
 
50
- export interface DayContactChance {
51
- air_state: AirState;
52
- trigger_rate: number;
53
- rank3: number;
54
- rank2: number;
55
- rank1: number;
56
- total: number;
43
+ export interface CompNightAnalysis {
44
+ night_cutin: CompNightCutinAnalysis;
45
+ fleet_cutin: FleetCutinReport<NightAttackStyle>[];
57
46
  }
58
47
 
59
- export interface GearState {
60
- id?: string;
61
- gear_id: number;
62
- exp?: number;
63
- stars?: number;
48
+ export interface CompDayAnalysis {
49
+ day_cutin: CompDayCutinAnalysis;
50
+ fleet_cutin: FleetCutinReport<ShellingStyle>[];
64
51
  }
65
52
 
66
- export interface GearVecState {
67
- g1?: GearState;
68
- g2?: GearState;
69
- g3?: GearState;
70
- g4?: GearState;
71
- g5?: GearState;
72
- gx?: GearState;
53
+ export interface CompAnalysis {
54
+ day: CompDayAnalysis;
55
+ night: CompNightAnalysis;
56
+ contact: ContactAnalysis;
57
+ anti_air: CompAntiAirAnalysis;
73
58
  }
74
59
 
75
- export interface SlotSizeVecState {
76
- ss1?: number;
77
- ss2?: number;
78
- ss3?: number;
79
- ss4?: number;
80
- ss5?: number;
60
+ export interface CompAntiAirAnalysis {
61
+ fleet_adjusted_anti_air: number;
62
+ ships: AntiAirReport[];
63
+ anti_air_cutin_chance: [number, number][];
81
64
  }
82
65
 
83
- export interface ShipState extends GearVecState, SlotSizeVecState {
84
- id?: string;
66
+ export interface AntiAirReport {
85
67
  ship_id: number;
86
- level?: number;
87
- current_hp?: number;
88
- morale?: number;
89
- ammo?: number;
90
- fuel?: number;
91
- max_hp_mod?: number;
92
- firepower_mod?: number;
93
- torpedo_mod?: number;
94
- armor_mod?: number;
95
- anti_air_mod?: number;
96
- evasion_mod?: number;
97
- asw_mod?: number;
98
- los_mod?: number;
99
- luck_mod?: number;
100
- day_gunfit_accuracy?: number;
101
- night_gunfit_accuracy?: number;
102
- custom_power_mods?: CustomPowerModifiers;
68
+ role: Role;
69
+ index: number;
70
+ adjusted_anti_air: number | null;
71
+ proportional_shotdown_rate: number | null;
72
+ fixed_shotdown_number: number | null;
73
+ guaranteed: number | null;
74
+ anti_air_cutin_chance: [number, number][];
75
+ anti_air_propellant_barrage_chance: number | null;
103
76
  }
104
77
 
105
- export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
78
+ export type OrgType =
79
+ | "Single"
80
+ | "CarrierTaskForce"
81
+ | "SurfaceTaskForce"
82
+ | "TransportEscort"
83
+ | "EnemySingle"
84
+ | "EnemyCombined";
106
85
 
107
- export type SpeedGroup = "A" | "B1" | "B2" | "C";
86
+ export type GearVecInput = GearInput[];
108
87
 
109
- export interface EquippabilityRule {
110
- ship: CompiledEvaler;
111
- keys?: string[];
112
- include?: string;
113
- exclude?: string;
88
+ export interface GearInput {
89
+ gear_id: number;
90
+ types: GearTypeIdArray;
91
+ firepower: number;
92
+ torpedo: number;
93
+ anti_air: number;
94
+ armor: number;
95
+ evasion: number;
96
+ asw: number;
97
+ los: number;
98
+ bombing: number;
99
+ accuracy: number;
100
+ range: number;
101
+ radius: number;
102
+ stars: number;
103
+ ace: number;
114
104
  }
115
105
 
116
- export interface MasterEquippability {
117
- equip_stype: EquipStype[];
118
- equip_exslot: number[];
119
- equip_ship: MstEquipShip[];
120
- equip_exslot_ship: MstEquipExslotShip[];
121
- rules: EquippabilityRule[];
106
+ export interface ShipInput {
107
+ ship_id: number;
108
+ ctype: number;
109
+ stype: number;
110
+ yomi: string;
122
111
  }
123
112
 
124
- export interface MstEquipExslotShip {
125
- api_slotitem_id: number;
126
- api_ship_ids: number[];
113
+ export interface EBonuses {
114
+ firepower: number;
115
+ torpedo: number;
116
+ anti_air: number;
117
+ armor: number;
118
+ evasion: number;
119
+ asw: number;
120
+ los: number;
121
+ bombing: number;
122
+ accuracy: number;
123
+ range: number;
127
124
  }
128
125
 
129
- export interface MstEquipShip {
130
- api_ship_id: number;
131
- api_equip_type: number[];
126
+ export interface HitRate {
127
+ normal: number;
128
+ critical: number;
129
+ total: number;
132
130
  }
133
131
 
134
- export interface EquipStype {
135
- id: number;
136
- equip_type: number[];
132
+ export interface HitRateParams {
133
+ accuracy_term: number;
134
+ evasion_term: number;
135
+ target_morale_mod: number;
136
+ critical_rate_constant: number;
137
+ critical_percentage_bonus: number;
138
+ hit_percentage_bonus: number;
137
139
  }
138
140
 
139
- export interface ActionReport<T> {
140
- data: Record<string, AttackReport<T>>;
141
- damage_state_density: Histogram<DamageState, number> | null;
142
- is_active: boolean;
141
+ export interface DamageReport {
142
+ miss_damage_min: number;
143
+ miss_damage_max: number;
144
+ normal_damage_min: number;
145
+ normal_damage_max: number;
146
+ critical_damage_min: number;
147
+ critical_damage_max: number;
148
+ normal_scratch_rate: number;
149
+ critical_scratch_rate: number;
150
+ damage_density: Histogram<number, number>;
151
+ damage_state_density: Histogram<DamageState, number>;
152
+ }
153
+
154
+ export interface ContactAnalysis {
155
+ single: DayContactChance[] | null;
156
+ combined: DayContactChance[] | null;
157
+ }
158
+
159
+ export interface DayContactChance {
160
+ air_state: AirState;
161
+ trigger_rate: number;
162
+ rank3: number;
163
+ rank2: number;
164
+ rank1: number;
165
+ total: number;
166
+ }
167
+
168
+ export type NodeId = string;
169
+
170
+ export interface NodeState {
171
+ map?: number;
172
+ node?: NodeId;
173
+ phase?: number;
174
+ debuff?: boolean;
175
+ disable_historical_mod?: boolean;
176
+ }
177
+
178
+ export interface OrgState {
179
+ id?: string;
180
+ f1?: FleetState;
181
+ f2?: FleetState;
182
+ f3?: FleetState;
183
+ f4?: FleetState;
184
+ a1?: AirSquadronState;
185
+ a2?: AirSquadronState;
186
+ a3?: AirSquadronState;
187
+ hq_level?: number;
188
+ org_type?: OrgType;
189
+ sortie?: FleetKey;
190
+ route_sup?: FleetKey;
191
+ boss_sup?: FleetKey;
143
192
  }
144
193
 
194
+ export type FleetKey = "f1" | "f2" | "f3" | "f4";
195
+
145
196
  export type ShipCategory =
146
197
  | "Battleship"
147
198
  | "AircraftCarrier"
@@ -179,153 +230,120 @@ export type ShipType =
179
230
 
180
231
  export type SlotSizeVec = (number | null)[];
181
232
 
182
- export type GearTypeIdArray = [number, number, number, number, number];
183
-
184
- export interface BattleConditions {
185
- org_type: OrgType;
186
- role: Role;
187
- ship_index: number;
188
- fleet_len: number;
189
- formation: Formation;
190
- fleet_los_mod: number | null;
191
- night_conditions: NightFleetConditions;
233
+ export interface AttackAnalysis {
234
+ attacker_is_player: boolean;
235
+ attacker_ship_id: number;
236
+ target_ship_id: number;
237
+ historical_params: HistoricalParams;
238
+ day: ActionReport<DayPhaseAttackStyle>;
239
+ night: ActionReport<NightPhaseAttackStyle>;
240
+ closing_torpedo: ActionReport<TorpedoAttackStyle>;
241
+ opening_asw: ActionReport<AswAttackStyle>;
242
+ support_shelling: ActionReport<SupportShellingStyle>;
192
243
  }
193
244
 
194
- export interface NightConditions {
195
- player?: NightFleetConditions;
196
- enemy?: NightFleetConditions;
197
- }
245
+ export type SingleFormation =
246
+ | "LineAhead"
247
+ | "DoubleLine"
248
+ | "Diamond"
249
+ | "Echelon"
250
+ | "LineAbreast"
251
+ | "Vanguard";
198
252
 
199
- export interface NightFleetConditions {
200
- night_contact_rank?: ContactRank | null;
201
- starshell_index?: number | null;
202
- searchlight_index?: number | null;
203
- activates_large_searchlight?: boolean;
204
- }
205
-
206
- export interface FleetState {
207
- id?: string;
208
- len?: number;
209
- s1?: ShipState;
210
- s2?: ShipState;
211
- s3?: ShipState;
212
- s4?: ShipState;
213
- s5?: ShipState;
214
- s6?: ShipState;
215
- s7?: ShipState;
216
- }
217
-
218
- export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
219
-
220
- export type Role = "Main" | "Escort";
253
+ export type CombinedFormation =
254
+ | "Cruising1"
255
+ | "Cruising2"
256
+ | "Cruising3"
257
+ | "Cruising4";
221
258
 
222
- export type Side = "Player" | "Enemy";
259
+ export type Formation = SingleFormation | CombinedFormation;
223
260
 
224
- export type Align = "Left" | "Right";
261
+ export type GearAttr =
262
+ | "Unknown"
263
+ | "HighAngleMount"
264
+ | "NightFighter"
265
+ | "NightAttacker"
266
+ | "HeavyBomber"
267
+ | "NightRecon"
268
+ | "MainGun"
269
+ | "Radar"
270
+ | "SurfaceRadar"
271
+ | "AirRadar"
272
+ | "DepthChargeProjector"
273
+ | "SynergisticDepthCharge"
274
+ | "AntiSubMortar"
275
+ | "AntiSubWeapon"
276
+ | "ApDepthCharge"
277
+ | "AntiSubAircraft"
278
+ | "LateModelBowTorpedo"
279
+ | "Seaplane"
280
+ | "CbAircraft"
281
+ | "LbAircraft"
282
+ | "JetAircraft"
283
+ | "Fighter"
284
+ | "Recon"
285
+ | "ObservationSeaplane"
286
+ | "CbFighterBomber"
287
+ | "AntiInstDiveBomber"
288
+ | "CbSwordfish"
289
+ | "SemiNightPlane"
290
+ | "HighAltitudeInterceptor";
225
291
 
226
- export interface MasterShip {
227
- ship_id: number;
228
- name: string;
229
- yomi: string;
230
- stype: number;
231
- ctype: number;
232
- nationality?: number;
233
- sort_id?: number;
234
- max_hp: StatInterval;
235
- firepower: StatInterval;
236
- armor: StatInterval;
237
- torpedo: StatInterval;
238
- evasion: StatInterval;
239
- anti_air: StatInterval;
240
- asw: StatInterval;
241
- los: StatInterval;
242
- luck: StatInterval;
243
- torpedo_accuracy?: number;
244
- basic_evasion_term?: number;
245
- speed: number;
246
- range?: number;
247
- fuel?: number;
248
- ammo?: number;
249
- next_id?: number;
250
- next_level?: number;
251
- slotnum: number;
252
- slots: SlotSizeVec;
253
- stock: GearState[];
254
- speed_group?: SpeedGroup;
255
- useful?: boolean;
292
+ export interface MoveShipPayload {
293
+ current: [string, string, ShipKey];
294
+ target: [string | null, string, ShipKey];
256
295
  }
257
296
 
258
- export type StatInterval = [number | null, number | null];
259
-
260
- export interface FormationCombatModifiersDef {
261
- power_mod?: number;
262
- accuracy_mod?: number;
263
- evasion_mod?: number;
297
+ export interface EquippabilityRule {
298
+ ship: CompiledEvaler;
299
+ keys?: string[];
300
+ include?: string;
301
+ exclude?: string;
264
302
  }
265
303
 
266
- export interface FormationDef {
267
- tag: Formation;
268
- protection_rate: number | null;
269
- fleet_anti_air_mod: number;
270
- shelling: FormationCombatModifiersDef;
271
- torpedo: FormationCombatModifiersDef;
272
- asw: FormationCombatModifiersDef;
273
- night: FormationCombatModifiersDef;
274
- support_shelling: FormationCombatModifiersDef;
304
+ export interface MasterEquippability {
305
+ equip_stype: EquipStype[];
306
+ equip_exslot: number[];
307
+ equip_ship: MstEquipShip[];
308
+ equip_exslot_ship: MstEquipExslotShip[];
309
+ rules: EquippabilityRule[];
275
310
  }
276
311
 
277
- export type NestedFormationDef =
278
- | FormationDef
279
- | { top_half: FormationDef; bottom_half: FormationDef };
280
-
281
- export interface AntiAirCutinDef {
282
- id: number;
283
- type_factor: number | null;
284
- multiplier: number | null;
285
- guaranteed: number | null;
286
- sequential: boolean | null;
312
+ export interface MstEquipExslotShip {
313
+ api_slotitem_id: number;
314
+ api_ship_ids: number[];
287
315
  }
288
316
 
289
- export interface DayCutinDef {
290
- tag: DayCutin;
291
- hits: number;
292
- type_factor: number | null;
293
- power_mod: number | null;
294
- accuracy_mod: number | null;
317
+ export interface MstEquipShip {
318
+ api_ship_id: number;
319
+ api_equip_type: number[];
295
320
  }
296
321
 
297
- export interface HistoricalBonusDef {
298
- map?: number;
299
- node?: CompiledEvaler;
300
- phase?: number;
301
- debuff?: boolean;
302
- ship?: CompiledEvaler;
303
- enemy?: CompiledEvaler;
304
- power_mod?: number;
305
- accuracy_mod?: number;
306
- evasion_mod?: number;
322
+ export interface EquipStype {
323
+ id: number;
324
+ equip_type: number[];
307
325
  }
308
326
 
309
- export interface HistoricalParams {
310
- power_mod: number;
311
- accuracy_mod: number;
312
- target_evasion_mod: number;
327
+ export interface BattleConditions {
328
+ org_type: OrgType;
329
+ role: Role;
330
+ ship_index: number;
331
+ fleet_len: number;
332
+ formation: Formation;
333
+ fleet_los_mod: number | null;
334
+ night_conditions: NightFleetConditions;
313
335
  }
314
336
 
315
- export interface NightCutinDef {
316
- tag: NightCutin;
317
- hits: number;
318
- type_factor: number | null;
319
- power_mod: number | null;
320
- accuracy_mod: number | null;
337
+ export interface NightConditions {
338
+ player?: NightFleetConditions;
339
+ enemy?: NightFleetConditions;
321
340
  }
322
341
 
323
- export interface BattleDefinitions {
324
- formation: Record<Formation, NestedFormationDef>;
325
- anti_air_cutin: Record<number, AntiAirCutinDef>;
326
- day_cutin: Record<DayCutin, DayCutinDef>;
327
- night_cutin: Record<NightCutin, NightCutinDef>;
328
- historical_bonuses: HistoricalBonusDef[];
342
+ export interface NightFleetConditions {
343
+ night_contact_rank?: ContactRank | null;
344
+ starshell_index?: number | null;
345
+ searchlight_index?: number | null;
346
+ activates_large_searchlight?: boolean;
329
347
  }
330
348
 
331
349
  export type DayCutin =
@@ -369,27 +387,67 @@ export type DayCutinLike = DayCutin | FleetCutin;
369
387
 
370
388
  export type NightCutinLike = NightCutin | FleetCutin;
371
389
 
372
- export interface MoveShipPayload {
373
- current: [string, string, ShipKey];
374
- target: [string | null, string, ShipKey];
390
+ export interface GearState {
391
+ id?: string;
392
+ gear_id: number;
393
+ exp?: number;
394
+ stars?: number;
375
395
  }
376
396
 
377
- export interface AttackReport<T> {
378
- style: T;
379
- proc_rate: number | null;
380
- attack_power: AttackPower | null;
381
- attack_power_params: AttackPowerParams | null;
382
- hits: number;
383
- hit_rate: HitRate | null;
384
- hit_rate_params: HitRateParams | null;
385
- damage: DamageReport | null;
397
+ export interface GearVecState {
398
+ g1?: GearState;
399
+ g2?: GearState;
400
+ g3?: GearState;
401
+ g4?: GearState;
402
+ g5?: GearState;
403
+ gx?: GearState;
386
404
  }
387
405
 
388
- export type AirWaveType = "Jet" | "LandBase" | "Carrier";
406
+ export type MoraleState = "Sparkle" | "Normal" | "Orange" | "Red";
389
407
 
390
- export type ContactRank = "Rank1" | "Rank2" | "Rank3";
408
+ export type Role = "Main" | "Escort";
391
409
 
392
- export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
410
+ export interface SlotSizeVecState {
411
+ ss1?: number;
412
+ ss2?: number;
413
+ ss3?: number;
414
+ ss4?: number;
415
+ ss5?: number;
416
+ }
417
+
418
+ export interface ShipState extends GearVecState, SlotSizeVecState {
419
+ id?: string;
420
+ ship_id: number;
421
+ level?: number;
422
+ current_hp?: number;
423
+ morale?: number;
424
+ ammo?: number;
425
+ fuel?: number;
426
+ max_hp_mod?: number;
427
+ firepower_mod?: number;
428
+ torpedo_mod?: number;
429
+ armor_mod?: number;
430
+ anti_air_mod?: number;
431
+ evasion_mod?: number;
432
+ asw_mod?: number;
433
+ los_mod?: number;
434
+ luck_mod?: number;
435
+ day_gunfit_accuracy?: number;
436
+ night_gunfit_accuracy?: number;
437
+ custom_power_mods?: CustomPowerModifiers;
438
+ }
439
+
440
+ export type ShipKey = "s1" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7";
441
+
442
+ export type SpeedGroup = "A" | "B1" | "B2" | "C";
443
+
444
+ export type CompiledEvaler = string;
445
+
446
+ export interface SupportShellingSimulatorParams {
447
+ attacker_formation?: Formation;
448
+ target_formation?: Formation;
449
+ engagement: Engagement;
450
+ }
393
451
 
394
452
  export interface SimulatorResult {
395
453
  items: SimulatorResultItem[];
@@ -403,34 +461,160 @@ export interface SimulatorResultItem {
403
461
  damage_state_map: Record<DamageState, number>;
404
462
  }
405
463
 
406
- export type FhResult<T> = { Ok: T } | { Err: string };
407
-
408
- export interface MasterGear {
409
- gear_id: number;
464
+ export interface ActionReport<T> {
465
+ data: Record<string, AttackReport<T>>;
466
+ damage_state_density: Histogram<DamageState, number> | null;
467
+ is_active: boolean;
468
+ }
469
+
470
+ export type AirWaveType = "Jet" | "LandBase" | "Carrier";
471
+
472
+ export type AswAttackType = "DepthCharge" | "Aerial";
473
+
474
+ export type ShellingType = "Normal" | "Aerial";
475
+
476
+ export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
477
+
478
+ export type SupportShellingType = ShellingType;
479
+
480
+ export type AttackType =
481
+ | { t: "Asw"; c: AswAttackType }
482
+ | { t: "Shelling"; c: ShellingType }
483
+ | { t: "Night"; c: NightAttackType }
484
+ | { t: "Torpedo" }
485
+ | { t: "SupportShelling"; c: SupportShellingType };
486
+
487
+ export type DayPhaseAttackType =
488
+ | { t: "Shelling"; c: ShellingType }
489
+ | { t: "Asw"; c: AswAttackType };
490
+
491
+ export type NightPhaseAttackType =
492
+ | { t: "Night"; c: NightAttackType }
493
+ | { t: "Asw"; c: AswAttackType };
494
+
495
+ export type TorpedoAttackType = null;
496
+
497
+ export interface FormationCombatModifiersDef {
498
+ power_mod?: number;
499
+ accuracy_mod?: number;
500
+ evasion_mod?: number;
501
+ }
502
+
503
+ export interface FormationDef {
504
+ tag: Formation;
505
+ protection_rate: number | null;
506
+ fleet_anti_air_mod: number;
507
+ shelling: FormationCombatModifiersDef;
508
+ torpedo: FormationCombatModifiersDef;
509
+ asw: FormationCombatModifiersDef;
510
+ night: FormationCombatModifiersDef;
511
+ support_shelling: FormationCombatModifiersDef;
512
+ }
513
+
514
+ export type NestedFormationDef =
515
+ | FormationDef
516
+ | { top_half: FormationDef; bottom_half: FormationDef };
517
+
518
+ export interface AntiAirCutinDef {
519
+ id: number;
520
+ type_factor: number | null;
521
+ multiplier: number | null;
522
+ guaranteed: number | null;
523
+ sequential: boolean | null;
524
+ }
525
+
526
+ export interface DayCutinDef {
527
+ tag: DayCutin;
528
+ hits: number;
529
+ type_factor: number | null;
530
+ power_mod: number | null;
531
+ accuracy_mod: number | null;
532
+ }
533
+
534
+ export interface HistoricalBonusDef {
535
+ map?: number;
536
+ node?: CompiledEvaler;
537
+ phase?: number;
538
+ debuff?: boolean;
539
+ ship?: CompiledEvaler;
540
+ enemy?: CompiledEvaler;
541
+ power_mod?: number;
542
+ accuracy_mod?: number;
543
+ evasion_mod?: number;
544
+ }
545
+
546
+ export interface HistoricalParams {
547
+ power_mod: number;
548
+ accuracy_mod: number;
549
+ target_evasion_mod: number;
550
+ }
551
+
552
+ export interface NightCutinDef {
553
+ tag: NightCutin;
554
+ hits: number;
555
+ type_factor: number | null;
556
+ power_mod: number | null;
557
+ accuracy_mod: number | null;
558
+ }
559
+
560
+ export interface BattleDefinitions {
561
+ formation: Record<Formation, NestedFormationDef>;
562
+ anti_air_cutin: Record<number, AntiAirCutinDef>;
563
+ day_cutin: Record<DayCutin, DayCutinDef>;
564
+ night_cutin: Record<NightCutin, NightCutinDef>;
565
+ historical_bonuses: HistoricalBonusDef[];
566
+ }
567
+
568
+ export interface FleetState {
569
+ id?: string;
570
+ len?: number;
571
+ s1?: ShipState;
572
+ s2?: ShipState;
573
+ s3?: ShipState;
574
+ s4?: ShipState;
575
+ s5?: ShipState;
576
+ s6?: ShipState;
577
+ s7?: ShipState;
578
+ }
579
+
580
+ export type Side = "Player" | "Enemy";
581
+
582
+ export type Align = "Left" | "Right";
583
+
584
+ export interface MasterShip {
585
+ ship_id: number;
410
586
  name: string;
411
- types: GearTypeIdArray;
412
- special_type?: number;
413
- max_hp?: number;
414
- firepower?: number;
415
- armor?: number;
416
- torpedo?: number;
417
- anti_air?: number;
418
- speed?: number;
419
- bombing?: number;
420
- asw?: number;
421
- los?: number;
422
- luck?: number;
423
- accuracy?: number;
424
- evasion?: number;
587
+ yomi: string;
588
+ stype: number;
589
+ ctype: number;
590
+ nationality?: number;
591
+ sort_id?: number;
592
+ max_hp: StatInterval;
593
+ firepower: StatInterval;
594
+ armor: StatInterval;
595
+ torpedo: StatInterval;
596
+ evasion: StatInterval;
597
+ anti_air: StatInterval;
598
+ asw: StatInterval;
599
+ los: StatInterval;
600
+ luck: StatInterval;
601
+ torpedo_accuracy?: number;
602
+ basic_evasion_term?: number;
603
+ speed: number;
425
604
  range?: number;
426
- radius?: number;
427
- cost?: number;
428
- improvable?: boolean;
429
- ship_anti_air_resist?: number;
430
- fleet_anti_air_resist?: number;
431
- historical_aircraft_group?: number;
605
+ fuel?: number;
606
+ ammo?: number;
607
+ next_id?: number;
608
+ next_level?: number;
609
+ slotnum: number;
610
+ slots: SlotSizeVec;
611
+ stock: GearState[];
612
+ speed_group?: SpeedGroup;
613
+ useful?: boolean;
432
614
  }
433
615
 
616
+ export type StatInterval = [number | null, number | null];
617
+
434
618
  export interface AttackPower {
435
619
  precap: number;
436
620
  is_capped: boolean;
@@ -456,6 +640,29 @@ export interface AttackPowerParams {
456
640
  custom_mods: CustomPowerModifiers;
457
641
  }
458
642
 
643
+ export interface NightContactChance {
644
+ rank1: number;
645
+ rank2: number;
646
+ rank3: number;
647
+ }
648
+
649
+ export interface CompNightCutinAnalysis {
650
+ night_contact_chance: NightContactChance;
651
+ ships: ShipNightCutinAnalysis[];
652
+ }
653
+
654
+ export interface ShipNightCutinAnalysis {
655
+ ship_id: number;
656
+ index: number;
657
+ normal: NightCutinActionReport;
658
+ chuuha: NightCutinActionReport;
659
+ }
660
+
661
+ export interface NightCutinActionReport
662
+ extends ActionReport<NightPhaseAttackStyle> {
663
+ cutin_term: number | null;
664
+ }
665
+
459
666
  export type AirSquadronMode = "Sortie" | "AirDefense";
460
667
 
461
668
  export interface AirSquadronState extends GearVecState, SlotSizeVecState {
@@ -463,16 +670,32 @@ export interface AirSquadronState extends GearVecState, SlotSizeVecState {
463
670
  mode?: AirSquadronMode;
464
671
  }
465
672
 
466
- export type AirState =
467
- | "AirSupremacy"
468
- | "AirSuperiority"
469
- | "AirParity"
470
- | "AirDenial"
471
- | "AirIncapability";
673
+ export interface AttackPowerModifier {
674
+ a?: number;
675
+ b?: number;
676
+ }
472
677
 
473
- export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
678
+ export interface SpecialEnemyModifiers {
679
+ precap_general_mod: AttackPowerModifier;
680
+ stype_mod: AttackPowerModifier;
681
+ landing_craft_synergy_mod: AttackPowerModifier;
682
+ toku_daihatsu_tank_mod: AttackPowerModifier;
683
+ m4a1dd_mod: AttackPowerModifier;
684
+ honi_mod: AttackPowerModifier;
685
+ postcap_general_mod: AttackPowerModifier;
686
+ pt_mod: AttackPowerModifier;
687
+ }
474
688
 
475
- export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
689
+ export interface CustomPowerModifiers {
690
+ precap_mod?: AttackPowerModifier;
691
+ postcap_mod?: AttackPowerModifier;
692
+ basic_power_mod?: AttackPowerModifier;
693
+ historical_mod?: AttackPowerModifier;
694
+ }
695
+
696
+ export type ContactRank = "Rank1" | "Rank2" | "Rank3";
697
+
698
+ export type DamageState = "Normal" | "Shouha" | "Chuuha" | "Taiha" | "Sunk";
476
699
 
477
700
  export type GearType =
478
701
  | "Unknown"
@@ -550,9 +773,83 @@ export type GearCategory =
550
773
  | "LandBased"
551
774
  | "Misc";
552
775
 
776
+ export interface ShipConditions extends ShipPosition {
777
+ formation?: Formation;
778
+ amagiri_index?: number | null;
779
+ }
780
+
781
+ export type GearTypeIdArray = [number, number, number, number, number];
782
+
783
+ export interface MasterGear {
784
+ gear_id: number;
785
+ name: string;
786
+ types: GearTypeIdArray;
787
+ special_type?: number;
788
+ max_hp?: number;
789
+ firepower?: number;
790
+ armor?: number;
791
+ torpedo?: number;
792
+ anti_air?: number;
793
+ speed?: number;
794
+ bombing?: number;
795
+ asw?: number;
796
+ los?: number;
797
+ luck?: number;
798
+ accuracy?: number;
799
+ evasion?: number;
800
+ range?: number;
801
+ radius?: number;
802
+ cost?: number;
803
+ improvable?: boolean;
804
+ ship_anti_air_resist?: number;
805
+ fleet_anti_air_resist?: number;
806
+ historical_aircraft_group?: number;
807
+ }
808
+
809
+ export interface ShipAnalyzerConfig {
810
+ air_state?: AirState;
811
+ engagement?: Engagement;
812
+ left?: AttackAnalyzerShipConfig;
813
+ right?: AttackAnalyzerShipConfig;
814
+ }
815
+
816
+ export interface AttackReport<T> {
817
+ style: T;
818
+ proc_rate: number | null;
819
+ attack_power: AttackPower | null;
820
+ attack_power_params: AttackPowerParams | null;
821
+ hits: number;
822
+ hit_rate: HitRate | null;
823
+ hit_rate_params: HitRateParams | null;
824
+ damage: DamageReport | null;
825
+ }
826
+
827
+ export type AirState =
828
+ | "AirSupremacy"
829
+ | "AirSuperiority"
830
+ | "AirParity"
831
+ | "AirDenial"
832
+ | "AirIncapability";
833
+
834
+ export type AirStateRank = "Rank0" | "Rank1" | "Rank2" | "Rank3";
835
+
836
+ export interface ShipMeta {
837
+ id: string;
838
+ ship_id: number;
839
+ }
840
+
841
+ export interface FleetMeta {
842
+ id: string;
843
+ len: number;
844
+ ships: [string, ShipMeta | null][];
845
+ }
846
+
847
+ export interface CompMeta {
848
+ fleets: Record<FleetType, FleetMeta>;
849
+ }
850
+
553
851
  export type ShipAttr =
554
852
  | "Unknown"
555
- | "Abyssal"
556
853
  | "NightCarrier"
557
854
  | "Installation"
558
855
  | "RoyalNavy"
@@ -570,35 +867,22 @@ export type ShipAttr =
570
867
  | "FrenchBattleshipPrincess"
571
868
  | "DockPrincess";
572
869
 
573
- export interface ShipConditions extends ShipPosition {
574
- formation?: Formation;
575
- amagiri_index?: number | null;
576
- }
577
-
578
- export interface AttackPowerModifier {
579
- a?: number;
580
- b?: number;
581
- }
582
-
583
- export interface SpecialEnemyModifiers {
584
- precap_general_mod: AttackPowerModifier;
585
- stype_mod: AttackPowerModifier;
586
- landing_craft_synergy_mod: AttackPowerModifier;
587
- toku_daihatsu_tank_mod: AttackPowerModifier;
588
- m4a1dd_mod: AttackPowerModifier;
589
- honi_mod: AttackPowerModifier;
590
- postcap_general_mod: AttackPowerModifier;
591
- pt_mod: AttackPowerModifier;
592
- }
593
-
594
- export interface CustomPowerModifiers {
595
- precap_mod?: AttackPowerModifier;
596
- postcap_mod?: AttackPowerModifier;
597
- basic_power_mod?: AttackPowerModifier;
598
- historical_mod?: AttackPowerModifier;
599
- }
870
+ export type SpecialEnemyType =
871
+ | "None"
872
+ | "SoftSkinned"
873
+ | "Pillbox"
874
+ | "IsolatedIsland"
875
+ | "SupplyDepot"
876
+ | "NewSupplyDepot"
877
+ | "HarbourSummerPrincess"
878
+ | "PtImp"
879
+ | "BattleshipSummerPrincess"
880
+ | "HeavyCruiserSummerPrincess"
881
+ | "FrenchBattleshipPrincess"
882
+ | "AnchorageWaterDemonVacationMode"
883
+ | "DockPrincess";
600
884
 
601
- export type CompiledEvaler = string;
885
+ export type FhResult<T> = { Ok: T } | { Err: string };
602
886
 
603
887
  export interface MasterData extends MasterBattleDefinitions {
604
888
  created_at: number;
@@ -616,178 +900,34 @@ export interface NationalityDef {
616
900
  }
617
901
 
618
902
  export interface MasterAttrRule<T> {
619
- tag: T;
620
- name: string;
621
- expr: CompiledEvaler;
622
- }
623
-
624
- export interface MasterIBonuses {
625
- shelling_power: MasterIBonusRule[];
626
- shelling_accuracy: MasterIBonusRule[];
627
- shelling_aerial_power: MasterIBonusRule[];
628
- torpedo_power: MasterIBonusRule[];
629
- torpedo_accuracy: MasterIBonusRule[];
630
- torpedo_evasion: MasterIBonusRule[];
631
- asw_power: MasterIBonusRule[];
632
- asw_accuracy: MasterIBonusRule[];
633
- night_power: MasterIBonusRule[];
634
- night_aerial_power: MasterIBonusRule[];
635
- night_accuracy: MasterIBonusRule[];
636
- defense_power: MasterIBonusRule[];
637
- contact_selection: MasterIBonusRule[];
638
- fighter_power: MasterIBonusRule[];
639
- ship_anti_air: MasterIBonusRule[];
640
- fleet_anti_air: MasterIBonusRule[];
641
- elos: MasterIBonusRule[];
642
- }
643
-
644
- export interface MasterIBonusRule {
645
- expr: CompiledEvaler;
646
- formula: CompiledEvaler;
647
- }
648
-
649
- export interface NightContactChance {
650
- rank1: number;
651
- rank2: number;
652
- rank3: number;
653
- }
654
-
655
- export interface CompNightCutinAnalysis {
656
- night_contact_chance: NightContactChance;
657
- ships: ShipNightCutinAnalysis[];
658
- }
659
-
660
- export interface ShipNightCutinAnalysis {
661
- ship_id: number;
662
- index: number;
663
- normal: NightCutinActionReport;
664
- chuuha: NightCutinActionReport;
665
- }
666
-
667
- export interface NightCutinActionReport
668
- extends ActionReport<NightPhaseAttackStyle> {
669
- cutin_term: number | null;
670
- }
671
-
672
- export interface FleetCutinReport<T> {
673
- cutin: FleetCutin;
674
- rate: number | null;
675
- formation: Formation;
676
- attacks: FleetCutinAttackReport<T>[];
677
- }
678
-
679
- export interface FleetCutinAttackReport<T> extends AttackReport<T> {
680
- index: number;
681
- ship_id: number;
682
- power_mod: number;
683
- }
684
-
685
- export type AswAttackType = "DepthCharge" | "Aerial";
686
-
687
- export type ShellingType = "Normal" | "Aerial";
688
-
689
- export type NightAttackType = "Normal" | "Swordfish" | "Aerial";
690
-
691
- export type SupportShellingType = ShellingType;
692
-
693
- export type AttackType =
694
- | { t: "Asw"; c: AswAttackType }
695
- | { t: "Shelling"; c: ShellingType }
696
- | { t: "Night"; c: NightAttackType }
697
- | { t: "Torpedo" }
698
- | { t: "SupportShelling"; c: SupportShellingType };
699
-
700
- export type DayPhaseAttackType =
701
- | { t: "Shelling"; c: ShellingType }
702
- | { t: "Asw"; c: AswAttackType };
703
-
704
- export type NightPhaseAttackType =
705
- | { t: "Night"; c: NightAttackType }
706
- | { t: "Asw"; c: AswAttackType };
707
-
708
- export type TorpedoAttackType = null;
709
-
710
- export type GearAttr =
711
- | "Unknown"
712
- | "Abyssal"
713
- | "HighAngleMount"
714
- | "NightFighter"
715
- | "NightAttacker"
716
- | "HeavyBomber"
717
- | "NightRecon"
718
- | "MainGun"
719
- | "Radar"
720
- | "SurfaceRadar"
721
- | "AirRadar"
722
- | "DepthChargeProjector"
723
- | "SynergisticDepthCharge"
724
- | "AntiSubMortar"
725
- | "AntiSubWeapon"
726
- | "ApDepthCharge"
727
- | "AntiSubAircraft"
728
- | "LateModelBowTorpedo"
729
- | "Seaplane"
730
- | "CbAircraft"
731
- | "LbAircraft"
732
- | "JetAircraft"
733
- | "Fighter"
734
- | "Recon"
735
- | "ObservationSeaplane"
736
- | "CbFighterBomber"
737
- | "AntiInstDiveBomber"
738
- | "CbSwordfish"
739
- | "SemiNightPlane"
740
- | "HighAltitudeInterceptor";
741
-
742
- export interface ShipMeta {
743
- id: string;
744
- ship_id: number;
745
- }
746
-
747
- export interface FleetMeta {
748
- id: string;
749
- len: number;
750
- ships: [string, ShipMeta | null][];
751
- }
752
-
753
- export interface CompMeta {
754
- fleets: Record<FleetType, FleetMeta>;
755
- }
756
-
757
- export type OrgType =
758
- | "Single"
759
- | "CarrierTaskForce"
760
- | "SurfaceTaskForce"
761
- | "TransportEscort"
762
- | "EnemySingle"
763
- | "EnemyCombined";
764
-
765
- export interface ShipPosition {
766
- org_type?: OrgType;
767
- fleet_type?: FleetType;
768
- fleet_len?: number;
769
- index?: number;
903
+ tag: T;
904
+ name: string;
905
+ expr: CompiledEvaler;
770
906
  }
771
907
 
772
- export type SpecialEnemyType =
773
- | "None"
774
- | "SoftSkinned"
775
- | "Pillbox"
776
- | "IsolatedIsland"
777
- | "SupplyDepot"
778
- | "NewSupplyDepot"
779
- | "HarbourSummerPrincess"
780
- | "PtImp"
781
- | "BattleshipSummerPrincess"
782
- | "HeavyCruiserSummerPrincess"
783
- | "FrenchBattleshipPrincess"
784
- | "AnchorageWaterDemonVacationMode"
785
- | "DockPrincess";
908
+ export interface MasterIBonuses {
909
+ shelling_power: MasterIBonusRule[];
910
+ shelling_accuracy: MasterIBonusRule[];
911
+ shelling_aerial_power: MasterIBonusRule[];
912
+ torpedo_power: MasterIBonusRule[];
913
+ torpedo_accuracy: MasterIBonusRule[];
914
+ torpedo_evasion: MasterIBonusRule[];
915
+ asw_power: MasterIBonusRule[];
916
+ asw_accuracy: MasterIBonusRule[];
917
+ night_power: MasterIBonusRule[];
918
+ night_aerial_power: MasterIBonusRule[];
919
+ night_accuracy: MasterIBonusRule[];
920
+ defense_power: MasterIBonusRule[];
921
+ contact_selection: MasterIBonusRule[];
922
+ fighter_power: MasterIBonusRule[];
923
+ ship_anti_air: MasterIBonusRule[];
924
+ fleet_anti_air: MasterIBonusRule[];
925
+ elos: MasterIBonusRule[];
926
+ }
786
927
 
787
- export interface SupportShellingSimulatorParams {
788
- attacker_formation?: Formation;
789
- target_formation?: Formation;
790
- engagement: Engagement;
928
+ export interface MasterIBonusRule {
929
+ expr: CompiledEvaler;
930
+ formula: CompiledEvaler;
791
931
  }
792
932
 
793
933
  export interface MasterBattleDefinitions {
@@ -798,11 +938,17 @@ export interface MasterBattleDefinitions {
798
938
  historical_bonuses?: HistoricalBonusDef[];
799
939
  }
800
940
 
801
- export interface ShipAnalyzerConfig {
802
- air_state?: AirState;
803
- engagement?: Engagement;
804
- left?: AttackAnalyzerShipConfig;
805
- right?: AttackAnalyzerShipConfig;
941
+ export interface FleetCutinReport<T> {
942
+ cutin: FleetCutin;
943
+ rate: number | null;
944
+ formation: Formation;
945
+ attacks: FleetCutinAttackReport<T>[];
946
+ }
947
+
948
+ export interface FleetCutinAttackReport<T> extends AttackReport<T> {
949
+ index: number;
950
+ ship_id: number;
951
+ power_mod: number;
806
952
  }
807
953
 
808
954
  export interface CompDayCutinAnalysis {
@@ -825,78 +971,10 @@ export interface DayCutinReport extends ActionReport<DayPhaseAttackStyle> {
825
971
  observation_term: number | null;
826
972
  }
827
973
 
828
- export interface AttackAnalysis {
829
- attacker_is_player: boolean;
830
- attacker_ship_id: number;
831
- target_ship_id: number;
832
- historical_params: HistoricalParams;
833
- day: ActionReport<DayPhaseAttackStyle>;
834
- night: ActionReport<NightPhaseAttackStyle>;
835
- closing_torpedo: ActionReport<TorpedoAttackStyle>;
836
- opening_asw: ActionReport<AswAttackStyle>;
837
- support_shelling: ActionReport<SupportShellingStyle>;
838
- }
839
-
840
- export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
841
-
842
- export interface OrgState {
843
- id?: string;
844
- f1?: FleetState;
845
- f2?: FleetState;
846
- f3?: FleetState;
847
- f4?: FleetState;
848
- a1?: AirSquadronState;
849
- a2?: AirSquadronState;
850
- a3?: AirSquadronState;
851
- hq_level?: number;
852
- org_type?: OrgType;
853
- sortie?: FleetKey;
854
- route_sup?: FleetKey;
855
- boss_sup?: FleetKey;
856
- }
857
-
858
- export type FleetKey = "f1" | "f2" | "f3" | "f4";
859
-
860
- export type Histogram<K extends keyof any, V> = Partial<Record<K, V>>;
861
-
862
- export type GearVecInput = GearInput[];
863
-
864
- export interface GearInput {
865
- gear_id: number;
866
- types: GearTypeIdArray;
867
- firepower: number;
868
- torpedo: number;
869
- anti_air: number;
870
- armor: number;
871
- evasion: number;
872
- asw: number;
873
- los: number;
874
- bombing: number;
875
- accuracy: number;
876
- range: number;
877
- radius: number;
878
- stars: number;
879
- ace: number;
880
- }
881
-
882
- export interface ShipInput {
883
- ship_id: number;
884
- ctype: number;
885
- stype: number;
886
- yomi: string;
887
- }
888
-
889
- export interface EBonuses {
890
- firepower: number;
891
- torpedo: number;
892
- anti_air: number;
893
- armor: number;
894
- evasion: number;
895
- asw: number;
896
- los: number;
897
- bombing: number;
898
- accuracy: number;
899
- range: number;
974
+ export interface AttackAnalyzerShipConfig
975
+ extends ShipConditions,
976
+ NightFleetConditions {
977
+ fleet_los_mod?: number | null;
900
978
  }
901
979
 
902
980
  export interface ShellingStyle {
@@ -936,94 +1014,15 @@ export interface SupportShellingStyle {
936
1014
  attack_type: SupportShellingType;
937
1015
  }
938
1016
 
939
- export type SingleFormation =
940
- | "LineAhead"
941
- | "DoubleLine"
942
- | "Diamond"
943
- | "Echelon"
944
- | "LineAbreast"
945
- | "Vanguard";
946
-
947
- export type CombinedFormation =
948
- | "Cruising1"
949
- | "Cruising2"
950
- | "Cruising3"
951
- | "Cruising4";
952
-
953
- export type Formation = SingleFormation | CombinedFormation;
954
-
955
- export interface DamageReport {
956
- miss_damage_min: number;
957
- miss_damage_max: number;
958
- normal_damage_min: number;
959
- normal_damage_max: number;
960
- critical_damage_min: number;
961
- critical_damage_max: number;
962
- normal_scratch_rate: number;
963
- critical_scratch_rate: number;
964
- damage_density: Histogram<number, number>;
965
- damage_state_density: Histogram<DamageState, number>;
966
- }
967
-
968
- export interface CompAnalyzerConfig {
969
- engagement: Engagement;
970
- formation: Formation;
971
- anti_air_cutin: number | null;
972
- ship_anti_air_resist: number;
973
- fleet_anti_air_resist: number;
974
- left_night_fleet_conditions: NightFleetConditions;
975
- right_night_fleet_conditions: NightFleetConditions;
976
- }
977
-
978
- export interface CompNightAnalysis {
979
- night_cutin: CompNightCutinAnalysis;
980
- fleet_cutin: FleetCutinReport<NightAttackStyle>[];
981
- }
982
-
983
- export interface CompDayAnalysis {
984
- day_cutin: CompDayCutinAnalysis;
985
- fleet_cutin: FleetCutinReport<ShellingStyle>[];
986
- }
987
-
988
- export interface CompAnalysis {
989
- day: CompDayAnalysis;
990
- night: CompNightAnalysis;
991
- contact: ContactAnalysis;
992
- anti_air: CompAntiAirAnalysis;
993
- }
994
-
995
- export interface AttackAnalyzerShipConfig
996
- extends ShipConditions,
997
- NightFleetConditions {
998
- fleet_los_mod?: number | null;
999
- }
1000
-
1001
- export interface CompAntiAirAnalysis {
1002
- fleet_adjusted_anti_air: number;
1003
- ships: AntiAirReport[];
1004
- anti_air_cutin_chance: [number, number][];
1005
- }
1006
-
1007
- export interface AntiAirReport {
1008
- ship_id: number;
1009
- role: Role;
1010
- index: number;
1011
- adjusted_anti_air: number | null;
1012
- proportional_shotdown_rate: number | null;
1013
- fixed_shotdown_number: number | null;
1014
- guaranteed: number | null;
1015
- anti_air_cutin_chance: [number, number][];
1016
- anti_air_propellant_barrage_chance: number | null;
1017
- }
1017
+ export type Engagement = "GreenT" | "Parallel" | "HeadOn" | "RedT";
1018
1018
 
1019
- export type NodeId = string;
1019
+ export type FleetType = "Main" | "Escort" | "RouteSup" | "BossSup";
1020
1020
 
1021
- export interface NodeState {
1022
- map?: number;
1023
- node?: NodeId;
1024
- phase?: number;
1025
- debuff?: boolean;
1026
- disable_historical_mod?: boolean;
1021
+ export interface ShipPosition {
1022
+ org_type?: OrgType;
1023
+ fleet_type?: FleetType;
1024
+ fleet_len?: number;
1025
+ index?: number;
1027
1026
  }
1028
1027
 
1029
1028
  /**
@@ -1761,20 +1760,6 @@ export class Org {
1761
1760
  */
1762
1761
  export class Ship {
1763
1762
  free(): void;
1764
- /**
1765
- * @returns {number | undefined}
1766
- */
1767
- state_day_gunfit_accuracy(): number | undefined;
1768
- /**
1769
- * @returns {number | undefined}
1770
- */
1771
- state_night_gunfit_accuracy(): number | undefined;
1772
- /**
1773
- * フィット砲補正
1774
- * @param {boolean} is_night
1775
- * @returns {number}
1776
- */
1777
- gunfit_accuracy(is_night: boolean): number;
1778
1763
  /**
1779
1764
  * @returns {Ship}
1780
1765
  */
@@ -1992,6 +1977,20 @@ export class Ship {
1992
1977
  * @returns {number | undefined}
1993
1978
  */
1994
1979
  ohko_power(): number | undefined;
1980
+ /**
1981
+ * @returns {number | undefined}
1982
+ */
1983
+ state_day_gunfit_accuracy(): number | undefined;
1984
+ /**
1985
+ * @returns {number | undefined}
1986
+ */
1987
+ state_night_gunfit_accuracy(): number | undefined;
1988
+ /**
1989
+ * フィット砲補正
1990
+ * @param {boolean} is_night
1991
+ * @returns {number}
1992
+ */
1993
+ gunfit_accuracy(is_night: boolean): number;
1995
1994
  /**
1996
1995
  */
1997
1996
  readonly accuracy: number;