From a8cdc96382defda2513db1e9851371e2239d4bd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Wed, 31 Dec 2025 14:41:13 -0600 Subject: [PATCH] fix: some filtering --- .../checkConsumableProvisionInclusivity.ts | 24 +++++++++---------- .../website/src/core/blitzkit/filterTank.ts | 24 +++++++++++++++++++ 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/packages/core/src/blitzkit/checkConsumableProvisionInclusivity.ts b/packages/core/src/blitzkit/checkConsumableProvisionInclusivity.ts index 471b76482..b1640498f 100644 --- a/packages/core/src/blitzkit/checkConsumableProvisionInclusivity.ts +++ b/packages/core/src/blitzkit/checkConsumableProvisionInclusivity.ts @@ -4,54 +4,54 @@ import { GunDefinition, Provision, TankDefinition, -} from '../protos'; +} from "../protos"; export function checkConsumableProvisionInclusivity( consumableProvision: Consumable | Provision, tank: TankDefinition, - gun: GunDefinition, + gun: GunDefinition ) { const included = !consumableProvision.game_mode_exclusive && consumableProvision.include?.every((rule) => { switch (rule.filter_type!.$case) { - case 'tiers': + case "tiers": return ( rule.filter_type!.value.min <= tank.tier && tank.tier <= rule.filter_type!.value.max ); - case 'ids': + case "ids": return rule.filter_type!.value.ids.includes(tank.id); - case 'nations': + case "nations": return rule.filter_type!.value.nations.includes(tank.nation); - case 'categories': - throw new SyntaxError('Category filtering found in include rule'); + case "categories": + throw new SyntaxError("Category filtering found in include rule"); } }); const excluded = consumableProvision.game_mode_exclusive || consumableProvision.exclude?.some((rule) => { switch (rule.filter_type!.$case) { - case 'tiers': + case "tiers": return ( rule.filter_type!.value.min <= tank.tier && tank.tier <= rule.filter_type!.value.max ); - case 'ids': + case "ids": return rule.filter_type!.value.ids.includes(tank.id); - case 'nations': + case "nations": return rule.filter_type!.value.nations.includes(tank.nation); - case 'categories': + case "categories": return rule.filter_type!.value.categories.some((category) => { switch (category) { case ConsumableTankCategoryFilterCategory.CLIP: - return gun.gun_type!.$case !== 'regular'; + return gun.gun_type!.$case !== "regular"; } }); } diff --git a/packages/website/src/core/blitzkit/filterTank.ts b/packages/website/src/core/blitzkit/filterTank.ts index 7cbc5e06d..8f33e64f1 100644 --- a/packages/website/src/core/blitzkit/filterTank.ts +++ b/packages/website/src/core/blitzkit/filterTank.ts @@ -70,6 +70,30 @@ export async function filterTank( ) ) ) + )) && + (filters.abilities.length === 0 || + filters.abilities.every((ability) => + tank.turrets.some((turret) => + turret.guns.some((gun) => + checkConsumableProvisionInclusivity( + consumableDefinitions.consumables[ability], + tank, + gun + ) + ) + ) + )) && + (filters.powers.length === 0 || + filters.powers.every((power) => + tank.turrets.some((turret) => + turret.guns.some((gun) => + checkConsumableProvisionInclusivity( + provisionDefinitions.provisions[power], + tank, + gun + ) + ) + ) )) ); }