From ca229863ab789b657dea412c6b69aeb322834eb4 Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Mon, 6 Apr 2026 13:56:14 +0300 Subject: [PATCH] Fix Tri-Stringer/Wellstring range in comp analyzer --- app/features/build-analyzer/core/weapon-params.ts | 3 +++ app/features/comp-analyzer/core/weapon-range.test.ts | 5 +++-- app/features/comp-analyzer/core/weapon-range.ts | 4 ++-- scripts/create-analyzer-json.ts | 1 + 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/features/build-analyzer/core/weapon-params.ts b/app/features/build-analyzer/core/weapon-params.ts index ebef61e6d..5a8b10624 100644 --- a/app/features/build-analyzer/core/weapon-params.ts +++ b/app/features/build-analyzer/core/weapon-params.ts @@ -1005,6 +1005,7 @@ export const weaponParams = { Range_GoStraightStateEndMaxSpeed: 10, Range_GoStraightToBrakeStateFrame: 4, Range_FreeGravity: 0.15, + Range_FreeAirResist: 0.24, Range_BrakeAirResist: 0.1, Range_BrakeGravity: 0.04, Range_BrakeToFreeStateFrame: 1, @@ -1026,6 +1027,7 @@ export const weaponParams = { Range_GoStraightStateEndMaxSpeed: 10, Range_GoStraightToBrakeStateFrame: 4, Range_FreeGravity: 0.15, + Range_FreeAirResist: 0.24, Range_BrakeAirResist: 0.1, Range_BrakeGravity: 0.04, Range_BrakeToFreeStateFrame: 1, @@ -1042,6 +1044,7 @@ export const weaponParams = { Range_GoStraightStateEndMaxSpeed: 10, Range_GoStraightToBrakeStateFrame: 4, Range_FreeGravity: 0.15, + Range_FreeAirResist: 0.24, Range_BrakeAirResist: 0.1, Range_BrakeGravity: 0.04, Range_BrakeToFreeStateFrame: 1, diff --git a/app/features/comp-analyzer/core/weapon-range.test.ts b/app/features/comp-analyzer/core/weapon-range.test.ts index 214a147c8..4a0f247e2 100644 --- a/app/features/comp-analyzer/core/weapon-range.test.ts +++ b/app/features/comp-analyzer/core/weapon-range.test.ts @@ -6,8 +6,9 @@ import { getWeaponsWithRange } from "./weapon-range"; const RANGE_COMPARISONS: [MainWeaponId, MainWeaponId][] = [ [220, 210], // Range Blaster > Blaster [70, 40], // Splattershot Pro > Splattershot - // [2020, 7030], // Splatterscope > Wellstring V TODO: a failing case - // [2070, 7010], // Snipewriter 5H > Tri-Stringer TODO: a failing case + [7010, 7030], // Tri-Stringer > Wellstring V + [2020, 7030], // Splatterscope > Wellstring V + [2070, 7010], // Snipewriter 5H > Tri-Stringer ]; describe("weapon range comparisons", () => { diff --git a/app/features/comp-analyzer/core/weapon-range.ts b/app/features/comp-analyzer/core/weapon-range.ts index cb00b6325..d94fa91f0 100644 --- a/app/features/comp-analyzer/core/weapon-range.ts +++ b/app/features/comp-analyzer/core/weapon-range.ts @@ -94,7 +94,7 @@ function simulateTrajectoryPoints(params: TrajectoryParams): TrajectoryPoint[] { for (let i = 0; i < brakeToFreeFrame && frame < maxFrames; i++) { vz *= 1 - brakeAirResist; - vy -= brakeGravity; + vy = (1 - brakeAirResist) * vy - brakeGravity; z += vz; y += vy; points.push({ z, y }); @@ -117,7 +117,7 @@ function simulateTrajectoryPoints(params: TrajectoryParams): TrajectoryPoint[] { while (frame < maxFrames) { vz *= 1 - freeAirResist; - vy -= freeGravity; + vy = (1 - freeAirResist) * vy - freeGravity; z += vz; y += vy; diff --git a/scripts/create-analyzer-json.ts b/scripts/create-analyzer-json.ts index 3399b520c..03b030877 100644 --- a/scripts/create-analyzer-json.ts +++ b/scripts/create-analyzer-json.ts @@ -349,6 +349,7 @@ function extractRangeParams(weapon: MainWeapon, params: any) { Range_GoStraightStateEndMaxSpeed: moveParam?.GoStraightStateEndMaxSpeed, Range_GoStraightToBrakeStateFrame: moveParam?.GoStraightToBrakeStateFrame, Range_FreeGravity: moveParam?.FreeGravity, + Range_FreeAirResist: moveParam?.FreeAirResist, Range_BrakeAirResist: moveParam?.BrakeAirResist, Range_BrakeGravity: moveParam?.BrakeGravity, Range_BrakeToFreeStateFrame: moveParam?.BrakeToFreeStateFrame,