feat: auto-contribute from clan vault
All checks were successful
Build / build (20) (push) Successful in 42s
Build / build (18) (push) Successful in 1m17s
Build / build (22) (push) Successful in 1m23s
Build / build (18) (pull_request) Successful in 44s
Build / build (20) (pull_request) Successful in 1m15s
Build / build (22) (pull_request) Successful in 1m20s
All checks were successful
Build / build (20) (push) Successful in 42s
Build / build (18) (push) Successful in 1m17s
Build / build (22) (push) Successful in 1m23s
Build / build (18) (pull_request) Successful in 44s
Build / build (20) (pull_request) Successful in 1m15s
Build / build (22) (pull_request) Successful in 1m20s
The wiki says this is also supposed to do partial fills, but didn't see that in my testing on live.
This commit is contained in:
parent
74d9428a66
commit
dc68fafe2c
@ -1,4 +1,12 @@
|
|||||||
import { getDojoClient, getGuildForRequestEx, hasAccessToDojo, hasGuildPermission } from "@/src/services/guildService";
|
import {
|
||||||
|
getDojoClient,
|
||||||
|
getGuildForRequestEx,
|
||||||
|
getVaultMiscItemCount,
|
||||||
|
hasAccessToDojo,
|
||||||
|
hasGuildPermission,
|
||||||
|
processDojoBuildMaterialsGathered,
|
||||||
|
scaleRequiredCount
|
||||||
|
} from "@/src/services/guildService";
|
||||||
import { getInventory } from "@/src/services/inventoryService";
|
import { getInventory } from "@/src/services/inventoryService";
|
||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||||
import { GuildPermission } from "@/src/types/guildTypes";
|
import { GuildPermission } from "@/src/types/guildTypes";
|
||||||
@ -42,6 +50,36 @@ export const placeDecoInComponentController: RequestHandler = async (req, res) =
|
|||||||
}
|
}
|
||||||
if (meta.price == 0 && meta.ingredients.length == 0) {
|
if (meta.price == 0 && meta.ingredients.length == 0) {
|
||||||
deco.CompletionTime = new Date();
|
deco.CompletionTime = new Date();
|
||||||
|
} else if (guild.AutoContributeFromVault && guild.VaultRegularCredits && guild.VaultMiscItems) {
|
||||||
|
if (guild.VaultRegularCredits >= scaleRequiredCount(guild.Tier, meta.price)) {
|
||||||
|
let enoughMiscItems = true;
|
||||||
|
for (const ingredient of meta.ingredients) {
|
||||||
|
if (
|
||||||
|
getVaultMiscItemCount(guild, ingredient.ItemType) <
|
||||||
|
scaleRequiredCount(guild.Tier, ingredient.ItemCount)
|
||||||
|
) {
|
||||||
|
enoughMiscItems = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (enoughMiscItems) {
|
||||||
|
guild.VaultRegularCredits -= meta.price;
|
||||||
|
deco.RegularCredits = meta.price;
|
||||||
|
|
||||||
|
deco.MiscItems = [];
|
||||||
|
for (const ingredient of meta.ingredients) {
|
||||||
|
guild.VaultMiscItems.find(x => x.ItemType == ingredient.ItemType)!.ItemCount -=
|
||||||
|
scaleRequiredCount(guild.Tier, ingredient.ItemCount);
|
||||||
|
deco.MiscItems.push({
|
||||||
|
ItemType: ingredient.ItemType,
|
||||||
|
ItemCount: scaleRequiredCount(guild.Tier, ingredient.ItemCount)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
deco.CompletionTime = new Date(Date.now() + meta.time * 1000);
|
||||||
|
processDojoBuildMaterialsGathered(guild, meta);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
25
src/controllers/api/saveVaultAutoContributeController.ts
Normal file
25
src/controllers/api/saveVaultAutoContributeController.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
||||||
|
import { Guild } from "@/src/models/guildModel";
|
||||||
|
import { hasGuildPermission } from "@/src/services/guildService";
|
||||||
|
import { getInventory } from "@/src/services/inventoryService";
|
||||||
|
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||||
|
import { GuildPermission } from "@/src/types/guildTypes";
|
||||||
|
import { RequestHandler } from "express";
|
||||||
|
|
||||||
|
export const saveVaultAutoContributeController: RequestHandler = async (req, res) => {
|
||||||
|
const accountId = await getAccountIdForRequest(req);
|
||||||
|
const inventory = await getInventory(accountId, "GuildId");
|
||||||
|
const guild = (await Guild.findById(inventory.GuildId!, "Ranks AutoContributeFromVault"))!;
|
||||||
|
if (!(await hasGuildPermission(guild, accountId, GuildPermission.Treasurer))) {
|
||||||
|
res.status(400).send("Invalid permission").end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const data = getJSONfromString<ISetVaultAutoContributeRequest>(String(req.body));
|
||||||
|
guild.AutoContributeFromVault = data.autoContributeFromVault;
|
||||||
|
await guild.save();
|
||||||
|
res.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
interface ISetVaultAutoContributeRequest {
|
||||||
|
autoContributeFromVault: boolean;
|
||||||
|
}
|
@ -169,6 +169,7 @@ const guildSchema = new Schema<IGuildDatabase>(
|
|||||||
TradeTax: { type: Number, default: 0 },
|
TradeTax: { type: Number, default: 0 },
|
||||||
Tier: { type: Number, default: 1 },
|
Tier: { type: Number, default: 1 },
|
||||||
Emblem: { type: Boolean },
|
Emblem: { type: Boolean },
|
||||||
|
AutoContributeFromVault: { type: Boolean },
|
||||||
AllianceId: { type: Types.ObjectId },
|
AllianceId: { type: Types.ObjectId },
|
||||||
DojoComponents: { type: [dojoComponentSchema], default: [] },
|
DojoComponents: { type: [dojoComponentSchema], default: [] },
|
||||||
DojoCapacity: { type: Number, default: 100 },
|
DojoCapacity: { type: Number, default: 100 },
|
||||||
|
@ -94,6 +94,7 @@ import { retrievePetFromStasisController } from "@/src/controllers/api/retrieveP
|
|||||||
import { saveDialogueController } from "@/src/controllers/api/saveDialogueController";
|
import { saveDialogueController } from "@/src/controllers/api/saveDialogueController";
|
||||||
import { saveLoadoutController } from "@/src/controllers/api/saveLoadout";
|
import { saveLoadoutController } from "@/src/controllers/api/saveLoadout";
|
||||||
import { saveSettingsController } from "@/src/controllers/api/saveSettingsController";
|
import { saveSettingsController } from "@/src/controllers/api/saveSettingsController";
|
||||||
|
import { saveVaultAutoContributeController } from "@/src/controllers/api/saveVaultAutoContributeController";
|
||||||
import { sellController } from "@/src/controllers/api/sellController";
|
import { sellController } from "@/src/controllers/api/sellController";
|
||||||
import { setActiveQuestController } from "@/src/controllers/api/setActiveQuestController";
|
import { setActiveQuestController } from "@/src/controllers/api/setActiveQuestController";
|
||||||
import { setActiveShipController } from "@/src/controllers/api/setActiveShipController";
|
import { setActiveShipController } from "@/src/controllers/api/setActiveShipController";
|
||||||
@ -246,6 +247,7 @@ apiRouter.post("/retrievePetFromStasis.php", retrievePetFromStasisController);
|
|||||||
apiRouter.post("/saveDialogue.php", saveDialogueController);
|
apiRouter.post("/saveDialogue.php", saveDialogueController);
|
||||||
apiRouter.post("/saveLoadout.php", saveLoadoutController);
|
apiRouter.post("/saveLoadout.php", saveLoadoutController);
|
||||||
apiRouter.post("/saveSettings.php", saveSettingsController);
|
apiRouter.post("/saveSettings.php", saveSettingsController);
|
||||||
|
apiRouter.post("/saveVaultAutoContribute.php", saveVaultAutoContributeController);
|
||||||
apiRouter.post("/sell.php", sellController);
|
apiRouter.post("/sell.php", sellController);
|
||||||
apiRouter.post("/setDojoComponentMessage.php", setDojoComponentMessageController);
|
apiRouter.post("/setDojoComponentMessage.php", setDojoComponentMessageController);
|
||||||
apiRouter.post("/setEquippedInstrument.php", setEquippedInstrumentController);
|
apiRouter.post("/setEquippedInstrument.php", setEquippedInstrumentController);
|
||||||
|
@ -32,6 +32,7 @@ export interface IGuildDatabase {
|
|||||||
TradeTax: number;
|
TradeTax: number;
|
||||||
Tier: number;
|
Tier: number;
|
||||||
Emblem?: boolean;
|
Emblem?: boolean;
|
||||||
|
AutoContributeFromVault?: boolean;
|
||||||
AllianceId?: Types.ObjectId;
|
AllianceId?: Types.ObjectId;
|
||||||
|
|
||||||
DojoComponents: IDojoComponentDatabase[];
|
DojoComponents: IDojoComponentDatabase[];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user