feat: credit boosters (+ daily first win) #2324

Merged
Sainan merged 4 commits from daily-first-win into main 2025-06-27 08:20:37 -07:00
3 changed files with 17 additions and 4 deletions
Showing only changes of commit 0e9078320c - Show all commits

View File

@ -23,9 +23,9 @@ export const setBoosterController: RequestHandler = async (req, res) => {
res.status(400).send("Invalid ItemType provided."); res.status(400).send("Invalid ItemType provided.");
return; return;
} }
const now = Math.floor(Date.now() / 1000); const now = Math.trunc(Date.now() / 1000);
for (const { ItemType, ExpiryDate } of requests) { for (const { ItemType, ExpiryDate } of requests) {
if (ExpiryDate < now) { if (ExpiryDate <= now) {
// remove expired boosters // remove expired boosters
const index = boosters.findIndex(item => item.ItemType === ItemType); const index = boosters.findIndex(item => item.ItemType === ItemType);
if (index !== -1) { if (index !== -1) {

View File

@ -1426,6 +1426,20 @@ export const addCredits = async (
const totalCredits = finalCredits.MissionCredits[1] + finalCredits.CreditsBonus[1] + rngRewardCredits; const totalCredits = finalCredits.MissionCredits[1] + finalCredits.CreditsBonus[1] + rngRewardCredits;
finalCredits.TotalCredits = [totalCredits, totalCredits]; finalCredits.TotalCredits = [totalCredits, totalCredits];
if (config.worldState?.creditBoost) {
inventory.RegularCredits += finalCredits.TotalCredits[1];
finalCredits.TotalCredits[1] += finalCredits.TotalCredits[1];
}
const now = Math.trunc(Date.now() / 1000);
if ((inventory.Boosters.find(x => x.ItemType == "/Lotus/Types/Boosters/CreditBooster")?.ExpiryDate ?? 0) > now) {
inventory.RegularCredits += finalCredits.TotalCredits[1];
finalCredits.TotalCredits[1] += finalCredits.TotalCredits[1];
}
if ((inventory.Boosters.find(x => x.ItemType == "/Lotus/Types/Boosters/CreditBlessing")?.ExpiryDate ?? 0) > now) {
inventory.RegularCredits += finalCredits.TotalCredits[1];
finalCredits.TotalCredits[1] += finalCredits.TotalCredits[1];
}
return finalCredits; return finalCredits;
}; };

View File

@ -2275,14 +2275,13 @@ function doAcquireBoosters() {
const ExpiryDate = Date.now() / 1000 + 3 * 24 * 60 * 60; // default 3 days const ExpiryDate = Date.now() / 1000 + 3 * 24 * 60 * 60; // default 3 days
setBooster(uniqueName, ExpiryDate, () => { setBooster(uniqueName, ExpiryDate, () => {
$("#acquire-type-Boosters").val(""); $("#acquire-type-Boosters").val("");
updateInventory();
}); });
} }
function doChangeBoosterExpiry(ItemType, ExpiryDateInput) { function doChangeBoosterExpiry(ItemType, ExpiryDateInput) {
console.log("Changing booster expiry for", ItemType, "to", ExpiryDateInput.value); console.log("Changing booster expiry for", ItemType, "to", ExpiryDateInput.value);
// cast local datetime string to unix timestamp // cast local datetime string to unix timestamp
const ExpiryDate = new Date(ExpiryDateInput.value).getTime() / 1000; const ExpiryDate = Math.trunc(new Date(ExpiryDateInput.value).getTime() / 1000);
if (isNaN(ExpiryDate)) { if (isNaN(ExpiryDate)) {
ExpiryDateInput.addClass("is-invalid").focus(); ExpiryDateInput.addClass("is-invalid").focus();
return false; return false;