From e0da37cec0bf5703b3e26975281581a93ef0e323 Mon Sep 17 00:00:00 2001 From: zhx Date: Tue, 26 May 2026 06:31:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=85=8D=E7=BD=AE=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/lucky-gift/configModel.js | 2 +- src/features/lucky-gift/configModel.test.js | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/features/lucky-gift/configModel.js b/src/features/lucky-gift/configModel.js index 86217ab..54f3a6f 100644 --- a/src/features/lucky-gift/configModel.js +++ b/src/features/lucky-gift/configModel.js @@ -162,7 +162,7 @@ export function parseMultiplierList(value) { .map((item) => Number(item.replace(/x$/i, ""))) .filter((item) => Number.isFinite(item) && item >= 0) .map((item) => Math.round(item * ppmScale)); - const unique = Array.from(new Set([0, ...numbers])).sort((a, b) => a - b); + const unique = Array.from(new Set(numbers)).sort((a, b) => a - b); return unique.length > 1 ? unique : [0, 1_000_000]; } diff --git a/src/features/lucky-gift/configModel.test.js b/src/features/lucky-gift/configModel.test.js index 8500a65..6e923a9 100644 --- a/src/features/lucky-gift/configModel.test.js +++ b/src/features/lucky-gift/configModel.test.js @@ -15,4 +15,14 @@ describe("lucky gift config payload", () => { test("parses custom multipliers without configured probabilities", () => { expect(parseMultiplierList("0, 0.5x, 1, 2")).toEqual([0, 500_000, 1_000_000, 2_000_000]); }); + + test("does not add a losing tier when tester only enters positive multipliers", () => { + const payload = payloadFromLuckyGiftForm( + { ...emptyLuckyGiftForm(), multiplierValues: ["1", "2"] }, + null, + ); + + expect(payload.multiplier_ppms).toEqual([1_000_000, 2_000_000]); + expect(payload.tiers.some((tier) => tier.multiplier_ppm === 0 || tier.reward_coins === 0)).toBe(false); + }); });