feat: spall liner

This commit is contained in:
TrèsAbhi committed 2024-04-10 16:54:16 -05:00
1 parent ab26b346e6
commit d6e96e17ad
4 files changed
+38 -1

No files matched your search

+28
View File
@@ -5,11 +5,13 @@ import {
CaretRightIcon,
CaretSortIcon,
ComponentPlaceholderIcon,
InfoCircledIcon,
PlusIcon,
TrashIcon,
} from '@radix-ui/react-icons';
import {
Button,
Callout,
Dialog,
Flex,
Heading,
@@ -76,6 +78,15 @@ export default function Page() {
const awaitedProvisionDefinitions = use(provisionDefinitions);
const deltaMode = useComparePersistent((state) => state.deltaMode);
const crewSkills = useCompareTemporary((state) => state.crewSkills);
const haveReactive = members.some((member) =>
member.consumables.includes(33),
);
const haveDynamicArmor = members.some((member) =>
member.consumables.includes(73),
);
const haveSpallLiner = members.some((member) =>
member.provisions.includes(101),
);
const stats = useMemo(
() =>
members.map((thisMember) =>
@@ -97,6 +108,11 @@ export default function Page() {
member.key !== thisMember.key &&
member.consumables.includes(73),
),
applySpallLiner: members.some(
(member) =>
member.key !== thisMember.key &&
member.provisions.includes(101),
),
},
{
equipmentDefinitions: awaitedEquipmentDefinitions,
@@ -514,6 +530,18 @@ export default function Page() {
return (
<PageWrapper color="crimson" size="100%">
<Flex justify="center" gap="2" align="center" mt="4" direction="column">
{(haveReactive || haveDynamicArmor || haveSpallLiner) && (
<Callout.Root mb="4">
<Callout.Icon>
<InfoCircledIcon />
</Callout.Icon>
<Callout.Text>
Consumables like Reactive Armor and Dynamic Armor System and
provisions like Spall Liner may reduce other tanks' damage.
</Callout.Text>
</Callout.Root>
)}
<Flex gap="2">
<Dialog.Root
open={addTankDialogOpen}
@@ -88,6 +88,7 @@ export function Characteristics() {
stockTurret,
applyReactive: false,
applyDynamicArmor: false,
applySpallLiner: false,
},
{
equipmentDefinitions: awaitedEquipmentDefinitions,
@@ -17,3 +17,5 @@ export interface ProvisionDefinitions {
export const provisionDefinitions = fetchCdonLz4<ProvisionDefinitions>(
asset('definitions/provisions.cdon.lz4'),
);
provisionDefinitions.then(console.log);
+7 -1
View File
@@ -40,6 +40,7 @@ export function tankCharacteristics(
stockGun,
applyReactive,
applyDynamicArmor,
applySpallLiner,
}: {
tank: TankDefinition;
turret: TurretDefinition;
@@ -59,6 +60,7 @@ export function tankCharacteristics(
camouflage: boolean;
applyReactive: boolean;
applyDynamicArmor: boolean;
applySpallLiner: boolean;
},
{
modelDefinitions,
@@ -138,7 +140,11 @@ export function tankCharacteristics(
const intraClipCoefficient = coefficient([hasShellReloadBoost, -0.3]);
const damageCoefficient =
coefficient([hasTungsten, 0.15]) *
coefficient([applyReactive, -0.2], [applyDynamicArmor, -0.1]);
coefficient(
[applyReactive, -0.2],
[applyDynamicArmor, -0.1],
[applySpallLiner && shell.type === 'he', -0.2],
);
const reloadCoefficient =
(coefficient([hasRammer, -0.07]) *
coefficient([true, degressiveStat(crewMemberMastery)])) /