mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-20 10:18:24 -05:00
62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
import type { BuildAbilitiesTupleWithUnknown } from "~/modules/in-game-lists";
|
|
import type { BuildWeapon } from "~/db/types";
|
|
import type { AnalyzedBuild, StatFunctionInput } from "./types";
|
|
import invariant from "tiny-invariant";
|
|
import { buildToAbilityPoints, params } from "./utils";
|
|
|
|
export function buildStats({
|
|
build,
|
|
weaponSplId,
|
|
}: {
|
|
build: BuildAbilitiesTupleWithUnknown;
|
|
weaponSplId: BuildWeapon["weaponSplId"];
|
|
}): AnalyzedBuild {
|
|
const mainWeaponParams = params().mainWeapons[weaponSplId];
|
|
invariant(mainWeaponParams, `Weapon with splId ${weaponSplId} not found`);
|
|
|
|
const subWeaponParams = params().subWeapons[mainWeaponParams.subWeaponId];
|
|
invariant(
|
|
subWeaponParams,
|
|
`Sub weapon with splId ${mainWeaponParams.subWeaponId} not found`
|
|
);
|
|
|
|
const input: StatFunctionInput = {
|
|
mainWeaponParams,
|
|
subWeaponParams,
|
|
abilityPoints: buildToAbilityPoints(build),
|
|
};
|
|
|
|
return {
|
|
weapon: {
|
|
specialWeaponSplId: mainWeaponParams.specialWeaponId,
|
|
subWeaponSplId: mainWeaponParams.subWeaponId,
|
|
},
|
|
stats: {
|
|
shotsPerInkTank: shotsPerInkTank(input),
|
|
inkCost: inkCost(input),
|
|
specialPoint: specialPoint(input),
|
|
subWeaponWhiteInkFrames: subWeaponParams.InkRecoverStop,
|
|
},
|
|
};
|
|
}
|
|
|
|
function shotsPerInkTank(
|
|
args: StatFunctionInput
|
|
): AnalyzedBuild["stats"]["shotsPerInkTank"] {
|
|
return {};
|
|
}
|
|
|
|
function specialPoint(
|
|
args: StatFunctionInput
|
|
): AnalyzedBuild["stats"]["specialPoint"] {
|
|
return {
|
|
baseValue: args.mainWeaponParams.SpecialPoint,
|
|
modifiedBy: "SCU",
|
|
value: args.mainWeaponParams.SpecialPoint, // xxx:
|
|
};
|
|
}
|
|
|
|
function inkCost(args: StatFunctionInput): AnalyzedBuild["stats"]["inkCost"] {
|
|
return {};
|
|
}
|