Tighten battle bond save validation
This commit is contained in:
@@ -162,6 +162,10 @@ function isNonNegativeFiniteNumber(value: unknown) {
|
||||
return typeof value === 'number' && Number.isFinite(value) && value >= 0;
|
||||
}
|
||||
|
||||
function isNonNegativeInteger(value: unknown) {
|
||||
return Number.isInteger(value) && Number(value) >= 0;
|
||||
}
|
||||
|
||||
function isFiniteNumber(value: unknown) {
|
||||
return typeof value === 'number' && Number.isFinite(value);
|
||||
}
|
||||
@@ -313,13 +317,22 @@ function isBondArray(value: unknown, options: BattleSaveValidationOptions) {
|
||||
Array.isArray(bond.unitIds) &&
|
||||
bond.unitIds.length === 2 &&
|
||||
bond.unitIds.every((unitId) => typeof unitId === 'string' && isKnownUnitId(unitId, options)) &&
|
||||
isPositiveInteger(bond.level) &&
|
||||
isNonNegativeFiniteNumber(bond.exp) &&
|
||||
isNonNegativeFiniteNumber(bond.battleExp)
|
||||
isValidBondProgress(bond.level, bond.exp) &&
|
||||
isNonNegativeInteger(bond.battleExp)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
function isValidBondProgress(level: unknown, exp: unknown) {
|
||||
return (
|
||||
isPositiveInteger(level) &&
|
||||
Number(level) <= 100 &&
|
||||
Number.isInteger(exp) &&
|
||||
Number(exp) >= 0 &&
|
||||
(Number(level) >= 100 ? Number(exp) <= 100 : Number(exp) < 100)
|
||||
);
|
||||
}
|
||||
|
||||
function isOptionalItemStockRecord(value: unknown, options: BattleSaveValidationOptions) {
|
||||
if (value === undefined) {
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user