mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-04-26 01:09:02 -05:00
129 lines
2.8 KiB
TypeScript
129 lines
2.8 KiB
TypeScript
import type { MainWeaponId } from "~/modules/in-game-lists/types";
|
|
import type { DamageType } from "./analyzer-types";
|
|
|
|
export const MAX_LDE_INTENSITY = 21;
|
|
|
|
export const DAMAGE_TYPE = [
|
|
"TURRET_MAX",
|
|
"TURRET_MIN",
|
|
"NORMAL_MAX_FULL_CHARGE", // Hydra Splatling goes from 32 to 40 dmg when fully charged
|
|
"NORMAL_MAX",
|
|
"NORMAL_MIN",
|
|
"DIRECT",
|
|
"DIRECT_MIN",
|
|
"DIRECT_MAX",
|
|
"DIRECT_SECONDARY_MIN",
|
|
"DIRECT_SECONDARY_MAX",
|
|
"FULL_CHARGE",
|
|
"MAX_CHARGE",
|
|
"TAP_SHOT",
|
|
"DISTANCE",
|
|
"SPLASH",
|
|
"WAVE",
|
|
"BOMB_DIRECT",
|
|
"BOMB_NORMAL",
|
|
"SPLATANA_VERTICAL",
|
|
"SPLATANA_VERTICAL_DIRECT",
|
|
"SPLATANA_HORIZONTAL",
|
|
"SPLATANA_HORIZONTAL_DIRECT",
|
|
"SPLASH_MIN",
|
|
"SPLASH_MAX",
|
|
"SPLASH_VERTICAL_MIN",
|
|
"SPLASH_VERTICAL_MAX",
|
|
"SPLASH_HORIZONTAL_MIN",
|
|
"SPLASH_HORIZONTAL_MAX",
|
|
"ROLL_OVER",
|
|
"SPECIAL_MAX_CHARGE",
|
|
"SPECIAL_MIN_CHARGE",
|
|
"SPECIAL_THROW_DIRECT",
|
|
"SPECIAL_THROW",
|
|
"SPECIAL_SWING",
|
|
"SPECIAL_CANNON",
|
|
"SPECIAL_BULLET_MAX",
|
|
"SPECIAL_BULLET_MIN",
|
|
"SPECIAL_BUMP",
|
|
"SPECIAL_JUMP",
|
|
"SPECIAL_TICK",
|
|
"SECONDARY_MODE_MAX",
|
|
"SECONDARY_MODE_MIN",
|
|
] as const;
|
|
|
|
export const damageTypeToWeaponType: Record<
|
|
DamageType,
|
|
"MAIN" | "SUB" | "SPECIAL"
|
|
> = {
|
|
NORMAL_MIN: "MAIN",
|
|
NORMAL_MAX: "MAIN",
|
|
TURRET_MAX: "MAIN",
|
|
TURRET_MIN: "MAIN",
|
|
SECONDARY_MODE_MAX: "MAIN",
|
|
SECONDARY_MODE_MIN: "MAIN",
|
|
NORMAL_MAX_FULL_CHARGE: "MAIN",
|
|
DIRECT: "MAIN",
|
|
DIRECT_MIN: "MAIN",
|
|
DIRECT_MAX: "MAIN",
|
|
DIRECT_SECONDARY_MAX: "MAIN",
|
|
DIRECT_SECONDARY_MIN: "MAIN",
|
|
FULL_CHARGE: "MAIN",
|
|
MAX_CHARGE: "MAIN",
|
|
TAP_SHOT: "MAIN",
|
|
DISTANCE: "MAIN",
|
|
SPLASH: "MAIN",
|
|
BOMB_NORMAL: "SUB",
|
|
BOMB_DIRECT: "SUB",
|
|
SPLATANA_VERTICAL: "MAIN",
|
|
SPLATANA_VERTICAL_DIRECT: "MAIN",
|
|
SPLATANA_HORIZONTAL: "MAIN",
|
|
SPLATANA_HORIZONTAL_DIRECT: "MAIN",
|
|
SPLASH_MIN: "MAIN",
|
|
SPLASH_MAX: "MAIN",
|
|
SPLASH_HORIZONTAL_MAX: "MAIN",
|
|
SPLASH_HORIZONTAL_MIN: "MAIN",
|
|
SPLASH_VERTICAL_MAX: "MAIN",
|
|
SPLASH_VERTICAL_MIN: "MAIN",
|
|
ROLL_OVER: "MAIN",
|
|
WAVE: "SPECIAL",
|
|
SPECIAL_MAX_CHARGE: "SPECIAL",
|
|
SPECIAL_MIN_CHARGE: "SPECIAL",
|
|
SPECIAL_SWING: "SPECIAL",
|
|
SPECIAL_THROW: "SPECIAL",
|
|
SPECIAL_THROW_DIRECT: "SPECIAL",
|
|
SPECIAL_BULLET_MIN: "SPECIAL",
|
|
SPECIAL_BULLET_MAX: "SPECIAL",
|
|
SPECIAL_CANNON: "SPECIAL",
|
|
SPECIAL_BUMP: "SPECIAL",
|
|
SPECIAL_JUMP: "SPECIAL",
|
|
SPECIAL_TICK: "SPECIAL",
|
|
};
|
|
|
|
const rawMultiShot: Partial<Record<MainWeaponId, number>> = {
|
|
// L-3
|
|
300: 3,
|
|
// H-3
|
|
310: 3,
|
|
// Tri-Stringer,
|
|
7010: 3,
|
|
// REEF-LUX,
|
|
7020: 3,
|
|
// Wellstring V,
|
|
7030: 5,
|
|
// Bloblobber
|
|
3030: 4,
|
|
// Dread Winger
|
|
3050: 2,
|
|
};
|
|
|
|
// automatically handle alt kits
|
|
export const multiShot = Object.fromEntries(
|
|
Object.entries(rawMultiShot).flatMap(([key, value]) => [
|
|
[Number(key), value],
|
|
[Number(key) + 1, value],
|
|
]),
|
|
) as Record<MainWeaponId, number>;
|
|
|
|
export const RAINMAKER_SPEED_PENALTY_MODIFIER = 0.8;
|
|
|
|
export const UNKNOWN_SHORT = "U";
|
|
|
|
export const MAX_AP = 57;
|