mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 19:49:50 +02:00
fix overly-aggressive tank exclusive compatibility
This commit is contained in:
1 parent
7a7c73d77b
commit
6fb51e703d
1 file changed
+33
-15
@@ -1,5 +1,9 @@
|
|||||||
import type { CompatibilityComponent } from "@protos/blitz_static_compatibility_component";
|
import type { CompatibilityComponent } from "@protos/blitz_static_compatibility_component";
|
||||||
import type { TankCompatibility_Include } from "@protos/blitz_static_tank_compatibility";
|
import type {
|
||||||
|
TankCompatibility,
|
||||||
|
TankCompatibility_Exclude,
|
||||||
|
TankCompatibility_Include,
|
||||||
|
} from "@protos/blitz_static_tank_compatibility";
|
||||||
import { TankTraits } from "@protos/blitz_static_tank_compatibility";
|
import { TankTraits } from "@protos/blitz_static_tank_compatibility";
|
||||||
import { TankAttributeChange_AttributeName } from "@protos/blitz_static_tank_upgrade_single_stage";
|
import { TankAttributeChange_AttributeName } from "@protos/blitz_static_tank_upgrade_single_stage";
|
||||||
import type { Sets } from "@protos/sets";
|
import type { Sets } from "@protos/sets";
|
||||||
@@ -26,40 +30,54 @@ export function useCompatibility(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
compatibility.tank_compatibility === undefined ||
|
compatibility.tank_compatibility &&
|
||||||
(tankCompatibilityApplies(
|
tankCompatibility(
|
||||||
compatibility.tank_compatibility.include,
|
compatibility.tank_compatibility,
|
||||||
tank,
|
tank,
|
||||||
sets,
|
sets,
|
||||||
characteristics,
|
characteristics,
|
||||||
) &&
|
)
|
||||||
!tankCompatibilityApplies(
|
);
|
||||||
compatibility.tank_compatibility.exclude,
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function tankCompatibility(
|
||||||
|
compatibility: TankCompatibility,
|
||||||
|
tank: Tank,
|
||||||
|
sets: Sets,
|
||||||
|
characteristics: ComputedCharacteristics,
|
||||||
|
) {
|
||||||
|
return (
|
||||||
|
(compatibility.include === undefined ||
|
||||||
|
tankCompatibilityInequality(
|
||||||
|
compatibility.include,
|
||||||
|
tank,
|
||||||
|
sets,
|
||||||
|
characteristics,
|
||||||
|
)) &&
|
||||||
|
(compatibility.exclude === undefined ||
|
||||||
|
!tankCompatibilityInequality(
|
||||||
|
compatibility.exclude,
|
||||||
tank,
|
tank,
|
||||||
sets,
|
sets,
|
||||||
characteristics,
|
characteristics,
|
||||||
))
|
))
|
||||||
);
|
);
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function tankCompatibilityApplies(
|
function tankCompatibilityInequality(
|
||||||
include: TankCompatibility_Include | undefined,
|
include: TankCompatibility_Include | TankCompatibility_Exclude,
|
||||||
tank: Tank,
|
tank: Tank,
|
||||||
sets: Sets,
|
sets: Sets,
|
||||||
characteristics: ComputedCharacteristics,
|
characteristics: ComputedCharacteristics,
|
||||||
) {
|
) {
|
||||||
if (include === undefined) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (include.is_special) {
|
if (include.is_special) {
|
||||||
throw new Error("is_special Not implemented");
|
throw new Error("is_special Not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
include.nations.some((nation) => nation === tank.tank!.nation) ||
|
include.nations.some((nation) => nation === tank.tank!.nation) ||
|
||||||
include.tiers.some((tier) => tier === tank.tank!.tier) ||
|
// include.tiers.some((tier) => tier === tank.tank!.tier) ||
|
||||||
include.tier_catalog_ids.some(
|
include.tier_catalog_ids.some(
|
||||||
(tier) => tier === tank.tank!.tier_catalog_id,
|
(tier) => tier === tank.tank!.tier_catalog_id,
|
||||||
) ||
|
) ||
|
||||||
|
|||||||
Reference in new issue
Block a user