From 38d80d670fd10ccbc0c1bd173343cff1b65aa7db Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Sun, 4 Jan 2026 17:44:37 +0200 Subject: [PATCH] Deduplicate weapon-params.ts (#2695) --- app/features/build-analyzer/analyzer-types.ts | 16 +- .../components/PerInkTankGrid.tsx | 16 +- app/features/build-analyzer/core/stats.ts | 9 +- app/features/build-analyzer/core/utils.ts | 11 +- .../build-analyzer/core/weapon-params.ts | 2647 ++++++----------- .../core/objectHitPoints.ts | 33 +- scripts/create-analyzer-json.ts | 162 +- 7 files changed, 1043 insertions(+), 1851 deletions(-) diff --git a/app/features/build-analyzer/analyzer-types.ts b/app/features/build-analyzer/analyzer-types.ts index 3938bb08f..4bdad60e1 100644 --- a/app/features/build-analyzer/analyzer-types.ts +++ b/app/features/build-analyzer/analyzer-types.ts @@ -14,12 +14,9 @@ type Overwrites = Record< Partial> >; -export interface MainWeaponParams { - subWeaponId: SubWeaponId; - specialWeaponId: SpecialWeaponId; +export interface BaseWeaponStats { /** Replacing default values of the ability json for this specific weapon */ overwrites?: Overwrites; - SpecialPoint: number; /** Weapon's weight class. "Light/Heavy weapon" */ WeaponSpeedType?: "Slow" | "Fast"; /** Total frames it takes the weapon to shoot out three times */ @@ -105,6 +102,14 @@ export interface MainWeaponParams { // SpeedInkConsumeMin_WeaponRollParam?: number; } +export interface WeaponKit { + subWeaponId: SubWeaponId; + specialWeaponId: SpecialWeaponId; + SpecialPoint: number; +} + +export type MainWeaponParams = BaseWeaponStats & WeaponKit; + export interface DistanceDamage { Damage: number; Distance: number; @@ -148,7 +153,8 @@ export type SpecialWeaponParams = SpecialWeaponParamsObject[SpecialWeaponId] & { }; export type ParamsJson = { - mainWeapons: Record; + baseWeaponStats: Record; + weaponKits: Record; subWeapons: Record; specialWeapons: SpecialWeaponParamsObject; }; diff --git a/app/features/build-analyzer/components/PerInkTankGrid.tsx b/app/features/build-analyzer/components/PerInkTankGrid.tsx index b78fee68c..0abc713d9 100644 --- a/app/features/build-analyzer/components/PerInkTankGrid.tsx +++ b/app/features/build-analyzer/components/PerInkTankGrid.tsx @@ -6,9 +6,9 @@ import type { MainWeaponId } from "~/modules/in-game-lists/types"; import { SendouButton } from "../../../components/elements/Button"; import { SendouPopover } from "../../../components/elements/Popover"; import { MAX_AP } from "../analyzer-constants"; -import type { FullInkTankOption } from "../analyzer-types"; +import type { FullInkTankOption, SpecialWeaponParams } from "../analyzer-types"; import { fullInkTankOptions } from "../core/stats"; -import { weaponParams } from "../core/utils"; +import { mainWeaponParams, weaponParams } from "../core/utils"; interface PerInkTankGridProps { weaponSplId: MainWeaponId; @@ -243,13 +243,13 @@ function inkTankOptionsWhenNSubsUsed({ subsUsed: number; weaponSplId: MainWeaponId; }) { - const mainWeaponParams = weaponParams().mainWeapons[weaponSplId]; + const mainParams = mainWeaponParams(weaponSplId); - const subWeaponParams = - weaponParams().subWeapons[mainWeaponParams.subWeaponId]; + const subWeaponParams = weaponParams().subWeapons[mainParams.subWeaponId]; - const specialWeaponParams = - weaponParams().specialWeapons[mainWeaponParams.specialWeaponId]; + const specialWeaponParams = weaponParams().specialWeapons[ + mainParams.specialWeaponId + ] as SpecialWeaponParams; const options = fullInkTankOptions({ abilityPoints: new Map([ @@ -259,7 +259,7 @@ function inkTankOptionsWhenNSubsUsed({ weaponSplId, hasTacticooler: false, mainOnlyAbilities: [], - mainWeaponParams, + mainWeaponParams: mainParams, specialWeaponParams, subWeaponParams, }); diff --git a/app/features/build-analyzer/core/stats.ts b/app/features/build-analyzer/core/stats.ts index fd756a9bf..a70a12c34 100644 --- a/app/features/build-analyzer/core/stats.ts +++ b/app/features/build-analyzer/core/stats.ts @@ -45,6 +45,7 @@ import { abilityPointsToEffects, abilityValues, apFromMap, + mainWeaponParams as getMainWeaponParams, hasEffect, hpDivided, weaponIdToMultiShotCount, @@ -62,8 +63,7 @@ export function buildStats({ mainOnlyAbilities?: Array; hasTacticooler: boolean; }): AnalyzedBuild { - const mainWeaponParams = weaponParams().mainWeapons[weaponSplId]; - invariant(mainWeaponParams, `Weapon with splId ${weaponSplId} not found`); + const mainWeaponParams = getMainWeaponParams(weaponSplId); const subWeaponParams = weaponParams().subWeapons[mainWeaponParams.subWeaponId]; @@ -72,8 +72,9 @@ export function buildStats({ `Sub weapon with splId ${mainWeaponParams.subWeaponId} not found`, ); - const specialWeaponParams = - weaponParams().specialWeapons[mainWeaponParams.specialWeaponId]; + const specialWeaponParams = weaponParams().specialWeapons[ + mainWeaponParams.specialWeaponId + ] as SpecialWeaponParams; invariant( specialWeaponParams, `Special weapon with splId ${mainWeaponParams.specialWeaponId} not found`, diff --git a/app/features/build-analyzer/core/utils.ts b/app/features/build-analyzer/core/utils.ts index b4a918b6b..f8bd5bb39 100644 --- a/app/features/build-analyzer/core/utils.ts +++ b/app/features/build-analyzer/core/utils.ts @@ -34,7 +34,16 @@ import { abilityValues as abilityValuesJson } from "./ability-values"; import { weaponParams as rawWeaponParams } from "./weapon-params"; export function weaponParams(): ParamsJson { - return rawWeaponParams as ParamsJson; + return rawWeaponParams as unknown as ParamsJson; +} + +export function mainWeaponParams(weaponId: MainWeaponId): MainWeaponParams { + const params = rawWeaponParams as unknown as ParamsJson; + const baseId = weaponIdToBaseWeaponId(weaponId); + const baseStats = params.baseWeaponStats[baseId]; + const kit = params.weaponKits[weaponId]; + + return { ...baseStats, ...kit } as MainWeaponParams; } export function buildToAbilityPoints(build: BuildAbilitiesTupleWithUnknown) { diff --git a/app/features/build-analyzer/core/weapon-params.ts b/app/features/build-analyzer/core/weapon-params.ts index 4aab4ffeb..d0b08f508 100644 --- a/app/features/build-analyzer/core/weapon-params.ts +++ b/app/features/build-analyzer/core/weapon-params.ts @@ -1,22 +1,6 @@ export const weaponParams = { - mainWeapons: { + baseWeaponStats: { "0": { - SpecialPoint: 180, - subWeaponId: 6, - specialWeaponId: 11, - WeaponSpeedType: "Fast", - MoveSpeed: 0.08, - DamageParam_ValueMax: 380, - DamageParam_ValueMin: 190, - Jump_DegSwerve: 17.49, - Stand_DegSwerve: 11.66, - InkRecoverStop: 15, - InkConsume: 0.008, - }, - "1": { - SpecialPoint: 170, - subWeaponId: 8, - specialWeaponId: 9, WeaponSpeedType: "Fast", MoveSpeed: 0.08, DamageParam_ValueMax: 380, @@ -27,22 +11,6 @@ export const weaponParams = { InkConsume: 0.008, }, "10": { - SpecialPoint: 180, - subWeaponId: 0, - specialWeaponId: 2, - WeaponSpeedType: "Fast", - MoveSpeed: 0.076, - DamageParam_ValueMax: 280, - DamageParam_ValueMin: 140, - Jump_DegSwerve: 14.58, - Stand_DegSwerve: 11.66, - InkRecoverStop: 15, - InkConsume: 0.0043, - }, - "11": { - SpecialPoint: 190, - subWeaponId: 13, - specialWeaponId: 7, WeaponSpeedType: "Fast", MoveSpeed: 0.076, DamageParam_ValueMax: 280, @@ -53,33 +21,6 @@ export const weaponParams = { InkConsume: 0.0043, }, "20": { - SpecialPoint: 200, - subWeaponId: 2, - specialWeaponId: 12, - WeaponSpeedType: "Fast", - MoveSpeed: 0.072, - DamageParam_ValueMax: 280, - DamageParam_ValueMin: 140, - Jump_DegSwerve: 0, - Stand_DegSwerve: 0, - InkConsume: 0.008, - }, - "21": { - SpecialPoint: 200, - subWeaponId: 1, - specialWeaponId: 14, - WeaponSpeedType: "Fast", - MoveSpeed: 0.072, - DamageParam_ValueMax: 280, - DamageParam_ValueMin: 140, - Jump_DegSwerve: 0, - Stand_DegSwerve: 0, - InkConsume: 0.008, - }, - "22": { - SpecialPoint: 180, - subWeaponId: 11, - specialWeaponId: 5, WeaponSpeedType: "Fast", MoveSpeed: 0.072, DamageParam_ValueMax: 280, @@ -89,35 +30,6 @@ export const weaponParams = { InkConsume: 0.008, }, "30": { - SpecialPoint: 180, - subWeaponId: 5, - specialWeaponId: 13, - WeaponSpeedType: "Fast", - MoveSpeed: 0.072, - DamageParam_ValueMax: 240, - DamageParam_ValueMin: 120, - Jump_DegSwerve: 15.54, - Stand_DegSwerve: 12.63, - InkRecoverStop: 15, - InkConsume: 0.005, - }, - "31": { - SpecialPoint: 190, - subWeaponId: 3, - specialWeaponId: 6, - WeaponSpeedType: "Fast", - MoveSpeed: 0.072, - DamageParam_ValueMax: 240, - DamageParam_ValueMin: 120, - Jump_DegSwerve: 15.54, - Stand_DegSwerve: 12.63, - InkRecoverStop: 15, - InkConsume: 0.005, - }, - "32": { - SpecialPoint: 180, - subWeaponId: 2, - specialWeaponId: 19, WeaponSpeedType: "Fast", MoveSpeed: 0.072, DamageParam_ValueMax: 240, @@ -128,64 +40,6 @@ export const weaponParams = { InkConsume: 0.005, }, "40": { - SpecialPoint: 210, - subWeaponId: 1, - specialWeaponId: 1, - MoveSpeed: 0.072, - DamageParam_ValueMax: 360, - DamageParam_ValueMin: 180, - Jump_DegSwerve: 11.66, - Stand_DegSwerve: 4.86, - InkConsume: 0.0092, - }, - "41": { - SpecialPoint: 190, - subWeaponId: 0, - specialWeaponId: 14, - MoveSpeed: 0.072, - DamageParam_ValueMax: 360, - DamageParam_ValueMin: 180, - Jump_DegSwerve: 11.66, - Stand_DegSwerve: 4.86, - InkConsume: 0.0092, - }, - "42": { - SpecialPoint: 190, - subWeaponId: 2, - specialWeaponId: 17, - MoveSpeed: 0.072, - DamageParam_ValueMax: 360, - DamageParam_ValueMin: 180, - Jump_DegSwerve: 11.66, - Stand_DegSwerve: 4.86, - InkConsume: 0.0092, - }, - "45": { - SpecialPoint: 210, - subWeaponId: 1, - specialWeaponId: 1, - MoveSpeed: 0.072, - DamageParam_ValueMax: 360, - DamageParam_ValueMin: 180, - Jump_DegSwerve: 11.66, - Stand_DegSwerve: 4.86, - InkConsume: 0.0092, - }, - "46": { - SpecialPoint: 190, - subWeaponId: 0, - specialWeaponId: 14, - MoveSpeed: 0.072, - DamageParam_ValueMax: 360, - DamageParam_ValueMin: 180, - Jump_DegSwerve: 11.66, - Stand_DegSwerve: 4.86, - InkConsume: 0.0092, - }, - "47": { - SpecialPoint: 210, - subWeaponId: 1, - specialWeaponId: 1, MoveSpeed: 0.072, DamageParam_ValueMax: 360, DamageParam_ValueMin: 180, @@ -194,20 +48,6 @@ export const weaponParams = { InkConsume: 0.0092, }, "50": { - SpecialPoint: 200, - subWeaponId: 4, - specialWeaponId: 9, - MoveSpeed: 0.06, - DamageParam_ValueMax: 520, - DamageParam_ValueMin: 300, - Jump_DegSwerve: 12, - Stand_DegSwerve: 6, - InkConsume: 0.015, - }, - "51": { - SpecialPoint: 190, - subWeaponId: 6, - specialWeaponId: 19, MoveSpeed: 0.06, DamageParam_ValueMax: 520, DamageParam_ValueMin: 300, @@ -216,21 +56,6 @@ export const weaponParams = { InkConsume: 0.015, }, "60": { - SpecialPoint: 200, - subWeaponId: 1, - specialWeaponId: 15, - WeaponSpeedType: "Fast", - MoveSpeed: 0.088, - DamageParam_ValueMax: 300, - DamageParam_ValueMin: 150, - Jump_DegSwerve: 12, - Stand_DegSwerve: 4.75, - InkConsume: 0.008, - }, - "61": { - SpecialPoint: 170, - subWeaponId: 7, - specialWeaponId: 16, WeaponSpeedType: "Fast", MoveSpeed: 0.088, DamageParam_ValueMax: 300, @@ -240,43 +65,6 @@ export const weaponParams = { InkConsume: 0.008, }, "70": { - SpecialPoint: 180, - subWeaponId: 12, - specialWeaponId: 12, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Mid: 0.7, - }, - }, - MoveSpeed: 0.055, - DamageParam_ValueMax: 450, - DamageParam_ValueMin: 225, - Jump_DegSwerve: 6, - Stand_DegSwerve: 2.5, - InkConsume: 0.02, - }, - "71": { - SpecialPoint: 200, - subWeaponId: 1, - specialWeaponId: 6, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Mid: 0.7, - }, - }, - MoveSpeed: 0.055, - DamageParam_ValueMax: 450, - DamageParam_ValueMin: 225, - Jump_DegSwerve: 6, - Stand_DegSwerve: 2.5, - InkConsume: 0.02, - }, - "72": { - SpecialPoint: 190, - subWeaponId: 0, - specialWeaponId: 4, overwrites: { ConsumeRt_Main: { High: 0.5, @@ -291,31 +79,6 @@ export const weaponParams = { InkConsume: 0.02, }, "80": { - SpecialPoint: 190, - subWeaponId: 3, - specialWeaponId: 8, - MoveSpeed: 0.04, - DamageParam_ValueMax: 620, - DamageParam_ValueMin: 350, - Jump_DegSwerve: 11.3511, - Stand_DegSwerve: 4, - InkConsume: 0.023, - }, - "81": { - SpecialPoint: 210, - subWeaponId: 4, - specialWeaponId: 17, - MoveSpeed: 0.04, - DamageParam_ValueMax: 620, - DamageParam_ValueMin: 350, - Jump_DegSwerve: 11.3511, - Stand_DegSwerve: 4, - InkConsume: 0.023, - }, - "82": { - SpecialPoint: 190, - subWeaponId: 12, - specialWeaponId: 15, MoveSpeed: 0.04, DamageParam_ValueMax: 620, DamageParam_ValueMin: 350, @@ -324,31 +87,6 @@ export const weaponParams = { InkConsume: 0.023, }, "90": { - SpecialPoint: 180, - subWeaponId: 12, - specialWeaponId: 8, - MoveSpeed: 0.06, - DamageParam_ValueMax: 320, - DamageParam_ValueMin: 160, - Jump_DegSwerve: 8, - Stand_DegSwerve: 2.5, - InkConsume: 0.016, - }, - "91": { - SpecialPoint: 180, - subWeaponId: 11, - specialWeaponId: 5, - MoveSpeed: 0.06, - DamageParam_ValueMax: 320, - DamageParam_ValueMin: 160, - Jump_DegSwerve: 8, - Stand_DegSwerve: 2.5, - InkConsume: 0.016, - }, - "92": { - SpecialPoint: 190, - subWeaponId: 2, - specialWeaponId: 18, MoveSpeed: 0.06, DamageParam_ValueMax: 320, DamageParam_ValueMin: 160, @@ -357,20 +95,6 @@ export const weaponParams = { InkConsume: 0.016, }, "100": { - SpecialPoint: 190, - subWeaponId: 9, - specialWeaponId: 9, - MoveSpeed: 0.079, - DamageParam_ValueMax: 240, - DamageParam_ValueMin: 120, - Jump_DegSwerve: 8, - Stand_DegSwerve: 4.5, - InkConsume: 0.0096, - }, - "101": { - SpecialPoint: 210, - subWeaponId: 10, - specialWeaponId: 10, MoveSpeed: 0.079, DamageParam_ValueMax: 240, DamageParam_ValueMin: 120, @@ -379,71 +103,6 @@ export const weaponParams = { InkConsume: 0.0096, }, "200": { - SpecialPoint: 170, - subWeaponId: 0, - specialWeaponId: 3, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Mid: 0.7, - }, - ReduceJumpSwerveRate: { - Mid: 0.625, - }, - }, - WeaponSpeedType: "Fast", - MoveSpeed: 0.05, - DamageParam_ValueDirect: 1250, - BlastParam_DistanceDamage: [ - { - Damage: 700, - Distance: 1.6, - }, - { - Damage: 500, - Distance: 3.8, - }, - ], - Jump_DegSwerve: 6, - Stand_DegSwerve: 0, - InkRecoverStop: 55, - InkConsume: 0.075, - }, - "201": { - SpecialPoint: 180, - subWeaponId: 5, - specialWeaponId: 11, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Mid: 0.7, - }, - ReduceJumpSwerveRate: { - Mid: 0.625, - }, - }, - WeaponSpeedType: "Fast", - MoveSpeed: 0.05, - DamageParam_ValueDirect: 1250, - BlastParam_DistanceDamage: [ - { - Damage: 700, - Distance: 1.6, - }, - { - Damage: 500, - Distance: 3.8, - }, - ], - Jump_DegSwerve: 6, - Stand_DegSwerve: 0, - InkRecoverStop: 55, - InkConsume: 0.075, - }, - "205": { - SpecialPoint: 170, - subWeaponId: 0, - specialWeaponId: 3, overwrites: { ConsumeRt_Main: { High: 0.5, @@ -472,61 +131,6 @@ export const weaponParams = { InkConsume: 0.075, }, "210": { - SpecialPoint: 180, - subWeaponId: 7, - specialWeaponId: 2, - overwrites: { - ReduceJumpSwerveRate: { - Mid: 0.5, - }, - }, - MoveSpeed: 0.045, - DamageParam_ValueDirect: 1250, - BlastParam_DistanceDamage: [ - { - Damage: 700, - Distance: 0.94, - }, - { - Damage: 500, - Distance: 3.3, - }, - ], - Jump_DegSwerve: 10, - Stand_DegSwerve: 0, - InkRecoverStop: 57, - InkConsume: 0.1, - }, - "211": { - SpecialPoint: 180, - subWeaponId: 9, - specialWeaponId: 18, - overwrites: { - ReduceJumpSwerveRate: { - Mid: 0.5, - }, - }, - MoveSpeed: 0.045, - DamageParam_ValueDirect: 1250, - BlastParam_DistanceDamage: [ - { - Damage: 700, - Distance: 0.94, - }, - { - Damage: 500, - Distance: 3.3, - }, - ], - Jump_DegSwerve: 10, - Stand_DegSwerve: 0, - InkRecoverStop: 57, - InkConsume: 0.1, - }, - "212": { - SpecialPoint: 180, - subWeaponId: 8, - specialWeaponId: 12, overwrites: { ReduceJumpSwerveRate: { Mid: 0.5, @@ -550,35 +154,6 @@ export const weaponParams = { InkConsume: 0.1, }, "220": { - SpecialPoint: 210, - subWeaponId: 1, - specialWeaponId: 7, - overwrites: { - ReduceJumpSwerveRate: { - Mid: 0.5, - }, - }, - MoveSpeed: 0.04, - DamageParam_ValueDirect: 1250, - BlastParam_DistanceDamage: [ - { - Damage: 700, - Distance: 0.94, - }, - { - Damage: 500, - Distance: 3.3, - }, - ], - Jump_DegSwerve: 8, - Stand_DegSwerve: 0, - InkRecoverStop: 70, - InkConsume: 0.11, - }, - "221": { - SpecialPoint: 210, - subWeaponId: 0, - specialWeaponId: 17, overwrites: { ReduceJumpSwerveRate: { Mid: 0.5, @@ -602,36 +177,6 @@ export const weaponParams = { InkConsume: 0.11, }, "230": { - SpecialPoint: 180, - subWeaponId: 0, - specialWeaponId: 1, - overwrites: { - ReduceJumpSwerveRate: { - Mid: 0.5, - }, - }, - WeaponSpeedType: "Fast", - MoveSpeed: 0.068, - DamageParam_ValueDirect: 600, - BlastParam_DistanceDamage: [ - { - Damage: 300, - Distance: 1, - }, - { - Damage: 300, - Distance: 4, - }, - ], - Jump_DegSwerve: 8, - Stand_DegSwerve: 0, - InkRecoverStop: 40, - InkConsume: 0.04, - }, - "231": { - SpecialPoint: 170, - subWeaponId: 6, - specialWeaponId: 16, overwrites: { ReduceJumpSwerveRate: { Mid: 0.5, @@ -656,35 +201,6 @@ export const weaponParams = { InkConsume: 0.04, }, "240": { - SpecialPoint: 190, - subWeaponId: 10, - specialWeaponId: 14, - overwrites: { - ReduceJumpSwerveRate: { - Mid: 0.5, - }, - }, - MoveSpeed: 0.055, - DamageParam_ValueDirect: 850, - BlastParam_DistanceDamage: [ - { - Damage: 350, - Distance: 0.94, - }, - { - Damage: 350, - Distance: 3.3, - }, - ], - Jump_DegSwerve: 8, - Stand_DegSwerve: 0, - InkRecoverStop: 47, - InkConsume: 0.07, - }, - "241": { - SpecialPoint: 210, - subWeaponId: 13, - specialWeaponId: 10, overwrites: { ReduceJumpSwerveRate: { Mid: 0.5, @@ -708,61 +224,6 @@ export const weaponParams = { InkConsume: 0.07, }, "250": { - SpecialPoint: 180, - subWeaponId: 11, - specialWeaponId: 8, - overwrites: { - ReduceJumpSwerveRate: { - Mid: 0.5, - }, - }, - MoveSpeed: 0.05, - DamageParam_ValueDirect: 850, - BlastParam_DistanceDamage: [ - { - Damage: 350, - Distance: 0.94, - }, - { - Damage: 350, - Distance: 3.3, - }, - ], - Jump_DegSwerve: 8, - Stand_DegSwerve: 0, - InkRecoverStop: 50, - InkConsume: 0.08, - }, - "251": { - SpecialPoint: 190, - subWeaponId: 12, - specialWeaponId: 9, - overwrites: { - ReduceJumpSwerveRate: { - Mid: 0.5, - }, - }, - MoveSpeed: 0.05, - DamageParam_ValueDirect: 850, - BlastParam_DistanceDamage: [ - { - Damage: 350, - Distance: 0.94, - }, - { - Damage: 350, - Distance: 3.3, - }, - ], - Jump_DegSwerve: 8, - Stand_DegSwerve: 0, - InkRecoverStop: 50, - InkConsume: 0.08, - }, - "252": { - SpecialPoint: 200, - subWeaponId: 1, - specialWeaponId: 15, overwrites: { ReduceJumpSwerveRate: { Mid: 0.5, @@ -786,35 +247,6 @@ export const weaponParams = { InkConsume: 0.08, }, "260": { - SpecialPoint: 180, - subWeaponId: 3, - specialWeaponId: 13, - overwrites: { - ReduceJumpSwerveRate: { - Mid: 0.625, - }, - }, - MoveSpeed: 0.04, - DamageParam_ValueDirect: 1250, - BlastParam_DistanceDamage: [ - { - Damage: 700, - Distance: 1, - }, - { - Damage: 500, - Distance: 2, - }, - ], - Jump_DegSwerve: 8, - Stand_DegSwerve: 0, - InkRecoverStop: 60, - InkConsume: 0.095, - }, - "261": { - SpecialPoint: 200, - subWeaponId: 2, - specialWeaponId: 6, overwrites: { ReduceJumpSwerveRate: { Mid: 0.625, @@ -838,35 +270,6 @@ export const weaponParams = { InkConsume: 0.095, }, "300": { - SpecialPoint: 190, - subWeaponId: 6, - specialWeaponId: 12, - TripleShotSpanFrame: 8, - MoveSpeed: 0.08, - DamageParam_ValueMax: 310, - DamageParam_ValueMin: 155, - Jump_DegSwerve: 6, - Stand_DegSwerve: 1, - InkRecoverStop: 25, - InkConsume: 0.011, - }, - "301": { - SpecialPoint: 200, - subWeaponId: 2, - specialWeaponId: 11, - TripleShotSpanFrame: 8, - MoveSpeed: 0.08, - DamageParam_ValueMax: 310, - DamageParam_ValueMin: 155, - Jump_DegSwerve: 6, - Stand_DegSwerve: 1, - InkRecoverStop: 25, - InkConsume: 0.011, - }, - "302": { - SpecialPoint: 200, - subWeaponId: 0, - specialWeaponId: 10, TripleShotSpanFrame: 8, MoveSpeed: 0.08, DamageParam_ValueMax: 310, @@ -877,47 +280,6 @@ export const weaponParams = { InkConsume: 0.011, }, "310": { - SpecialPoint: 190, - subWeaponId: 9, - specialWeaponId: 15, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Mid: 0.7, - }, - }, - TripleShotSpanFrame: 20, - MoveSpeed: 0.06, - DamageParam_ValueMax: 440, - DamageParam_ValueMin: 220, - Jump_DegSwerve: 1, - Stand_DegSwerve: 1, - InkRecoverStop: 25, - InkConsume: 0.0208, - }, - "311": { - SpecialPoint: 200, - subWeaponId: 4, - specialWeaponId: 2, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Mid: 0.7, - }, - }, - TripleShotSpanFrame: 20, - MoveSpeed: 0.06, - DamageParam_ValueMax: 440, - DamageParam_ValueMin: 220, - Jump_DegSwerve: 1, - Stand_DegSwerve: 1, - InkRecoverStop: 25, - InkConsume: 0.0208, - }, - "312": { - SpecialPoint: 200, - subWeaponId: 1, - specialWeaponId: 14, overwrites: { ConsumeRt_Main: { High: 0.5, @@ -934,24 +296,6 @@ export const weaponParams = { InkConsume: 0.0208, }, "400": { - SpecialPoint: 220, - subWeaponId: 4, - specialWeaponId: 1, - MoveSpeed: 0.066, - DamageParam_ValueMax: 380, - DamageParam_ValueMin: 190, - Variable_Damage_ValueMax: 300, - Variable_Damage_ValueMin: 150, - Jump_DegSwerve: 0, - Stand_DegSwerve: 0, - Variable_Jump_DegSwerve: 13, - Variable_Stand_DegSwerve: 8, - InkConsume: 0.024, - }, - "401": { - SpecialPoint: 190, - subWeaponId: 7, - specialWeaponId: 19, MoveSpeed: 0.066, DamageParam_ValueMax: 380, DamageParam_ValueMin: 190, @@ -964,33 +308,6 @@ export const weaponParams = { InkConsume: 0.024, }, "1000": { - SpecialPoint: 160, - subWeaponId: 7, - specialWeaponId: 3, - WeaponSpeedType: "Fast", - BodyParam_Damage: 700, - VerticalSwingUnitGroupParam_DamageParam_DamageMinValue: 350, - VerticalSwingUnitGroupParam_DamageParam_DamageMaxValue: 1200, - WideSwingUnitGroupParam_DamageParam_DamageMinValue: 250, - WideSwingUnitGroupParam_DamageParam_DamageMaxValue: 1000, - InkConsume_WeaponSwingParam: 0.0396, - }, - "1001": { - SpecialPoint: 190, - subWeaponId: 2, - specialWeaponId: 1, - WeaponSpeedType: "Fast", - BodyParam_Damage: 700, - VerticalSwingUnitGroupParam_DamageParam_DamageMinValue: 350, - VerticalSwingUnitGroupParam_DamageParam_DamageMaxValue: 1200, - WideSwingUnitGroupParam_DamageParam_DamageMinValue: 250, - WideSwingUnitGroupParam_DamageParam_DamageMaxValue: 1000, - InkConsume_WeaponSwingParam: 0.0396, - }, - "1002": { - SpecialPoint: 170, - subWeaponId: 5, - specialWeaponId: 16, WeaponSpeedType: "Fast", BodyParam_Damage: 700, VerticalSwingUnitGroupParam_DamageParam_DamageMinValue: 350, @@ -1000,31 +317,6 @@ export const weaponParams = { InkConsume_WeaponSwingParam: 0.0396, }, "1010": { - SpecialPoint: 180, - subWeaponId: 6, - specialWeaponId: 2, - BodyParam_Damage: 1250, - VerticalSwingUnitGroupParam_DamageParam_DamageMinValue: 400, - VerticalSwingUnitGroupParam_DamageParam_DamageMaxValue: 1500, - WideSwingUnitGroupParam_DamageParam_DamageMinValue: 350, - WideSwingUnitGroupParam_DamageParam_DamageMaxValue: 1500, - InkConsume_WeaponSwingParam: 0.085, - }, - "1011": { - SpecialPoint: 170, - subWeaponId: 8, - specialWeaponId: 17, - BodyParam_Damage: 1250, - VerticalSwingUnitGroupParam_DamageParam_DamageMinValue: 400, - VerticalSwingUnitGroupParam_DamageParam_DamageMaxValue: 1500, - WideSwingUnitGroupParam_DamageParam_DamageMinValue: 350, - WideSwingUnitGroupParam_DamageParam_DamageMaxValue: 1500, - InkConsume_WeaponSwingParam: 0.085, - }, - "1015": { - SpecialPoint: 180, - subWeaponId: 6, - specialWeaponId: 2, BodyParam_Damage: 1250, VerticalSwingUnitGroupParam_DamageParam_DamageMinValue: 400, VerticalSwingUnitGroupParam_DamageParam_DamageMaxValue: 1500, @@ -1033,45 +325,6 @@ export const weaponParams = { InkConsume_WeaponSwingParam: 0.085, }, "1020": { - SpecialPoint: 190, - subWeaponId: 3, - specialWeaponId: 15, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Mid: 0.7, - }, - }, - WeaponSpeedType: "Slow", - BodyParam_Damage: 1250, - VerticalSwingUnitGroupParam_DamageParam_DamageMinValue: 400, - VerticalSwingUnitGroupParam_DamageParam_DamageMaxValue: 1800, - WideSwingUnitGroupParam_DamageParam_DamageMinValue: 400, - WideSwingUnitGroupParam_DamageParam_DamageMaxValue: 1800, - InkConsume_WeaponSwingParam: 0.18, - }, - "1021": { - SpecialPoint: 180, - subWeaponId: 0, - specialWeaponId: 16, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Mid: 0.7, - }, - }, - WeaponSpeedType: "Slow", - BodyParam_Damage: 1250, - VerticalSwingUnitGroupParam_DamageParam_DamageMinValue: 400, - VerticalSwingUnitGroupParam_DamageParam_DamageMaxValue: 1800, - WideSwingUnitGroupParam_DamageParam_DamageMinValue: 400, - WideSwingUnitGroupParam_DamageParam_DamageMaxValue: 1800, - InkConsume_WeaponSwingParam: 0.18, - }, - "1022": { - SpecialPoint: 180, - subWeaponId: 9, - specialWeaponId: 9, overwrites: { ConsumeRt_Main: { High: 0.5, @@ -1087,21 +340,6 @@ export const weaponParams = { InkConsume_WeaponSwingParam: 0.18, }, "1030": { - SpecialPoint: 210, - subWeaponId: 10, - specialWeaponId: 4, - BodyParam_Damage: 1250, - VerticalSwingUnitGroupParam_DamageParam_DamageMinValue: 400, - VerticalSwingUnitGroupParam_DamageParam_DamageMaxValue: 1500, - WideSwingUnitGroupParam_DamageParam_DamageMinValue: 300, - WideSwingUnitGroupParam_DamageParam_DamageMaxValue: 1500, - InkConsume_WeaponVerticalSwingParam: 0.12, - InkConsume_WeaponWideSwingParam: 0.08, - }, - "1031": { - SpecialPoint: 200, - subWeaponId: 1, - specialWeaponId: 19, BodyParam_Damage: 1250, VerticalSwingUnitGroupParam_DamageParam_DamageMinValue: 400, VerticalSwingUnitGroupParam_DamageParam_DamageMaxValue: 1500, @@ -1111,31 +349,6 @@ export const weaponParams = { InkConsume_WeaponWideSwingParam: 0.08, }, "1040": { - SpecialPoint: 180, - subWeaponId: 4, - specialWeaponId: 8, - BodyParam_Damage: 700, - VerticalSwingUnitGroupParam_DamageParam_DamageMinValue: 400, - VerticalSwingUnitGroupParam_DamageParam_DamageMaxValue: 1200, - WideSwingUnitGroupParam_DamageParam_DamageMinValue: 400, - WideSwingUnitGroupParam_DamageParam_DamageMaxValue: 700, - InkConsume_WeaponSwingParam: 0.09, - }, - "1041": { - SpecialPoint: 180, - subWeaponId: 12, - specialWeaponId: 5, - BodyParam_Damage: 700, - VerticalSwingUnitGroupParam_DamageParam_DamageMinValue: 400, - VerticalSwingUnitGroupParam_DamageParam_DamageMaxValue: 1200, - WideSwingUnitGroupParam_DamageParam_DamageMinValue: 400, - WideSwingUnitGroupParam_DamageParam_DamageMaxValue: 700, - InkConsume_WeaponSwingParam: 0.09, - }, - "1042": { - SpecialPoint: 180, - subWeaponId: 13, - specialWeaponId: 18, BodyParam_Damage: 700, VerticalSwingUnitGroupParam_DamageParam_DamageMinValue: 400, VerticalSwingUnitGroupParam_DamageParam_DamageMaxValue: 1200, @@ -1144,19 +357,6 @@ export const weaponParams = { InkConsume_WeaponSwingParam: 0.09, }, "1100": { - SpecialPoint: 180, - subWeaponId: 0, - specialWeaponId: 9, - WeaponSpeedType: "Fast", - BodyParam_Damage: 200, - SwingUnitGroupParam_DamageParam_DamageMinValue: 150, - SwingUnitGroupParam_DamageParam_DamageMaxValue: 300, - InkConsume_WeaponSwingParam: 0.02, - }, - "1101": { - SpecialPoint: 180, - subWeaponId: 10, - specialWeaponId: 11, WeaponSpeedType: "Fast", BodyParam_Damage: 200, SwingUnitGroupParam_DamageParam_DamageMinValue: 150, @@ -1164,85 +364,18 @@ export const weaponParams = { InkConsume_WeaponSwingParam: 0.02, }, "1110": { - SpecialPoint: 190, - subWeaponId: 1, - specialWeaponId: 3, - BodyParam_Damage: 250, - SwingUnitGroupParam_DamageParam_DamageMinValue: 200, - SwingUnitGroupParam_DamageParam_DamageMaxValue: 400, - InkConsume_WeaponSwingParam: 0.03, - }, - "1111": { - SpecialPoint: 180, - subWeaponId: 8, - specialWeaponId: 5, - BodyParam_Damage: 250, - SwingUnitGroupParam_DamageParam_DamageMinValue: 200, - SwingUnitGroupParam_DamageParam_DamageMaxValue: 400, - InkConsume_WeaponSwingParam: 0.03, - }, - "1112": { - SpecialPoint: 190, - subWeaponId: 7, - specialWeaponId: 17, - BodyParam_Damage: 250, - SwingUnitGroupParam_DamageParam_DamageMinValue: 200, - SwingUnitGroupParam_DamageParam_DamageMaxValue: 400, - InkConsume_WeaponSwingParam: 0.03, - }, - "1115": { - SpecialPoint: 190, - subWeaponId: 1, - specialWeaponId: 3, BodyParam_Damage: 250, SwingUnitGroupParam_DamageParam_DamageMinValue: 200, SwingUnitGroupParam_DamageParam_DamageMaxValue: 400, InkConsume_WeaponSwingParam: 0.03, }, "1120": { - SpecialPoint: 190, - subWeaponId: 6, - specialWeaponId: 7, - BodyParam_Damage: 300, - SwingUnitGroupParam_DamageParam_DamageMinValue: 310, - SwingUnitGroupParam_DamageParam_DamageMaxValue: 600, - InkConsume_WeaponSwingParam: 0.048, - }, - "1121": { - SpecialPoint: 190, - subWeaponId: 9, - specialWeaponId: 4, - BodyParam_Damage: 300, - SwingUnitGroupParam_DamageParam_DamageMinValue: 310, - SwingUnitGroupParam_DamageParam_DamageMaxValue: 600, - InkConsume_WeaponSwingParam: 0.048, - }, - "1122": { - SpecialPoint: 190, - subWeaponId: 4, - specialWeaponId: 1, BodyParam_Damage: 300, SwingUnitGroupParam_DamageParam_DamageMinValue: 310, SwingUnitGroupParam_DamageParam_DamageMaxValue: 600, InkConsume_WeaponSwingParam: 0.048, }, "2000": { - SpecialPoint: 190, - subWeaponId: 9, - specialWeaponId: 2, - MoveSpeedFullCharge: 0.03, - DamageParam_ValueFullCharge: 1400, - DamageParam_ValueMaxCharge: 800, - DamageParam_ValueMinCharge: 400, - ChargeFrameFullCharge: 45, - KeepChargeFullFrame: 75, - InkConsumeFullCharge: 0.105, - InkConsumeMinCharge: 0.018667, - }, - "2001": { - SpecialPoint: 200, - subWeaponId: 7, - specialWeaponId: 3, MoveSpeedFullCharge: 0.03, DamageParam_ValueFullCharge: 1400, DamageParam_ValueMaxCharge: 800, @@ -1253,45 +386,6 @@ export const weaponParams = { InkConsumeMinCharge: 0.018667, }, "2010": { - SpecialPoint: 190, - subWeaponId: 0, - specialWeaponId: 8, - MoveSpeedFullCharge: 0.02, - DamageParam_ValueFullCharge: 1600, - DamageParam_ValueMaxCharge: 800, - DamageParam_ValueMinCharge: 400, - KeepChargeFullFrame: 75, - InkConsumeFullCharge: 0.18, - InkConsumeMinCharge: 0.0225, - }, - "2011": { - SpecialPoint: 210, - subWeaponId: 4, - specialWeaponId: 14, - MoveSpeedFullCharge: 0.02, - DamageParam_ValueFullCharge: 1600, - DamageParam_ValueMaxCharge: 800, - DamageParam_ValueMinCharge: 400, - KeepChargeFullFrame: 75, - InkConsumeFullCharge: 0.18, - InkConsumeMinCharge: 0.0225, - }, - "2012": { - SpecialPoint: 200, - subWeaponId: 3, - specialWeaponId: 12, - MoveSpeedFullCharge: 0.02, - DamageParam_ValueFullCharge: 1600, - DamageParam_ValueMaxCharge: 800, - DamageParam_ValueMinCharge: 400, - KeepChargeFullFrame: 75, - InkConsumeFullCharge: 0.18, - InkConsumeMinCharge: 0.0225, - }, - "2015": { - SpecialPoint: 190, - subWeaponId: 0, - specialWeaponId: 8, MoveSpeedFullCharge: 0.02, DamageParam_ValueFullCharge: 1600, DamageParam_ValueMaxCharge: 800, @@ -1301,31 +395,6 @@ export const weaponParams = { InkConsumeMinCharge: 0.0225, }, "2020": { - SpecialPoint: 190, - subWeaponId: 0, - specialWeaponId: 8, - MoveSpeedFullCharge: 0.02, - DamageParam_ValueFullCharge: 1600, - DamageParam_ValueMaxCharge: 800, - DamageParam_ValueMinCharge: 400, - InkConsumeFullCharge: 0.18, - InkConsumeMinCharge: 0.0225, - }, - "2021": { - SpecialPoint: 210, - subWeaponId: 4, - specialWeaponId: 14, - MoveSpeedFullCharge: 0.02, - DamageParam_ValueFullCharge: 1600, - DamageParam_ValueMaxCharge: 800, - DamageParam_ValueMinCharge: 400, - InkConsumeFullCharge: 0.18, - InkConsumeMinCharge: 0.0225, - }, - "2022": { - SpecialPoint: 200, - subWeaponId: 3, - specialWeaponId: 12, MoveSpeedFullCharge: 0.02, DamageParam_ValueFullCharge: 1600, DamageParam_ValueMaxCharge: 800, @@ -1334,29 +403,6 @@ export const weaponParams = { InkConsumeMinCharge: 0.0225, }, "2030": { - SpecialPoint: 210, - subWeaponId: 10, - specialWeaponId: 7, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Mid: 0.7, - }, - }, - WeaponSpeedType: "Slow", - MoveSpeedFullCharge: 0.015, - DamageParam_ValueFullCharge: 1800, - DamageParam_ValueMaxCharge: 800, - DamageParam_ValueMinCharge: 400, - ChargeFrameFullCharge: 92, - KeepChargeFullFrame: 75, - InkConsumeFullCharge: 0.25, - InkConsumeMinCharge: 0.0225, - }, - "2031": { - SpecialPoint: 210, - subWeaponId: 8, - specialWeaponId: 17, overwrites: { ConsumeRt_Main: { High: 0.5, @@ -1374,28 +420,6 @@ export const weaponParams = { InkConsumeMinCharge: 0.0225, }, "2040": { - SpecialPoint: 210, - subWeaponId: 10, - specialWeaponId: 7, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Mid: 0.7, - }, - }, - WeaponSpeedType: "Slow", - MoveSpeedFullCharge: 0.015, - DamageParam_ValueFullCharge: 1800, - DamageParam_ValueMaxCharge: 800, - DamageParam_ValueMinCharge: 400, - ChargeFrameFullCharge: 92, - InkConsumeFullCharge: 0.25, - InkConsumeMinCharge: 0.0225, - }, - "2041": { - SpecialPoint: 210, - subWeaponId: 8, - specialWeaponId: 17, overwrites: { ConsumeRt_Main: { High: 0.5, @@ -1412,22 +436,6 @@ export const weaponParams = { InkConsumeMinCharge: 0.0225, }, "2050": { - SpecialPoint: 190, - subWeaponId: 7, - specialWeaponId: 9, - WeaponSpeedType: "Fast", - MoveSpeedFullCharge: 0.06, - DamageParam_ValueFullCharge: 850, - DamageParam_ValueMaxCharge: 850, - DamageParam_ValueMinCharge: 300, - ChargeFrameFullCharge: 20, - InkConsumeFullCharge: 0.07, - InkConsumeMinCharge: 0.028, - }, - "2051": { - SpecialPoint: 190, - subWeaponId: 5, - specialWeaponId: 16, WeaponSpeedType: "Fast", MoveSpeedFullCharge: 0.06, DamageParam_ValueFullCharge: 850, @@ -1438,22 +446,6 @@ export const weaponParams = { InkConsumeMinCharge: 0.028, }, "2060": { - SpecialPoint: 200, - subWeaponId: 13, - specialWeaponId: 4, - MoveSpeedFullCharge: 0.03, - DamageParam_ValueFullCharge: 1800, - DamageParam_ValueMaxCharge: 1300, - DamageParam_ValueMinCharge: 400, - ChargeFrameFullCharge: 71, - KeepChargeFullFrame: 300, - InkConsumeFullCharge: 0.15, - InkConsumeMinCharge: 0.02, - }, - "2061": { - SpecialPoint: 200, - subWeaponId: 5, - specialWeaponId: 11, MoveSpeedFullCharge: 0.03, DamageParam_ValueFullCharge: 1800, DamageParam_ValueMaxCharge: 1300, @@ -1464,22 +456,6 @@ export const weaponParams = { InkConsumeMinCharge: 0.02, }, "2070": { - SpecialPoint: 220, - subWeaponId: 3, - specialWeaponId: 15, - MoveSpeedFullCharge: 0.068, - DamageParam_ValueFullCharge: 680, - DamageParam_ValueMaxCharge: 680, - DamageParam_ValueMinCharge: 400, - ChargeFrameFullCharge: 72, - InkRecoverStop: 20, - InkConsumeFullCharge: 0.35, - InkConsumeMinCharge: 0.0197, - }, - "2071": { - SpecialPoint: 210, - subWeaponId: 4, - specialWeaponId: 5, MoveSpeedFullCharge: 0.068, DamageParam_ValueFullCharge: 680, DamageParam_ValueMaxCharge: 680, @@ -1490,29 +466,6 @@ export const weaponParams = { InkConsumeMinCharge: 0.0197, }, "3000": { - SpecialPoint: 210, - subWeaponId: 0, - specialWeaponId: 14, - MoveSpeed: 0.04, - DamageParam_ValueDirectMax: 700, - DamageParam_ValueDirectMin: 500, - InkRecoverStop: 40, - InkConsumeSlosher: 0.076, - }, - "3001": { - SpecialPoint: 180, - subWeaponId: 12, - specialWeaponId: 3, - MoveSpeed: 0.04, - DamageParam_ValueDirectMax: 700, - DamageParam_ValueDirectMin: 500, - InkRecoverStop: 40, - InkConsumeSlosher: 0.076, - }, - "3005": { - SpecialPoint: 210, - subWeaponId: 0, - specialWeaponId: 14, MoveSpeed: 0.04, DamageParam_ValueDirectMax: 700, DamageParam_ValueDirectMin: 500, @@ -1520,31 +473,6 @@ export const weaponParams = { InkConsumeSlosher: 0.076, }, "3010": { - SpecialPoint: 180, - subWeaponId: 11, - specialWeaponId: 10, - WeaponSpeedType: "Fast", - MoveSpeed: 0.066, - DamageParam_ValueDirectMax: 620, - DamageParam_ValueDirectMin: 350, - InkRecoverStop: 35, - InkConsumeSlosher: 0.06, - }, - "3011": { - SpecialPoint: 210, - subWeaponId: 5, - specialWeaponId: 15, - WeaponSpeedType: "Fast", - MoveSpeed: 0.066, - DamageParam_ValueDirectMax: 620, - DamageParam_ValueDirectMin: 350, - InkRecoverStop: 35, - InkConsumeSlosher: 0.06, - }, - "3012": { - SpecialPoint: 180, - subWeaponId: 0, - specialWeaponId: 19, WeaponSpeedType: "Fast", MoveSpeed: 0.066, DamageParam_ValueDirectMax: 620, @@ -1553,9 +481,6 @@ export const weaponParams = { InkConsumeSlosher: 0.06, }, "3020": { - SpecialPoint: 220, - subWeaponId: 5, - specialWeaponId: 6, MoveSpeed: 0.07, DamageParam_ValueDirectMax: 760, DamageParam_ValueDirectMin: 520, @@ -1563,54 +488,13 @@ export const weaponParams = { InkRecoverStop: 42, InkConsumeSlosher: 0.092, }, - "3021": { - SpecialPoint: 190, - subWeaponId: 9, - specialWeaponId: 1, - MoveSpeed: 0.07, - DamageParam_ValueDirectMax: 760, - DamageParam_ValueDirectMin: 520, - InkRecoverStop: 42, - InkConsumeSlosher: 0.092, - }, "3030": { - SpecialPoint: 190, - subWeaponId: 3, - specialWeaponId: 5, - MoveSpeed: 0.05, - DamageParam_ValueDirect: 300, - InkRecoverStop: 40, - InkConsumeSlosher: 0.08, - }, - "3031": { - SpecialPoint: 190, - subWeaponId: 12, - specialWeaponId: 17, MoveSpeed: 0.05, DamageParam_ValueDirect: 300, InkRecoverStop: 40, InkConsumeSlosher: 0.08, }, "3040": { - SpecialPoint: 200, - subWeaponId: 9, - specialWeaponId: 5, - WeaponSpeedType: "Slow", - MoveSpeed: 0.045, - DamageParam_ValueDirect: 550, - BlastParam_DistanceDamage: [ - { - Damage: 350, - Distance: 2.8, - }, - ], - InkRecoverStop: 70, - InkConsumeSlosher: 0.117, - }, - "3041": { - SpecialPoint: 190, - subWeaponId: 4, - specialWeaponId: 18, WeaponSpeedType: "Slow", MoveSpeed: 0.045, DamageParam_ValueDirect: 550, @@ -1624,9 +508,6 @@ export const weaponParams = { InkConsumeSlosher: 0.117, }, "3050": { - SpecialPoint: 190, - subWeaponId: 1, - specialWeaponId: 13, MoveSpeed: 0.04, DamageParam_ValueDirectMax: 480, DamageParam_ValueDirectMin: 350, @@ -1635,72 +516,7 @@ export const weaponParams = { InkRecoverStop: 50, InkConsumeSlosher: 0.09, }, - "3051": { - SpecialPoint: 190, - subWeaponId: 8, - specialWeaponId: 7, - MoveSpeed: 0.04, - DamageParam_ValueDirectMax: 480, - DamageParam_ValueDirectMin: 350, - DamageParam_Secondary_ValueDirectMax: 420, - DamageParam_Secondary_ValueDirectMin: 350, - InkRecoverStop: 50, - InkConsumeSlosher: 0.09, - }, - "3052": { - SpecialPoint: 200, - subWeaponId: 6, - specialWeaponId: 12, - MoveSpeed: 0.04, - DamageParam_ValueDirectMax: 480, - DamageParam_ValueDirectMin: 350, - InkRecoverStop: 50, - InkConsumeSlosher: 0.09, - }, "4000": { - SpecialPoint: 190, - subWeaponId: 2, - specialWeaponId: 11, - overwrites: { - MoveVelRt_Shot: { - High: 1.4, - Low: 1, - Mid: 1.2, - }, - }, - MoveSpeed: 0.086, - MoveSpeed_Charge: 0.072, - DamageParam_ValueMax: 320, - DamageParam_ValueMin: 160, - Jump_DegSwerve: 8, - Stand_DegSwerve: 4, - InkRecoverStop: 30, - InkConsumeFullChargeSplatling: 0.15, - }, - "4001": { - SpecialPoint: 200, - subWeaponId: 11, - specialWeaponId: 2, - overwrites: { - MoveVelRt_Shot: { - High: 1.4, - Low: 1, - Mid: 1.2, - }, - }, - MoveSpeed: 0.086, - MoveSpeed_Charge: 0.072, - DamageParam_ValueMax: 320, - DamageParam_ValueMin: 160, - Jump_DegSwerve: 8, - Stand_DegSwerve: 4, - InkRecoverStop: 30, - InkConsumeFullChargeSplatling: 0.15, - }, - "4002": { - SpecialPoint: 200, - subWeaponId: 8, - specialWeaponId: 1, overwrites: { MoveVelRt_Shot: { High: 1.4, @@ -1718,49 +534,6 @@ export const weaponParams = { InkConsumeFullChargeSplatling: 0.15, }, "4010": { - SpecialPoint: 200, - subWeaponId: 3, - specialWeaponId: 7, - overwrites: { - MoveVelRt_Shot: { - High: 1.35, - Low: 1, - Mid: 1.175, - }, - }, - MoveSpeed: 0.07, - MoveSpeed_Charge: 0.062, - DamageParam_ValueMax: 300, - DamageParam_ValueMin: 150, - Jump_DegSwerve: 7, - Stand_DegSwerve: 3.3, - InkRecoverStop: 40, - InkConsumeFullChargeSplatling: 0.225, - }, - "4011": { - SpecialPoint: 200, - subWeaponId: 9, - specialWeaponId: 17, - overwrites: { - MoveVelRt_Shot: { - High: 1.35, - Low: 1, - Mid: 1.175, - }, - }, - MoveSpeed: 0.07, - MoveSpeed_Charge: 0.062, - DamageParam_ValueMax: 300, - DamageParam_ValueMin: 150, - Jump_DegSwerve: 7, - Stand_DegSwerve: 3.3, - InkRecoverStop: 40, - InkConsumeFullChargeSplatling: 0.225, - }, - "4015": { - SpecialPoint: 200, - subWeaponId: 3, - specialWeaponId: 7, overwrites: { MoveVelRt_Shot: { High: 1.35, @@ -1778,63 +551,6 @@ export const weaponParams = { InkConsumeFullChargeSplatling: 0.225, }, "4020": { - SpecialPoint: 190, - subWeaponId: 7, - specialWeaponId: 6, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Low: 1, - Mid: 0.7, - }, - MoveVelRt_Shot: { - High: 1.35, - Low: 1, - Mid: 1.175, - }, - }, - WeaponSpeedType: "Slow", - MoveSpeed: 0.06, - MoveSpeed_Charge: 0.044, - DamageParam_ValueMax: 320, - DamageParam_ValueMin: 160, - DamageParam_ValueFullChargeMax: 400, - Jump_DegSwerve: 6, - Stand_DegSwerve: 3, - InkRecoverStop: 40, - InkConsumeFullChargeSplatling: 0.35, - }, - "4021": { - SpecialPoint: 200, - subWeaponId: 10, - specialWeaponId: 19, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Low: 1, - Mid: 0.7, - }, - MoveVelRt_Shot: { - High: 1.35, - Low: 1, - Mid: 1.175, - }, - }, - WeaponSpeedType: "Slow", - MoveSpeed: 0.06, - MoveSpeed_Charge: 0.044, - DamageParam_ValueMax: 320, - DamageParam_ValueMin: 160, - DamageParam_ValueFullChargeMax: 400, - Jump_DegSwerve: 6, - Stand_DegSwerve: 3, - InkRecoverStop: 40, - InkConsumeFullChargeSplatling: 0.35, - }, - "4022": { - SpecialPoint: 200, - subWeaponId: 3, - specialWeaponId: 2, overwrites: { ConsumeRt_Main: { High: 0.5, @@ -1859,34 +575,6 @@ export const weaponParams = { InkConsumeFullChargeSplatling: 0.35, }, "4030": { - SpecialPoint: 210, - subWeaponId: 5, - specialWeaponId: 10, - overwrites: { - MoveVelRt_Shot: { - High: 1.25, - Low: 1, - Mid: 1.125, - }, - }, - MoveSpeed: 0.086, - MoveSpeed_Charge: 0.086, - MoveSpeedVariable: 0.05, - DamageParam_ValueMax: 280, - DamageParam_ValueMin: 140, - Variable_Damage_ValueMax: 300, - Variable_Damage_ValueMin: 150, - Jump_DegSwerve: 12, - Stand_DegSwerve: 6, - Variable_Jump_DegSwerve: 4, - Variable_Stand_DegSwerve: 1.5, - InkRecoverStop: 40, - InkConsumeFullChargeSplatling: 0.25, - }, - "4031": { - SpecialPoint: 200, - subWeaponId: 10, - specialWeaponId: 8, overwrites: { MoveVelRt_Shot: { High: 1.25, @@ -1909,30 +597,6 @@ export const weaponParams = { InkConsumeFullChargeSplatling: 0.25, }, "4040": { - SpecialPoint: 190, - subWeaponId: 9, - specialWeaponId: 5, - overwrites: { - MoveVelRt_Shot: { - High: 1.3, - Low: 1, - Mid: 1.15, - }, - }, - MoveSpeed: 0.07, - MoveSpeed_Charge: 0.04, - DamageParam_ValueMax: 320, - DamageParam_ValueMin: 160, - KeepChargeFullFrame: 200, - Jump_DegSwerve: 3.6, - Stand_DegSwerve: 3.3, - InkRecoverStop: 40, - InkConsumeFullChargeSplatling: 0.15, - }, - "4041": { - SpecialPoint: 200, - subWeaponId: 1, - specialWeaponId: 18, overwrites: { MoveVelRt_Shot: { High: 1.3, @@ -1951,29 +615,6 @@ export const weaponParams = { InkConsumeFullChargeSplatling: 0.15, }, "4050": { - SpecialPoint: 200, - subWeaponId: 6, - specialWeaponId: 15, - overwrites: { - MoveVelRt_Shot: { - High: 1.4, - Low: 1, - Mid: 1.2, - }, - }, - MoveSpeed: 0.086, - MoveSpeed_Charge: 0.072, - DamageParam_ValueMax: 260, - DamageParam_ValueMin: 130, - Jump_DegSwerve: 6, - Stand_DegSwerve: 3, - InkRecoverStop: 40, - InkConsumeFullChargeSplatling: 0.2, - }, - "4051": { - SpecialPoint: 210, - subWeaponId: 0, - specialWeaponId: 12, overwrites: { MoveVelRt_Shot: { High: 1.4, @@ -1991,35 +632,6 @@ export const weaponParams = { InkConsumeFullChargeSplatling: 0.2, }, "5000": { - SpecialPoint: 170, - subWeaponId: 8, - specialWeaponId: 15, - WeaponSpeedType: "Fast", - MoveSpeed: 0.084, - DamageParam_ValueMax: 360, - DamageParam_ValueMin: 180, - Jump_DegSwerve: 11.66, - Stand_DegSwerve: 6.8, - InkConsume: 0.00663, - InkConsume_SideStepParam: 0.05, - }, - "5001": { - SpecialPoint: 190, - subWeaponId: 13, - specialWeaponId: 13, - WeaponSpeedType: "Fast", - MoveSpeed: 0.084, - DamageParam_ValueMax: 360, - DamageParam_ValueMin: 180, - Jump_DegSwerve: 11.66, - Stand_DegSwerve: 6.8, - InkConsume: 0.00663, - InkConsume_SideStepParam: 0.05, - }, - "5002": { - SpecialPoint: 190, - subWeaponId: 0, - specialWeaponId: 9, WeaponSpeedType: "Fast", MoveSpeed: 0.084, DamageParam_ValueMax: 360, @@ -2030,45 +642,6 @@ export const weaponParams = { InkConsume_SideStepParam: 0.05, }, "5010": { - SpecialPoint: 190, - subWeaponId: 1, - specialWeaponId: 12, - MoveSpeed: 0.08, - DamageParam_ValueMax: 300, - DamageParam_ValueMin: 150, - Jump_DegSwerve: 7.5, - Stand_DegSwerve: 2, - InkConsume: 0.0072, - InkConsume_SideStepParam: 0.07, - }, - "5011": { - SpecialPoint: 190, - subWeaponId: 6, - specialWeaponId: 18, - MoveSpeed: 0.08, - DamageParam_ValueMax: 300, - DamageParam_ValueMin: 150, - Jump_DegSwerve: 7.5, - Stand_DegSwerve: 2, - InkConsume: 0.0072, - InkConsume_SideStepParam: 0.07, - }, - "5012": { - SpecialPoint: 190, - subWeaponId: 5, - specialWeaponId: 2, - MoveSpeed: 0.08, - DamageParam_ValueMax: 300, - DamageParam_ValueMin: 150, - Jump_DegSwerve: 7.5, - Stand_DegSwerve: 2, - InkConsume: 0.0072, - InkConsume_SideStepParam: 0.07, - }, - "5015": { - SpecialPoint: 190, - subWeaponId: 1, - specialWeaponId: 12, MoveSpeed: 0.08, DamageParam_ValueMax: 300, DamageParam_ValueMin: 150, @@ -2078,23 +651,6 @@ export const weaponParams = { InkConsume_SideStepParam: 0.07, }, "5020": { - SpecialPoint: 180, - subWeaponId: 4, - specialWeaponId: 6, - MoveSpeed: 0.06, - DamageParam_ValueMax: 360, - DamageParam_ValueMin: 180, - DamageLapOverParam_ValueMax: 525, - DamageLapOverParam_ValueMin: 263, - Jump_DegSwerve: 8, - Stand_DegSwerve: 3.2, - InkConsume: 0.014, - InkConsume_SideStepParam: 0.08, - }, - "5021": { - SpecialPoint: 190, - subWeaponId: 9, - specialWeaponId: 1, MoveSpeed: 0.06, DamageParam_ValueMax: 360, DamageParam_ValueMin: 180, @@ -2106,33 +662,6 @@ export const weaponParams = { InkConsume_SideStepParam: 0.08, }, "5030": { - SpecialPoint: 200, - subWeaponId: 0, - specialWeaponId: 7, - MoveSpeed: 0.072, - DamageParam_ValueMax: 280, - DamageParam_ValueMin: 140, - Jump_DegSwerve: 8, - Stand_DegSwerve: 4, - InkConsume: 0.012, - InkConsume_SideStepParam: 0.08, - }, - "5031": { - SpecialPoint: 200, - subWeaponId: 8, - specialWeaponId: 16, - MoveSpeed: 0.072, - DamageParam_ValueMax: 280, - DamageParam_ValueMin: 140, - Jump_DegSwerve: 8, - Stand_DegSwerve: 4, - InkConsume: 0.012, - InkConsume_SideStepParam: 0.08, - }, - "5032": { - SpecialPoint: 190, - subWeaponId: 9, - specialWeaponId: 19, MoveSpeed: 0.072, DamageParam_ValueMax: 280, DamageParam_ValueMin: 140, @@ -2142,21 +671,6 @@ export const weaponParams = { InkConsume_SideStepParam: 0.08, }, "5040": { - SpecialPoint: 200, - subWeaponId: 7, - specialWeaponId: 13, - MoveSpeed: 0.072, - DamageParam_ValueMax: 280, - DamageParam_ValueMin: 140, - Jump_DegSwerve: 12.8, - Stand_DegSwerve: 7.4, - InkConsume: 0.008, - InkConsume_SideStepParam: 0.03, - }, - "5041": { - SpecialPoint: 190, - subWeaponId: 3, - specialWeaponId: 3, MoveSpeed: 0.072, DamageParam_ValueMax: 280, DamageParam_ValueMin: 140, @@ -2166,23 +680,6 @@ export const weaponParams = { InkConsume_SideStepParam: 0.03, }, "5050": { - SpecialPoint: 190, - subWeaponId: 10, - specialWeaponId: 9, - MoveSpeed: 0.07, - DamageParam_ValueMax: 255, - DamageParam_ValueMin: 128, - DamageLapOverParam_ValueMax: 255, - DamageLapOverParam_ValueMin: 128, - Jump_DegSwerve: 8, - Stand_DegSwerve: 2.5, - InkConsume: 0.012, - InkConsume_SideStepParam: 0.1, - }, - "5051": { - SpecialPoint: 200, - subWeaponId: 2, - specialWeaponId: 14, MoveSpeed: 0.07, DamageParam_ValueMax: 255, DamageParam_ValueMin: 128, @@ -2194,29 +691,6 @@ export const weaponParams = { InkConsume_SideStepParam: 0.1, }, "6000": { - SpecialPoint: 210, - subWeaponId: 3, - specialWeaponId: 14, - MoveSpeed: 0.065, - DamageParam_ValueMax: 810, - CanopyHP: 5000, - InkConsumeUmbrella_WeaponShelterCanopyParam: 0.3, - InkConsume_WeaponShelterShotgunParam: 0.055, - }, - "6001": { - SpecialPoint: 210, - subWeaponId: 7, - specialWeaponId: 10, - MoveSpeed: 0.065, - DamageParam_ValueMax: 810, - CanopyHP: 5000, - InkConsumeUmbrella_WeaponShelterCanopyParam: 0.3, - InkConsume_WeaponShelterShotgunParam: 0.055, - }, - "6005": { - SpecialPoint: 210, - subWeaponId: 3, - specialWeaponId: 14, MoveSpeed: 0.065, DamageParam_ValueMax: 810, CanopyHP: 5000, @@ -2224,43 +698,6 @@ export const weaponParams = { InkConsume_WeaponShelterShotgunParam: 0.055, }, "6010": { - SpecialPoint: 190, - subWeaponId: 8, - specialWeaponId: 8, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Mid: 0.7, - }, - }, - WeaponSpeedType: "Slow", - MoveSpeed: 0.05, - DamageParam_ValueMax: 1190, - CanopyHP: 7000, - InkConsumeUmbrella_WeaponShelterCanopyParam: 0.3, - InkConsume_WeaponShelterShotgunParam: 0.11, - }, - "6011": { - SpecialPoint: 200, - subWeaponId: 10, - specialWeaponId: 1, - overwrites: { - ConsumeRt_Main: { - High: 0.5, - Mid: 0.7, - }, - }, - WeaponSpeedType: "Slow", - MoveSpeed: 0.05, - DamageParam_ValueMax: 1190, - CanopyHP: 7000, - InkConsumeUmbrella_WeaponShelterCanopyParam: 0.3, - InkConsume_WeaponShelterShotgunParam: 0.11, - }, - "6012": { - SpecialPoint: 180, - subWeaponId: 11, - specialWeaponId: 16, overwrites: { ConsumeRt_Main: { High: 0.5, @@ -2275,29 +712,6 @@ export const weaponParams = { InkConsume_WeaponShelterShotgunParam: 0.11, }, "6020": { - SpecialPoint: 180, - subWeaponId: 10, - specialWeaponId: 13, - WeaponSpeedType: "Fast", - MoveSpeed: 0.072, - DamageParam_ValueMax: 400, - CanopyHP: 2000, - InkConsume_WeaponShelterShotgunParam: 0.04, - }, - "6021": { - SpecialPoint: 180, - subWeaponId: 13, - specialWeaponId: 19, - WeaponSpeedType: "Fast", - MoveSpeed: 0.072, - DamageParam_ValueMax: 400, - CanopyHP: 2000, - InkConsume_WeaponShelterShotgunParam: 0.04, - }, - "6022": { - SpecialPoint: 180, - subWeaponId: 6, - specialWeaponId: 9, WeaponSpeedType: "Fast", MoveSpeed: 0.072, DamageParam_ValueMax: 400, @@ -2305,19 +719,6 @@ export const weaponParams = { InkConsume_WeaponShelterShotgunParam: 0.04, }, "6030": { - SpecialPoint: 190, - subWeaponId: 12, - specialWeaponId: 2, - MoveSpeed: 0.058, - DamageParam_ValueMax: 900, - CanopyHP: 1500, - InkConsumeUmbrella_WeaponShelterCanopyParam: 0.15, - InkConsume_WeaponShelterShotgunParam: 0.06, - }, - "6031": { - SpecialPoint: 190, - subWeaponId: 11, - specialWeaponId: 18, MoveSpeed: 0.058, DamageParam_ValueMax: 900, CanopyHP: 1500, @@ -2325,57 +726,6 @@ export const weaponParams = { InkConsume_WeaponShelterShotgunParam: 0.06, }, "7010": { - SpecialPoint: 190, - subWeaponId: 11, - specialWeaponId: 9, - MoveSpeedFullCharge: 0.068, - DamageParam_ValueMax: 350, - DamageParam_ValueMin: 300, - BlastParam_DistanceDamage: [ - { - Damage: 300, - Distance: 2, - }, - ], - ChargeFrameFullCharge: 72, - InkConsumeFullCharge_ChargeParam: 0.085, - }, - "7011": { - SpecialPoint: 190, - subWeaponId: 3, - specialWeaponId: 16, - MoveSpeedFullCharge: 0.068, - DamageParam_ValueMax: 350, - DamageParam_ValueMin: 300, - BlastParam_DistanceDamage: [ - { - Damage: 300, - Distance: 2, - }, - ], - ChargeFrameFullCharge: 72, - InkConsumeFullCharge_ChargeParam: 0.085, - }, - "7012": { - SpecialPoint: 200, - subWeaponId: 12, - specialWeaponId: 10, - MoveSpeedFullCharge: 0.068, - DamageParam_ValueMax: 350, - DamageParam_ValueMin: 300, - BlastParam_DistanceDamage: [ - { - Damage: 300, - Distance: 2, - }, - ], - ChargeFrameFullCharge: 72, - InkConsumeFullCharge_ChargeParam: 0.085, - }, - "7015": { - SpecialPoint: 190, - subWeaponId: 11, - specialWeaponId: 9, MoveSpeedFullCharge: 0.068, DamageParam_ValueMax: 350, DamageParam_ValueMin: 300, @@ -2389,9 +739,6 @@ export const weaponParams = { InkConsumeFullCharge_ChargeParam: 0.085, }, "7020": { - SpecialPoint: 210, - subWeaponId: 6, - specialWeaponId: 4, WeaponSpeedType: "Fast", MoveSpeedFullCharge: 0.084, DamageParam_ValueMax: 450, @@ -2400,63 +747,7 @@ export const weaponParams = { KeepChargeFullFrame: 75, InkConsumeFullCharge_ChargeParam: 0.065, }, - "7021": { - SpecialPoint: 200, - subWeaponId: 4, - specialWeaponId: 13, - WeaponSpeedType: "Fast", - MoveSpeedFullCharge: 0.084, - DamageParam_ValueMax: 450, - DamageParam_ValueMin: 300, - BlastParam_DistanceDamage: [ - { - Damage: 280, - Distance: 2, - }, - ], - ChargeFrameFullCharge: 34, - KeepChargeFullFrame: 75, - InkConsumeFullCharge_ChargeParam: 0.065, - }, - "7022": { - SpecialPoint: 210, - subWeaponId: 13, - specialWeaponId: 6, - WeaponSpeedType: "Fast", - MoveSpeedFullCharge: 0.084, - DamageParam_ValueMax: 450, - DamageParam_ValueMin: 300, - BlastParam_DistanceDamage: [ - { - Damage: 280, - Distance: 2, - }, - ], - ChargeFrameFullCharge: 34, - KeepChargeFullFrame: 75, - InkConsumeFullCharge_ChargeParam: 0.065, - }, "7030": { - SpecialPoint: 200, - subWeaponId: 7, - specialWeaponId: 11, - WeaponSpeedType: "Slow", - MoveSpeedFullCharge: 0.04, - DamageParam_ValueMax: 350, - DamageParam_ValueMin: 240, - BlastParam_DistanceDamage: [ - { - Damage: 300, - Distance: 2, - }, - ], - ChargeFrameFullCharge: 80, - InkConsumeFullCharge_ChargeParam: 0.09, - }, - "7031": { - SpecialPoint: 200, - subWeaponId: 9, - specialWeaponId: 7, WeaponSpeedType: "Slow", MoveSpeedFullCharge: 0.04, DamageParam_ValueMax: 350, @@ -2471,42 +762,6 @@ export const weaponParams = { InkConsumeFullCharge_ChargeParam: 0.09, }, "8000": { - SpecialPoint: 210, - subWeaponId: 2, - specialWeaponId: 3, - DamageParam_SplatanaVerticalDirect: 1400, - DamageParam_SplatanaVertical: 700, - DamageParam_SplatanaHorizontalDirect: 550, - DamageParam_SplatanaHorizontal: 350, - InkConsume_SwingParam: 0.052, - InkConsumeFullCharge_ChargeParam: 0.117, - }, - "8001": { - SpecialPoint: 210, - subWeaponId: 11, - specialWeaponId: 12, - DamageParam_SplatanaVerticalDirect: 1400, - DamageParam_SplatanaVertical: 700, - DamageParam_SplatanaHorizontalDirect: 550, - DamageParam_SplatanaHorizontal: 350, - InkConsume_SwingParam: 0.052, - InkConsumeFullCharge_ChargeParam: 0.117, - }, - "8002": { - SpecialPoint: 190, - subWeaponId: 7, - specialWeaponId: 6, - DamageParam_SplatanaVerticalDirect: 1400, - DamageParam_SplatanaVertical: 700, - DamageParam_SplatanaHorizontalDirect: 550, - DamageParam_SplatanaHorizontal: 350, - InkConsume_SwingParam: 0.052, - InkConsumeFullCharge_ChargeParam: 0.117, - }, - "8005": { - SpecialPoint: 210, - subWeaponId: 2, - specialWeaponId: 3, DamageParam_SplatanaVerticalDirect: 1400, DamageParam_SplatanaVertical: 700, DamageParam_SplatanaHorizontalDirect: 550, @@ -2515,33 +770,6 @@ export const weaponParams = { InkConsumeFullCharge_ChargeParam: 0.117, }, "8010": { - SpecialPoint: 190, - subWeaponId: 13, - specialWeaponId: 11, - WeaponSpeedType: "Fast", - DamageParam_SplatanaVerticalDirect: 1200, - DamageParam_SplatanaVertical: 600, - DamageParam_SplatanaHorizontalDirect: 450, - DamageParam_SplatanaHorizontal: 300, - InkConsume_SwingParam: 0.03, - InkConsumeFullCharge_ChargeParam: 0.06, - }, - "8011": { - SpecialPoint: 190, - subWeaponId: 8, - specialWeaponId: 4, - WeaponSpeedType: "Fast", - DamageParam_SplatanaVerticalDirect: 1200, - DamageParam_SplatanaVertical: 600, - DamageParam_SplatanaHorizontalDirect: 450, - DamageParam_SplatanaHorizontal: 300, - InkConsume_SwingParam: 0.03, - InkConsumeFullCharge_ChargeParam: 0.06, - }, - "8012": { - SpecialPoint: 190, - subWeaponId: 6, - specialWeaponId: 1, WeaponSpeedType: "Fast", DamageParam_SplatanaVerticalDirect: 1200, DamageParam_SplatanaVertical: 600, @@ -2551,9 +779,6 @@ export const weaponParams = { InkConsumeFullCharge_ChargeParam: 0.06, }, "8020": { - SpecialPoint: 210, - subWeaponId: 1, - specialWeaponId: 2, DamageParam_SplatanaVerticalDirect: 1600, DamageParam_SplatanaVertical: 800, DamageParam_SplatanaHorizontalDirect: 700, @@ -2561,16 +786,872 @@ export const weaponParams = { InkConsume_SwingParam: 0.065, InkConsumeFullCharge_ChargeParam: 0.13, }, + }, + weaponKits: { + "0": { + SpecialPoint: 180, + subWeaponId: 6, + specialWeaponId: 11, + }, + "1": { + SpecialPoint: 170, + subWeaponId: 8, + specialWeaponId: 9, + }, + "10": { + SpecialPoint: 180, + subWeaponId: 0, + specialWeaponId: 2, + }, + "11": { + SpecialPoint: 190, + subWeaponId: 13, + specialWeaponId: 7, + }, + "20": { + SpecialPoint: 200, + subWeaponId: 2, + specialWeaponId: 12, + }, + "21": { + SpecialPoint: 200, + subWeaponId: 1, + specialWeaponId: 14, + }, + "22": { + SpecialPoint: 180, + subWeaponId: 11, + specialWeaponId: 5, + }, + "30": { + SpecialPoint: 180, + subWeaponId: 5, + specialWeaponId: 13, + }, + "31": { + SpecialPoint: 190, + subWeaponId: 3, + specialWeaponId: 6, + }, + "32": { + SpecialPoint: 180, + subWeaponId: 2, + specialWeaponId: 19, + }, + "40": { + SpecialPoint: 210, + subWeaponId: 1, + specialWeaponId: 1, + }, + "41": { + SpecialPoint: 190, + subWeaponId: 0, + specialWeaponId: 14, + }, + "42": { + SpecialPoint: 190, + subWeaponId: 2, + specialWeaponId: 17, + }, + "45": { + SpecialPoint: 210, + subWeaponId: 1, + specialWeaponId: 1, + }, + "46": { + SpecialPoint: 190, + subWeaponId: 0, + specialWeaponId: 14, + }, + "47": { + SpecialPoint: 210, + subWeaponId: 1, + specialWeaponId: 1, + }, + "50": { + SpecialPoint: 200, + subWeaponId: 4, + specialWeaponId: 9, + }, + "51": { + SpecialPoint: 190, + subWeaponId: 6, + specialWeaponId: 19, + }, + "60": { + SpecialPoint: 200, + subWeaponId: 1, + specialWeaponId: 15, + }, + "61": { + SpecialPoint: 170, + subWeaponId: 7, + specialWeaponId: 16, + }, + "70": { + SpecialPoint: 180, + subWeaponId: 12, + specialWeaponId: 12, + }, + "71": { + SpecialPoint: 200, + subWeaponId: 1, + specialWeaponId: 6, + }, + "72": { + SpecialPoint: 190, + subWeaponId: 0, + specialWeaponId: 4, + }, + "80": { + SpecialPoint: 190, + subWeaponId: 3, + specialWeaponId: 8, + }, + "81": { + SpecialPoint: 210, + subWeaponId: 4, + specialWeaponId: 17, + }, + "82": { + SpecialPoint: 190, + subWeaponId: 12, + specialWeaponId: 15, + }, + "90": { + SpecialPoint: 180, + subWeaponId: 12, + specialWeaponId: 8, + }, + "91": { + SpecialPoint: 180, + subWeaponId: 11, + specialWeaponId: 5, + }, + "92": { + SpecialPoint: 190, + subWeaponId: 2, + specialWeaponId: 18, + }, + "100": { + SpecialPoint: 190, + subWeaponId: 9, + specialWeaponId: 9, + }, + "101": { + SpecialPoint: 210, + subWeaponId: 10, + specialWeaponId: 10, + }, + "200": { + SpecialPoint: 170, + subWeaponId: 0, + specialWeaponId: 3, + }, + "201": { + SpecialPoint: 180, + subWeaponId: 5, + specialWeaponId: 11, + }, + "205": { + SpecialPoint: 170, + subWeaponId: 0, + specialWeaponId: 3, + }, + "210": { + SpecialPoint: 180, + subWeaponId: 7, + specialWeaponId: 2, + }, + "211": { + SpecialPoint: 180, + subWeaponId: 9, + specialWeaponId: 18, + }, + "212": { + SpecialPoint: 180, + subWeaponId: 8, + specialWeaponId: 12, + }, + "220": { + SpecialPoint: 210, + subWeaponId: 1, + specialWeaponId: 7, + }, + "221": { + SpecialPoint: 210, + subWeaponId: 0, + specialWeaponId: 17, + }, + "230": { + SpecialPoint: 180, + subWeaponId: 0, + specialWeaponId: 1, + }, + "231": { + SpecialPoint: 170, + subWeaponId: 6, + specialWeaponId: 16, + }, + "240": { + SpecialPoint: 190, + subWeaponId: 10, + specialWeaponId: 14, + }, + "241": { + SpecialPoint: 210, + subWeaponId: 13, + specialWeaponId: 10, + }, + "250": { + SpecialPoint: 180, + subWeaponId: 11, + specialWeaponId: 8, + }, + "251": { + SpecialPoint: 190, + subWeaponId: 12, + specialWeaponId: 9, + }, + "252": { + SpecialPoint: 200, + subWeaponId: 1, + specialWeaponId: 15, + }, + "260": { + SpecialPoint: 180, + subWeaponId: 3, + specialWeaponId: 13, + }, + "261": { + SpecialPoint: 200, + subWeaponId: 2, + specialWeaponId: 6, + }, + "300": { + SpecialPoint: 190, + subWeaponId: 6, + specialWeaponId: 12, + }, + "301": { + SpecialPoint: 200, + subWeaponId: 2, + specialWeaponId: 11, + }, + "302": { + SpecialPoint: 200, + subWeaponId: 0, + specialWeaponId: 10, + }, + "310": { + SpecialPoint: 190, + subWeaponId: 9, + specialWeaponId: 15, + }, + "311": { + SpecialPoint: 200, + subWeaponId: 4, + specialWeaponId: 2, + }, + "312": { + SpecialPoint: 200, + subWeaponId: 1, + specialWeaponId: 14, + }, + "400": { + SpecialPoint: 220, + subWeaponId: 4, + specialWeaponId: 1, + }, + "401": { + SpecialPoint: 190, + subWeaponId: 7, + specialWeaponId: 19, + }, + "1000": { + SpecialPoint: 160, + subWeaponId: 7, + specialWeaponId: 3, + }, + "1001": { + SpecialPoint: 190, + subWeaponId: 2, + specialWeaponId: 1, + }, + "1002": { + SpecialPoint: 170, + subWeaponId: 5, + specialWeaponId: 16, + }, + "1010": { + SpecialPoint: 180, + subWeaponId: 6, + specialWeaponId: 2, + }, + "1011": { + SpecialPoint: 170, + subWeaponId: 8, + specialWeaponId: 17, + }, + "1015": { + SpecialPoint: 180, + subWeaponId: 6, + specialWeaponId: 2, + }, + "1020": { + SpecialPoint: 190, + subWeaponId: 3, + specialWeaponId: 15, + }, + "1021": { + SpecialPoint: 180, + subWeaponId: 0, + specialWeaponId: 16, + }, + "1022": { + SpecialPoint: 180, + subWeaponId: 9, + specialWeaponId: 9, + }, + "1030": { + SpecialPoint: 210, + subWeaponId: 10, + specialWeaponId: 4, + }, + "1031": { + SpecialPoint: 200, + subWeaponId: 1, + specialWeaponId: 19, + }, + "1040": { + SpecialPoint: 180, + subWeaponId: 4, + specialWeaponId: 8, + }, + "1041": { + SpecialPoint: 180, + subWeaponId: 12, + specialWeaponId: 5, + }, + "1042": { + SpecialPoint: 180, + subWeaponId: 13, + specialWeaponId: 18, + }, + "1100": { + SpecialPoint: 180, + subWeaponId: 0, + specialWeaponId: 9, + }, + "1101": { + SpecialPoint: 180, + subWeaponId: 10, + specialWeaponId: 11, + }, + "1110": { + SpecialPoint: 190, + subWeaponId: 1, + specialWeaponId: 3, + }, + "1111": { + SpecialPoint: 180, + subWeaponId: 8, + specialWeaponId: 5, + }, + "1112": { + SpecialPoint: 190, + subWeaponId: 7, + specialWeaponId: 17, + }, + "1115": { + SpecialPoint: 190, + subWeaponId: 1, + specialWeaponId: 3, + }, + "1120": { + SpecialPoint: 190, + subWeaponId: 6, + specialWeaponId: 7, + }, + "1121": { + SpecialPoint: 190, + subWeaponId: 9, + specialWeaponId: 4, + }, + "1122": { + SpecialPoint: 190, + subWeaponId: 4, + specialWeaponId: 1, + }, + "2000": { + SpecialPoint: 190, + subWeaponId: 9, + specialWeaponId: 2, + }, + "2001": { + SpecialPoint: 200, + subWeaponId: 7, + specialWeaponId: 3, + }, + "2010": { + SpecialPoint: 190, + subWeaponId: 0, + specialWeaponId: 8, + }, + "2011": { + SpecialPoint: 210, + subWeaponId: 4, + specialWeaponId: 14, + }, + "2012": { + SpecialPoint: 200, + subWeaponId: 3, + specialWeaponId: 12, + }, + "2015": { + SpecialPoint: 190, + subWeaponId: 0, + specialWeaponId: 8, + }, + "2020": { + SpecialPoint: 190, + subWeaponId: 0, + specialWeaponId: 8, + }, + "2021": { + SpecialPoint: 210, + subWeaponId: 4, + specialWeaponId: 14, + }, + "2022": { + SpecialPoint: 200, + subWeaponId: 3, + specialWeaponId: 12, + }, + "2030": { + SpecialPoint: 210, + subWeaponId: 10, + specialWeaponId: 7, + }, + "2031": { + SpecialPoint: 210, + subWeaponId: 8, + specialWeaponId: 17, + }, + "2040": { + SpecialPoint: 210, + subWeaponId: 10, + specialWeaponId: 7, + }, + "2041": { + SpecialPoint: 210, + subWeaponId: 8, + specialWeaponId: 17, + }, + "2050": { + SpecialPoint: 190, + subWeaponId: 7, + specialWeaponId: 9, + }, + "2051": { + SpecialPoint: 190, + subWeaponId: 5, + specialWeaponId: 16, + }, + "2060": { + SpecialPoint: 200, + subWeaponId: 13, + specialWeaponId: 4, + }, + "2061": { + SpecialPoint: 200, + subWeaponId: 5, + specialWeaponId: 11, + }, + "2070": { + SpecialPoint: 220, + subWeaponId: 3, + specialWeaponId: 15, + }, + "2071": { + SpecialPoint: 210, + subWeaponId: 4, + specialWeaponId: 5, + }, + "3000": { + SpecialPoint: 210, + subWeaponId: 0, + specialWeaponId: 14, + }, + "3001": { + SpecialPoint: 180, + subWeaponId: 12, + specialWeaponId: 3, + }, + "3005": { + SpecialPoint: 210, + subWeaponId: 0, + specialWeaponId: 14, + }, + "3010": { + SpecialPoint: 180, + subWeaponId: 11, + specialWeaponId: 10, + }, + "3011": { + SpecialPoint: 210, + subWeaponId: 5, + specialWeaponId: 15, + }, + "3012": { + SpecialPoint: 180, + subWeaponId: 0, + specialWeaponId: 19, + }, + "3020": { + SpecialPoint: 220, + subWeaponId: 5, + specialWeaponId: 6, + }, + "3021": { + SpecialPoint: 190, + subWeaponId: 9, + specialWeaponId: 1, + }, + "3030": { + SpecialPoint: 190, + subWeaponId: 3, + specialWeaponId: 5, + }, + "3031": { + SpecialPoint: 190, + subWeaponId: 12, + specialWeaponId: 17, + }, + "3040": { + SpecialPoint: 200, + subWeaponId: 9, + specialWeaponId: 5, + }, + "3041": { + SpecialPoint: 190, + subWeaponId: 4, + specialWeaponId: 18, + }, + "3050": { + SpecialPoint: 190, + subWeaponId: 1, + specialWeaponId: 13, + }, + "3051": { + SpecialPoint: 190, + subWeaponId: 8, + specialWeaponId: 7, + }, + "3052": { + SpecialPoint: 200, + subWeaponId: 6, + specialWeaponId: 12, + }, + "4000": { + SpecialPoint: 190, + subWeaponId: 2, + specialWeaponId: 11, + }, + "4001": { + SpecialPoint: 200, + subWeaponId: 11, + specialWeaponId: 2, + }, + "4002": { + SpecialPoint: 200, + subWeaponId: 8, + specialWeaponId: 1, + }, + "4010": { + SpecialPoint: 200, + subWeaponId: 3, + specialWeaponId: 7, + }, + "4011": { + SpecialPoint: 200, + subWeaponId: 9, + specialWeaponId: 17, + }, + "4015": { + SpecialPoint: 200, + subWeaponId: 3, + specialWeaponId: 7, + }, + "4020": { + SpecialPoint: 190, + subWeaponId: 7, + specialWeaponId: 6, + }, + "4021": { + SpecialPoint: 200, + subWeaponId: 10, + specialWeaponId: 19, + }, + "4022": { + SpecialPoint: 200, + subWeaponId: 3, + specialWeaponId: 2, + }, + "4030": { + SpecialPoint: 210, + subWeaponId: 5, + specialWeaponId: 10, + }, + "4031": { + SpecialPoint: 200, + subWeaponId: 10, + specialWeaponId: 8, + }, + "4040": { + SpecialPoint: 190, + subWeaponId: 9, + specialWeaponId: 5, + }, + "4041": { + SpecialPoint: 200, + subWeaponId: 1, + specialWeaponId: 18, + }, + "4050": { + SpecialPoint: 200, + subWeaponId: 6, + specialWeaponId: 15, + }, + "4051": { + SpecialPoint: 210, + subWeaponId: 0, + specialWeaponId: 12, + }, + "5000": { + SpecialPoint: 170, + subWeaponId: 8, + specialWeaponId: 15, + }, + "5001": { + SpecialPoint: 190, + subWeaponId: 13, + specialWeaponId: 13, + }, + "5002": { + SpecialPoint: 190, + subWeaponId: 0, + specialWeaponId: 9, + }, + "5010": { + SpecialPoint: 190, + subWeaponId: 1, + specialWeaponId: 12, + }, + "5011": { + SpecialPoint: 190, + subWeaponId: 6, + specialWeaponId: 18, + }, + "5012": { + SpecialPoint: 190, + subWeaponId: 5, + specialWeaponId: 2, + }, + "5015": { + SpecialPoint: 190, + subWeaponId: 1, + specialWeaponId: 12, + }, + "5020": { + SpecialPoint: 180, + subWeaponId: 4, + specialWeaponId: 6, + }, + "5021": { + SpecialPoint: 190, + subWeaponId: 9, + specialWeaponId: 1, + }, + "5030": { + SpecialPoint: 200, + subWeaponId: 0, + specialWeaponId: 7, + }, + "5031": { + SpecialPoint: 200, + subWeaponId: 8, + specialWeaponId: 16, + }, + "5032": { + SpecialPoint: 190, + subWeaponId: 9, + specialWeaponId: 19, + }, + "5040": { + SpecialPoint: 200, + subWeaponId: 7, + specialWeaponId: 13, + }, + "5041": { + SpecialPoint: 190, + subWeaponId: 3, + specialWeaponId: 3, + }, + "5050": { + SpecialPoint: 190, + subWeaponId: 10, + specialWeaponId: 9, + }, + "5051": { + SpecialPoint: 200, + subWeaponId: 2, + specialWeaponId: 14, + }, + "6000": { + SpecialPoint: 210, + subWeaponId: 3, + specialWeaponId: 14, + }, + "6001": { + SpecialPoint: 210, + subWeaponId: 7, + specialWeaponId: 10, + }, + "6005": { + SpecialPoint: 210, + subWeaponId: 3, + specialWeaponId: 14, + }, + "6010": { + SpecialPoint: 190, + subWeaponId: 8, + specialWeaponId: 8, + }, + "6011": { + SpecialPoint: 200, + subWeaponId: 10, + specialWeaponId: 1, + }, + "6012": { + SpecialPoint: 180, + subWeaponId: 11, + specialWeaponId: 16, + }, + "6020": { + SpecialPoint: 180, + subWeaponId: 10, + specialWeaponId: 13, + }, + "6021": { + SpecialPoint: 180, + subWeaponId: 13, + specialWeaponId: 19, + }, + "6022": { + SpecialPoint: 180, + subWeaponId: 6, + specialWeaponId: 9, + }, + "6030": { + SpecialPoint: 190, + subWeaponId: 12, + specialWeaponId: 2, + }, + "6031": { + SpecialPoint: 190, + subWeaponId: 11, + specialWeaponId: 18, + }, + "7010": { + SpecialPoint: 190, + subWeaponId: 11, + specialWeaponId: 9, + }, + "7011": { + SpecialPoint: 190, + subWeaponId: 3, + specialWeaponId: 16, + }, + "7012": { + SpecialPoint: 200, + subWeaponId: 12, + specialWeaponId: 10, + }, + "7015": { + SpecialPoint: 190, + subWeaponId: 11, + specialWeaponId: 9, + }, + "7020": { + SpecialPoint: 210, + subWeaponId: 6, + specialWeaponId: 4, + }, + "7021": { + SpecialPoint: 200, + subWeaponId: 4, + specialWeaponId: 13, + }, + "7022": { + SpecialPoint: 210, + subWeaponId: 13, + specialWeaponId: 6, + }, + "7030": { + SpecialPoint: 200, + subWeaponId: 7, + specialWeaponId: 11, + }, + "7031": { + SpecialPoint: 200, + subWeaponId: 9, + specialWeaponId: 7, + }, + "8000": { + SpecialPoint: 210, + subWeaponId: 2, + specialWeaponId: 3, + }, + "8001": { + SpecialPoint: 210, + subWeaponId: 11, + specialWeaponId: 12, + }, + "8002": { + SpecialPoint: 190, + subWeaponId: 7, + specialWeaponId: 6, + }, + "8005": { + SpecialPoint: 210, + subWeaponId: 2, + specialWeaponId: 3, + }, + "8010": { + SpecialPoint: 190, + subWeaponId: 13, + specialWeaponId: 11, + }, + "8011": { + SpecialPoint: 190, + subWeaponId: 8, + specialWeaponId: 4, + }, + "8012": { + SpecialPoint: 190, + subWeaponId: 6, + specialWeaponId: 1, + }, + "8020": { + SpecialPoint: 210, + subWeaponId: 1, + specialWeaponId: 2, + }, "8021": { SpecialPoint: 200, subWeaponId: 4, specialWeaponId: 10, - DamageParam_SplatanaVerticalDirect: 1600, - DamageParam_SplatanaVertical: 800, - DamageParam_SplatanaHorizontalDirect: 700, - DamageParam_SplatanaHorizontal: 400, - InkConsume_SwingParam: 0.065, - InkConsumeFullCharge_ChargeParam: 0.13, }, }, subWeapons: { @@ -3285,4 +2366,4 @@ export const weaponParams = { DirectDamage: 400, }, }, -}; +} as const; diff --git a/app/features/object-damage-calculator/core/objectHitPoints.ts b/app/features/object-damage-calculator/core/objectHitPoints.ts index c6cceeb65..d533d5e02 100644 --- a/app/features/object-damage-calculator/core/objectHitPoints.ts +++ b/app/features/object-damage-calculator/core/objectHitPoints.ts @@ -8,8 +8,11 @@ import { specialFieldHp, subStats, } from "~/features/build-analyzer/core/stats"; -import { hpDivided } from "~/features/build-analyzer/core/utils"; -import { weaponParams } from "~/features/build-analyzer/core/weapon-params"; +import { + hpDivided, + mainWeaponParams, + weaponParams, +} from "~/features/build-analyzer/core/utils"; import { BIG_BUBBLER_ID, CRAB_TANK_ID, @@ -30,19 +33,21 @@ const SUPER_CHUMP_HP = 60; const TRIPLE_SPLASHDOWN_HP = 100; export const objectHitPoints = (abilityPoints: AbilityPoints): HitPoints => { + const params = weaponParams(); + const Wsb_Shield = subStats({ abilityPoints, - subWeaponParams: weaponParams.subWeapons[SPLASH_WALL_ID] as SubWeaponParams, + subWeaponParams: params.subWeapons[SPLASH_WALL_ID] as SubWeaponParams, }).subHp?.value; const GreatBarrier_Barrier = specialFieldHp({ abilityPoints, - specialWeaponParams: weaponParams.specialWeapons[ + specialWeaponParams: params.specialWeapons[ BIG_BUBBLER_ID ] as SpecialWeaponParams, })?.value; const GreatBarrier_WeakPoint = specialDeviceHp({ abilityPoints, - specialWeaponParams: weaponParams.specialWeapons[ + specialWeaponParams: params.specialWeapons[ BIG_BUBBLER_ID ] as SpecialWeaponParams, })?.value; @@ -53,25 +58,19 @@ export const objectHitPoints = (abilityPoints: AbilityPoints): HitPoints => { return { BulletUmbrellaCanopyNormal: SPLAT_BRELLA_SHIELD_HP, - BulletUmbrellaCanopyWide: hpDivided( - weaponParams.mainWeapons[6010].CanopyHP, - ), - BulletUmbrellaCanopyCompact: hpDivided( - weaponParams.mainWeapons[6020].CanopyHP, - ), - BulletShelterCanopyFocus: hpDivided( - weaponParams.mainWeapons[6030].CanopyHP, - ), + BulletUmbrellaCanopyWide: hpDivided(mainWeaponParams(6010).CanopyHP!), + BulletUmbrellaCanopyCompact: hpDivided(mainWeaponParams(6020).CanopyHP!), + BulletShelterCanopyFocus: hpDivided(mainWeaponParams(6030).CanopyHP!), BulletUmbrellaCanopyNormal_Launched: SPLAT_BRELLA_SHIELD_HP * 2, BulletUmbrellaCanopyWide_Launched: hpDivided( - weaponParams.mainWeapons[6010].CanopyHP * (10 / 6), + mainWeaponParams(6010).CanopyHP! * (10 / 6), ), BulletShelterCanopyFocus_Launched: hpDivided( - weaponParams.mainWeapons[6030].CanopyHP * (10 / 6), + mainWeaponParams(6030).CanopyHP! * (10 / 6), ), Wsb_Shield, Bomb_TorpedoBullet: TORPEDO_HP, - Chariot: hpDivided(weaponParams.specialWeapons[CRAB_TANK_ID].ArmorHP), + Chariot: hpDivided(params.specialWeapons[CRAB_TANK_ID].ArmorHP), Gachihoko_Barrier: RAINMAKER_HP, GreatBarrier_Barrier, GreatBarrier_WeakPoint, diff --git a/scripts/create-analyzer-json.ts b/scripts/create-analyzer-json.ts index d292ba560..78d96701c 100644 --- a/scripts/create-analyzer-json.ts +++ b/scripts/create-analyzer-json.ts @@ -12,15 +12,18 @@ import path from "node:path"; import { fileURLToPath } from "node:url"; import { z } from "zod"; import type { + BaseWeaponStats, MainWeaponParams, ParamsJson, SubWeaponParams, + WeaponKit, } from "~/features/build-analyzer/analyzer-types"; import { type SpecialWeaponId, SQUID_BEAKON_ID, type SubWeaponId, subWeaponIds, + weaponIdToBaseWeaponId, } from "~/modules/in-game-lists/weapon-ids"; import invariant from "~/utils/invariant"; import { logger } from "~/utils/logger"; @@ -44,13 +47,20 @@ type SubWeapon = (typeof subWeapons)[number]; type SpecialWeapon = (typeof specialWeapons)[number]; type TranslationArray = Array<{ language: string; key: string; value: string }>; +const KIT_PROPERTIES = [ + "SpecialPoint", + "subWeaponId", + "specialWeaponId", +] as const; + async function main() { - const mainWeaponsResult: Record = {}; + const allMainWeaponParams: Record = {}; const subWeaponsResult: Record = {}; const specialWeaponsResult: any = {}; const translations: TranslationArray = []; const langDicts = await loadLangDicts(); + const hasLangDicts = langDicts.length > 0; for (const weapon of weapons) { if (mainWeaponShouldBeSkipped(weapon)) continue; @@ -60,30 +70,37 @@ async function main() { parametersToMainWeaponResult(weapon, rawParams), ); - translationsToArray({ - arr: translations, - internalName: weapon.__RowId, - weaponId: weapon.Id, - type: "Main", - translations: langDicts, - }); + if (hasLangDicts) { + translationsToArray({ + arr: translations, + internalName: weapon.__RowId, + weaponId: weapon.Id, + type: "Main", + translations: langDicts, + }); + } - mainWeaponsResult[weapon.Id] = params; + allMainWeaponParams[weapon.Id] = params; } + const { baseWeaponStats, weaponKits } = + splitIntoBaseStatsAndKits(allMainWeaponParams); + for (const subWeapon of subWeapons) { if (subWeaponShouldBeSkipped(subWeapon)) continue; const rawParams = loadWeaponParamsObject(subWeapon); const params = parametersToSubWeaponResult(subWeapon, rawParams); - translationsToArray({ - arr: translations, - internalName: subWeapon.__RowId, - weaponId: subWeapon.Id, - type: "Sub", - translations: langDicts, - }); + if (hasLangDicts) { + translationsToArray({ + arr: translations, + internalName: subWeapon.__RowId, + weaponId: subWeapon.Id, + type: "Sub", + translations: langDicts, + }); + } subWeaponsResult[subWeapon.Id] = params; } @@ -94,30 +111,107 @@ async function main() { const rawParams = loadWeaponParamsObject(specialWeapon); const params = parametersToSpecialWeaponResult(rawParams); - translationsToArray({ - arr: translations, - internalName: specialWeapon.__RowId, - weaponId: specialWeapon.Id, - type: "Special", - translations: langDicts, - }); + if (hasLangDicts) { + translationsToArray({ + arr: translations, + internalName: specialWeapon.__RowId, + weaponId: specialWeapon.Id, + type: "Special", + translations: langDicts, + }); + } specialWeaponsResult[specialWeapon.Id] = params; } const toFile: ParamsJson = { - mainWeapons: mainWeaponsResult, + baseWeaponStats, + weaponKits, subWeapons: subWeaponsResult, specialWeapons: specialWeaponsResult, }; + const weaponParamsTs = `export const weaponParams = ${JSON.stringify(toFile, null, "\t")} as const;\n`; + fs.writeFileSync( - path.join(__dirname, "output", "params.json"), - `${JSON.stringify(toFile, null, 2)}\n`, + path.join( + __dirname, + "..", + "app", + "features", + "build-analyzer", + "core", + "weapon-params.ts", + ), + weaponParamsTs, ); - writeTranslationsJsons(translations); - logWeaponIds(mainWeaponsResult); + if (hasLangDicts) { + writeTranslationsJsons(translations); + } + logWeaponIds(weaponKits); +} + +function splitIntoBaseStatsAndKits( + allParams: Record, +): { + baseWeaponStats: Record; + weaponKits: Record; +} { + const weaponGroups: Record< + number, + Array<{ id: number; params: MainWeaponParams }> + > = {}; + + for (const [idStr, params] of Object.entries(allParams)) { + const id = Number(idStr); + const baseId = weaponIdToBaseWeaponId(id); + if (!weaponGroups[baseId]) weaponGroups[baseId] = []; + weaponGroups[baseId].push({ id, params }); + } + + const baseWeaponStats: Record = {}; + const weaponKits: Record = {}; + + for (const [baseIdStr, variants] of Object.entries(weaponGroups)) { + const baseId = Number(baseIdStr); + const firstVariant = variants[0].params; + + const nonKitProps = Object.keys(firstVariant).filter( + (k) => !KIT_PROPERTIES.includes(k as (typeof KIT_PROPERTIES)[number]), + ) as Array; + + const sharedProps: Partial = {}; + for (const prop of nonKitProps) { + const firstVal = JSON.stringify(firstVariant[prop]); + const allSame = variants.every( + (v) => JSON.stringify(v.params[prop]) === firstVal, + ); + if (allSame && firstVariant[prop] !== undefined) { + (sharedProps as any)[prop] = firstVariant[prop]; + } + } + + baseWeaponStats[baseId] = sharedProps as BaseWeaponStats; + + for (const variant of variants) { + const kit: WeaponKit = { + SpecialPoint: variant.params.SpecialPoint, + subWeaponId: variant.params.subWeaponId, + specialWeaponId: variant.params.specialWeaponId, + }; + + for (const prop of nonKitProps) { + if (!(prop in sharedProps) && variant.params[prop] !== undefined) { + (kit as any)[prop] = variant.params[prop]; + } + } + + weaponKits[variant.id] = kit; + } + } + + return { baseWeaponStats, weaponKits }; } function parametersToMainWeaponResult( @@ -167,7 +261,8 @@ function parametersToMainWeaponResult( const BlastParam_DistanceDamage = () => { // REEF-LUX has distance damage listed in params // but actually doesn't deal it in game - if (weapon.Id === 7020) return undefined; + if (weapon.Id === 7020 || weapon.Id === 7021 || weapon.Id === 7022) + return undefined; return ( params.BlastParam?.DistanceDamage ?? @@ -199,7 +294,8 @@ function parametersToMainWeaponResult( }; const slosherDirectDamageSecondary = () => { - const isDreadWringer = weapon.Id === 3050 || weapon.Id === 3051; + const isDreadWringer = + weapon.Id === 3050 || weapon.Id === 3051 || weapon.Id === 3052; if (!isDreadWringer) return; const DamageParam_Secondary_ValueDirectMax = @@ -217,7 +313,7 @@ function parametersToMainWeaponResult( params.WeaponKeepChargeParam?.KeepChargeFullFrame ?? params.spl__WeaponStringerParam?.ChargeKeepParam?.KeepChargeFullFrame; - const isSloshingMachine = weapon.Id === 3020; + const isSloshingMachine = weapon.Id === 3020 || weapon.Id === 3021; const DamageParam_SplatanaHorizontalDirect = params.BulletSaberHorizontalParam?.DamageParam?.HitDamage + @@ -330,7 +426,7 @@ function parametersToMainWeaponResult( ), CanopyHP: params.spl__BulletShelterCanopyParam?.CanopyHP ?? - (weapon.Id === 6000 || weaponId === 6001 || weaponId === 6005 + (weapon.Id === 6000 || weapon.Id === 6001 || weapon.Id === 6005 ? 5000 : undefined), ChargeFrameFullCharge: @@ -890,7 +986,7 @@ function writeTranslationsJsons(arr: TranslationArray) { } } -function logWeaponIds(weapons: Record) { +function logWeaponIds(weapons: Record) { logger.info(JSON.stringify(Object.keys(weapons).map(Number))); }