返回提交历史
Modified
src/services/purchaseService.ts
+16
-16
XFEstudio/SpaceNinjaServer
fix: only roll unique rewards for peely pix booster packs (#1306)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1306
db8bff20
代码差异
1 个文件
+16
-16
@@ -415,24 +415,24 @@ const handleBoosterPackPurchase = async (
415
415
"attempt to roll over 100 booster packs in a single go. possible but unlikely to be desirable for the user or the server."
416
416
);
417
417
}
418
if (typeName == "/Lotus/Types/BoosterPacks/1999StickersPackEchoesArchimedeaFixed") {
419
for (const result of pack.components) {
420
purchaseResponse.BoosterPackItems += toStoreItem(result.Item) + ',{"lvl":0};';
421
combineInventoryChanges(purchaseResponse.InventoryChanges, await addItem(inventory, result.Item, 1));
422
}
423
} else {
424
for (let i = 0; i != quantity; ++i) {
425
for (const weights of pack.rarityWeightsPerRoll) {
426
const result = getRandomWeightedRewardUc(pack.components, weights);
427
if (result) {
428
logger.debug(`booster pack rolled`, result);
429
purchaseResponse.BoosterPackItems += toStoreItem(result.Item) + ',{"lvl":0};';
430
combineInventoryChanges(
431
purchaseResponse.InventoryChanges,
432
await addItem(inventory, result.Item, 1)
433
);
418
for (let i = 0; i != quantity; ++i) {
419
const disallowedItems = new Set();
420
for (let roll = 0; roll != pack.rarityWeightsPerRoll.length; ) {
421
const weights = pack.rarityWeightsPerRoll[roll];
422
const result = getRandomWeightedRewardUc(pack.components, weights);
423
if (result) {
424
logger.debug(`booster pack rolled`, result);
425
if (disallowedItems.has(result.Item)) {
426
logger.debug(`oops, can't use that one; trying again`);
427
continue;
428
}
429
if (!pack.canGiveDuplicates) {
430
disallowedItems.add(result.Item);
434
431
}
432
purchaseResponse.BoosterPackItems += toStoreItem(result.Item) + ',{"lvl":0};';
433
combineInventoryChanges(purchaseResponse.InventoryChanges, await addItem(inventory, result.Item, 1));
435
434
}
435
++roll;
436
436
}
437
437
}
438
438
return purchaseResponse;