Merge pull request #263 from Hitjack007/peekabo-dpm

This commit is contained in:
TrèsAbhi authored and GitHub committed 2026-10-02 15:24:40 -07:00
commit 7458cf51dc
3 files changed
+50 -1

No files matched your search

+2
View File
@@ -630,6 +630,8 @@
"shellRicochet": "Ricochet",
"dpm": "DPM",
"dpmEffective": "Effective at 60s",
"peekabooDpm": "Peekaboo DPM",
"peekabooDpmInfo": "Damage per minute assuming you only fire after resetting camouflage (or the reload finishes, if it's slower) \u2014 at least 10 seconds between shots.",
"shells": "Shells",
"mostOptimalShellIndex": "Most optimal shell",
"shellReloads": "Reloads",
@@ -1,6 +1,14 @@
import { alias, isExplosive } from "@blitzkit/core";
import { literals } from "@blitzkit/i18n";
import { Flex, Heading, IconButton, Tooltip } from "@radix-ui/themes";
import { InfoCircledIcon } from "@radix-ui/react-icons";
import {
Flex,
Heading,
IconButton,
Popover,
Text,
Tooltip,
} from "@radix-ui/themes";
import { useLocale } from "../../../../../../hooks/useLocale";
import { useTankModelDefinition } from "../../../../../../hooks/useTankModelDefinition";
import { Duel } from "../../../../../../stores/duel";
@@ -77,6 +85,40 @@ export function Firepower({
{strings.common.gun_types[gun.gun_type!.$case]}
</Info>
<InfoWithDelta stats={stats} decimals={0} value="dpm" />
{gun.gun_type!.$case === "regular" && (
<InfoWithDelta
stats={stats}
indent
decimals={0}
noRanking
name={
<Flex align="center" gap="1" display="inline-flex">
{
strings.website.tools.tankopedia.characteristics.values
.peekabooDpm
}
<Popover.Root>
<Popover.Trigger>
<IconButton variant="ghost" size="1">
<InfoCircledIcon />
</IconButton>
</Popover.Trigger>
<Popover.Content style={{ maxWidth: 280 }}>
<Text size="2">
{
strings.website.tools.tankopedia.characteristics.values
.peekabooDpmInfo
}
</Text>
</Popover.Content>
</Popover.Root>
</Flex>
}
value={(tank) => tank.peekabooDpm}
/>
)}
<InfoWithDelta stats={stats} decimals={0} value="damage" />
{gun.gun_type!.$case !== "regular" && (
<InfoWithDelta stats={stats} indent decimals={0} value="clipDamage" />
@@ -418,6 +418,10 @@ export function tankCharacteristics(
: (gun.gun_type!.$case === "regular"
? gun.gun_type!.value.reload
: gun.gun_type!.value.clip_reload) * reloadCoefficient;
const peekabooDpm =
gun.gun_type!.$case === "regular"
? Math.round(damage * (60 / Math.max(shellReload!, 10)))
: undefined;
const caliber = shell.caliber;
const penetration = shell.penetration!.near * penetrationCoefficient;
const clipDamage =
@@ -545,6 +549,7 @@ export function tankCharacteristics(
shellRicochet,
dpm,
dpmEffective,
peekabooDpm,
shells,
mostOptimalShellIndex,
shellReloads,